Вызов C# кода в Python3.6
Абсолютно не зная о кодировании в C#, я хочу вызвать функцию C# в моем коде на python. Я знаю, что довольно много вопросов и ответов связано с той же проблемой, но по какой-то странной причине я не могу импортировать простую библиотеку классов C# из примера модуля python.
Вот ниже о том, что я сделал -
Настройка библиотеки классов 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!")
Я понятия не имею, чего мне не хватает:(
1 ответ
Это действительно дерьмо, но как я люблю делать вещи, которые являются личными проектами.Python позволяет вам очень легко отправлять данные в командную строку. C# можно запустить из командной строки. Вы, наверное, видите, к чему я клоню.
Попробуйте добавить до-диез в PATH. импортировать os в python. затем используйте эту строку кода, когда вы хотите запустить скрипт C#:
os.system("csc nameofscript.cs")
возможно, я неправильно понял, но я бы сделал так, чтобы это работало на моей машине