2010-02-03 57 views
5

This page在IronRuby幫助網站上談到能夠'需要'一些衆所周知的程序集,如System.Windows.Forms,而不需要開始整個'啊 - 來這裏gimme-a-break-here - 你不可能是認真的'大會的強名稱。IronRuby - 如何要求沒有強名稱的.NET程序集?

在文檔就這樣說:

>>> require "System.Windows.Forms" 
=> true 

但是當我嘗試相同的「需要」,我得到這個:

>>> require "System.Windows.Forms" 
IronRuby.Libraries:0:in 'require': no such file to load -- System.Windows.Forms (LoadError) 
     from :0:in 'Initialize##1' 

什麼可能我是做錯了什麼?這可能是一個設置問題?我看不到在文檔中提到的「加載路徑上的libs目錄」。文檔是否錯誤?

謝謝。

回答

2

嗯,它一個安裝問題 - 在IronRuby下載中有兩個ir.exe副本,我用的是錯誤的。

7

這樣做的方式是因爲IronRuby人寫了一堆包裝腳本。

查找範圍<your ironruby install path>\lib\ironruby,你會看到System.Windows.Forms.rbSystem.Drawing.rb

當你做require 'System.Windows.Forms'是IronRuby的認定,RB文件並運行它會發生什麼。該文件中的代碼僅爲您提供完整的強名稱需求。

如果要加載其他DLL的,他們沒有書面的包裝,你有3種選擇:

  1. 需要的完整路徑的dll(如c:\program files\whatever\whatever\blah.dll

  2. 要求強大的名字(這隻適用於如果它在GAC或其他地方IronRuby可以找到DLL的)

  3. 使用load_assembly - 這是最方便的,但它將dll加載到LoadFrom上下文,而不是Load上下文。
    如果你不明白這意味着什麼的話,基本上是在測試很好,但不這樣做在生產:-)

+1

感謝 - 這是有趣的,看看IronRuby的民間如何實現這一點。 – mackenir 2010-03-02 09:20:04

+0

我有一個不同的問題,並使用'load_assembly'修復它。我在哪裏可以找到'require'和'load_assembly'之間差異的更多細節? – 2015-02-23 03:02:08

相關問題