This page谈论能够“需要”一些众所周知的程序集,例如System.Windows.Forms,而不需要动摇整个'啊 - 来吧 - gimme-a-break-here-you-you-you-serious-serious '强大的集会名称。
在文档中它说:
>>> 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目录”。文档错了吗?
感谢。
答案 0 :(得分:7)
这种方式的工作方式是因为IronRuby的人写了一堆包装脚本。
查看<your ironruby install path>\lib\ironruby
,您会看到System.Windows.Forms.rb
,System.Drawing.rb
等。
执行require 'System.Windows.Forms'
时会发生什么事情是IronRuby找到rb文件并运行它。该文件中的代码只为您执行完整的强名称需求。
如果你想加载他们没有写过包装的其他dll,你有3个选择:
需要dll的完整路径(例如c:\program files\whatever\whatever\blah.dll
)
需要强名称(只有在GAC或其他地方IronRuby可以找到dll的情况下才有效)
使用load_assembly
- 这是最方便的,但是IIRC会将dll加载到LoadFrom
上下文,而不是Load
上下文。
如果你不明白这意味着什么,那么基本上它在测试中很好,但是不要在生产中这样做: - )
答案 1 :(得分:2)
嗯, 是一个设置问题 - IronRuby下载中有两个ir.exe副本,而我使用的是错误的。