Вызов 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")

возможно, я неправильно понял, но я бы сделал так, чтобы это работало на моей машине

Другие вопросы по тегам