例有下一个用 C#写的 test.dll 里面有 test 的 NameSpace, Class1 的类,一个 returnstr 的方法
我的方法是:
import clr
test = clr.AddReference("test")
print test.returstr
这样的结果返回说
AttributeError: 'RuntimeAssembly' object has no attribute 'returstr'
问题 1:
网上也找了一些资料,看了 Python.Net 的资料好像也是这么写的,方法名应该也没错,比较奇怪,求解
问题 2: 有没有什么工具可以看到 dll 里面的方法名称?
附件 test.dll 地址: https://pan.baidu.com/s/1dvge54
1
lynnX 2018-01-20 10:30:10 +08:00 1
问题一 不知道 问题二 .Net Reflector 或者 ILSpy
|
3
Athrob 2018-01-20 11:46:32 +08:00
Class1 呢?
|
4
ge2009 OP @Athrob 他们 Python.net 的文档里面好像是直接调就可以了,试过先 import Class1 好像也还是一样报错
|
5
iilxy 2018-01-20 13:13:20 +08:00 via iPhone 1
.net 的要用 ironpy 来调用吧
|
6
asuraa 2018-01-20 14:31:06 +08:00 via iPhone 1
楼上正解 使用 ironpython 遗憾的是只支持 py2
|
7
haddy 2018-01-20 14:34:54 +08:00
试试
`import clr clr.AddReference("test") import test print test.returstr ` ? |
8
haddy 2018-01-20 14:39:37 +08:00
呃,不好意思,我弄错了。不要在意我刚才的回复。
|
9
haddy 2018-01-20 14:44:15 +08:00
用 clr.System.Reflection.Assembly.LoadFile
|
10
haddy 2018-01-20 14:52:19 +08:00
|
11
haddy 2018-01-20 15:18:39 +08:00 1
囧,不好意思。就我现在搜集到的信息,DLL 的目标版本需为 .NET 4.0+,不然要设置某个环境变量。这个原因也有可能。然后除了上面的方法,似乎还可以 clr.AddReferenceToFileAndPath,这样相比 AddReference 就不用手动将路径添加到 sys.path 里。但具体是否可行我也说不清楚……
|