2010-02-03 60 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

相关问题