Создание оболочки для библиотеки C# в Python

Основная цель: создать оболочку для библиотеки C#, которую можно использовать в Python (2.6).

ОБНОВЛЕНИЕ: Теперь у меня есть обновления для метода, который я использую, который, однако, не работает хорошо.

Код для простой библиотеки классов C#:

using System;
using System.Text;
using System.Runtime.InteropServices;

namespace Test
{
    [Guid("8F38030D-52FA-4816-B587-A925FDD33302")]
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface _TestClass
    {
        [DispId(1)]
        string Eureka();
    }

    [Guid("BC3F6BB3-42C4-4F30-869A-92EA45BF68D2")]
    [ClassInterface(ClassInterfaceType.None)]
    [ProgId("Test.TestClass")]
    public class TestClass : _TestClass
    {
        public TestClass()
        {
        }

        public string Eureka()
        {
            return "Hudson, we no longer have a problem!";
        }
    }
}

enter code here

В дополнение к этому я вошел в Свойства проекта и включил параметр: Зарегистрироваться для взаимодействия COM.

Кроме того, чтобы сделать библиотеку классов доступной для COM, я поставил галочку "Подписать -> Подписать сборку" и дал ей сильный ключ.

Кроме того, всякий раз, когда я компилирую, я отменяю регистрацию старой версии с помощью:

regasm -u Test /tlb:Test

И я регистрирую это с:

regasm Test.dll / tlb: тест

Моя проблема заключается в том, что в среде Python у меня есть следующий main.py, который не работает:

import win32com.client

o = win32com.client.Dispatch("Test.TestClass")

Ошибка не прощена.

заранее спасибо!

1 ответ

Альтернативой может быть, если вы используете Python для.NET. Похоже, есть альфа-версии для Windows CPython 2.6 и 2.7. Вы могли бы просто запустить:

import clr
clr.AddReference("Your.Assembly.Name")
import Test
test = Test.TestClass()
print test.Eureka()
Другие вопросы по тегам