嵌入IronPython - 无法添加对System的引用

3
我正在将IronPython嵌入到我的C#应用程序中。 由于某些原因,我在加载程序集时遇到了麻烦。具体来说,我想要System.dll,这样我就可以访问.NET类,如DateTime。如果我尝试以下行:
_runtime.LoadAssembly(_runtime.Host.PlatformAdaptationLayer.LoadAssembly("System"));

我得到:

could not load file or assembly 'System'

如果我明确地键入路径C:/WINDOWS/Microsoft.NET/.../System.dll,我会得到以下结果:
The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)

那么我尝试在Python脚本中使用clr进行导入:
import clr
clr.AddReference('System')
from System import DateTime

现在我得到:

Cannot import name DateTime

我哪里出错了?为什么 DateTime 不在 System 中,LoadAssembly 找不到 System.dll?我需要明确设置 IronPython 的一些搜索路径吗?它是否找到了无效的“System”?
当我在 IronPython 解释器中测试时,这一切都可以正常工作。
1个回答

5
我使用 engine.Runtime.LoadAssembly(typeof(string).Assembly); 加载系统程序集;我认为这也是 IronPython 控制台的做法。
附:不要忘记 IronPython 的源代码 可以获取,里面有许多关于此类问题的宝贵信息。

谢谢,我应该真正深入其中并看看我还能找到什么。 - cgyDeveloper
我需要导入哪个模块才能调用engine.Runtime.LoadAssembly()函数? - Tim Lovell-Smith
它应该在Microsoft.Scripting.dll的ScriptRuntime类中。据我所知,它不是扩展方法。这是至少针对IronPython 2.6的。 - Jeff Hardy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接