绝对不知道C#中的编码,我希望在我的python代码中调用一个C#函数。我知道有相当多的Q& As围绕同样的问题,但由于一些奇怪的原因,我无法从示例python模块导入一个简单的c#类库。
以下是我做过的事情 -
C#类库设置
我正在使用VS 2017 CE。
我在TestClassLibrary
ClassLibrary(.NET Standard)
项目内的课程如下 -
MyClass.cs
using System;
namespace TestClassLibrary
{
public class MyClass
{
public string function()
{
return "Hello World!";
}
}
}
这已成功构建,在.dll
目录下生成\bin\Debug\netstandard2.0
文件TestClassLibrary.dll
现在,我切换到python3.6(运行在virtualenv上,支持pythonnet 2.3.0)
main.py
import sys
sys.path.append(r"<Ablsloute Path to \bin>\Debug\netstandard2.0")
import clr
clr.AddReference(r"TestClassLibrary")
from TestClassLibrary import MyClass
当我运行python main.py
时,代码失败并显示错误 -
Traceback (most recent call last):
File "main.py", line 6, in <module>
from TestClassLibrary import MyClass
ModuleNotFoundError: No module named 'TestClassLibrary'
代码应该是 -
import sys
sys.path.append(r"C:\Users\DELL\source\repos\TestClassLibrary\TestClassLibrary\bin\Debug\netstandard2.0")
import clr
clr.AddReference("TestClassLibrary.dll")
from TestClassLibrary import MyClass
我明白了 -
clr.AddReference("TestClassLibrary.dll")
System.IO.FileNotFoundException: Unable to find assembly 'TestClassLibrary.dll'.
at Python.Runtime.CLRModule.AddReference(String name)
但是当我运行下面的代码时,代码按预期运行 -
import clr
clr.AddReference(r"System.Windows.Forms")
from System.Windows.Forms import MessageBox
MessageBox.Show("Hello World!")
我不知道自己可能缺少什么:(
答案 0 :(得分:0)
这真的很糟糕,但我喜欢做个人项目的事情。 Python 可以让您非常轻松地将内容发送到命令行。 C# 可以从命令行运行。你可能知道我要做什么了。
尝试将 C 尖角添加到 PATH。将操作系统导入python。然后当你想运行 C# 脚本时使用这行代码:
os.system("csc nameofscript.cs")
也许我误解了,但这就是我让它在我的机器上工作的方式