如何在IronPython中使用C#dll

时间:2009-07-29 13:16:50

标签: ironpython

我使用C#创建了一个dll。如何在IronPython中使用dll。我尝试使用clr.AddReference("yxz.dll")添加dll。但它失败了。我已经尝试将dll放在IronPython脚本的执行目录中。在尝试引用dll时,仍然无法说明“找不到名称xyz”。

6 个答案:

答案 0 :(得分:11)

import clr    
clr.AddReferenceToFileAndPath(r"C:\Folder\Subfolder\file.dll")

是Jeff在评论中提出的最简单的方法。这也有效:

import clr
import sys

sys.path.append(r"C:\Folder\Subfolder")  # path of dll
clr.AddReference ("Ipytest.dll") # the dll
import TestNamspace  # import namespace from Ipytest.dll

答案 1 :(得分:8)

我认为它找不到该文件是因为它不知道在哪里查找它,请参阅here以获取有关clr.AddReference ...()函数如何工作的详细说明。

答案 2 :(得分:3)

Creating .NET Classes Dynamically from IronPython示例创建一个程序集(稍后将其另存为“DynamicAsm.dll”)。它包含一个名为“DynamicType”的类,其中包含一个名为“test”的静态方法。这个方法需要四个整数并将它们加在一起。

  

好处是这会将“DynamicAsm.dll”保存到磁盘。然后,您可以启动IronPython交互式解释器会话并执行以下操作:

>>> import clr
>>> clr.AddReference('DynamicAsm.dll')
>>> import DynamicType
>>> DynamicType.test(2, 3, 4, 5)
14

请注意,该示例使用import语句中的类名

答案 3 :(得分:0)

您可以使用:

import clr 
clr.AddReferenceToFile("yxz.dll")

答案 4 :(得分:0)

使用clr.AddReferenceToFile(filename)会更好,因为它需要相对路径。

import clr 
clr.AddReferenceToFile("xxx.dll")

然后您可以照常导入导入类:

import xxx

from xxx import *

我建议你查看这本书,它非常有帮助。 https://play.google.com/store/apps/details?id=com.gavin.gbook

答案 5 :(得分:0)

我仅从IronPython控制台获得此行为。当我运行脚本时,它很好。当我运行IronPython脚本时,sys.path包含我当前工作目录的绝对路径,因此它可以工作。当我输入控制台时,sys.path只包含一个'。'对于当前的工作目录。这可以解释行为上的差异。

作为一个hacky解决方案,我创建了一个文件fixpath.py

"""This hacky script fixes the sys.path when I run the ipy console."""

import sys
import os

sys.path.insert(0, os.getcwd())

del sys
del os

然后我设置了一个环境变量IRONPYTHONSTARTUP,其中包含该文件的绝对路径。然后每当我启动IronPython控制台时,都会运行此脚本,我的sys.path包含对当前工作目录的绝对引用,以及随后对clr.AddReference的调用正常工作。