Python for.NET ошибка "не удается найти сборку"

Я использую CPython, и у меня есть c# dll. Я пытаюсь использовать Python для .NET, чтобы заставить их говорить. Я не могу использовать IronPython, потому что мне нужно интегрировать это в существующую систему CPython.

Я совершенно новичок в Python для .NET, и у меня на самом деле очень мало опыта работы с Python и нет опыта работы с C#. Поэтому, пожалуйста, простите меня, если мой вопрос кажется очень простым.

Я использую Python 2.7.3, и я загрузил pythonnet-2.0-alpha2-clr2.0_131_py27_UCS2 и распаковал его в папку с именем pyfornet_test, которая также содержит dll, которую я пытаюсь использовать (называется DotNet4Class.dll файлы)

затем я запускаю этот:

import sys

import os

import clr

sys.path.append(r"C:pyfornet_test")

clr.AddReference("DotNet4Class.dll")

что дает мне эту ошибку:

System.IO.FileNotFoundException: Unable to find assembly 'DotNet4Class.dll'.
   at Python.Runtime.CLRModule.AddReference(String name) in C:UsersBartonDocumentsVisual Studio 2008ProjectsPyShar
ptrunkpythonnetsrcruntimemoduleobject.cs:line 375

любой совет был бы очень признателен. Спасибо!

4 ответов


Is DotNet4Class.dll построены .Сеть 4? Я предполагаю, что это основано на именовании dll.

Примечание здесь вопрос: http://sourceforge.net/tracker/?func=detail&aid=3293169&group_id=162464&atid=823891

clr.Ошибка AddReference при сборке с .NET 4.0-ID: 3293169

Я бы прочитал решение, но, по сути, вам нужно перестроить и перекомпилировать проект python для .NET под .NET 4.

Я также упомяните, что подобные проекты, которые активно не разрабатываются и не используются многими людьми, обычно имеют тонкие особенности это делает знание платформы необходимым для работы вокруг таких проблем, как это. Похоже, вы пытаетесь взломать это решение, не понимая многого о python или .NET, который всегда будет чреват проблемами.


попробуйте это (без расширения .dll):

clr.AddReference(r"C:\pyfornet_test\DotNet4Class")

У меня есть такой код (я устанавливаю MyRightClickMenuService.dll в том же каталоге, что и мое основное приложение). Он построен против .Net 4.0.

import clr
import os
import sys
sys.path.append(os.path.dirname(__file__))

clr.AddReference('MyRightClickMenuService')
clr.AddReference('System')
clr.AddReference('System.Security')

from MyRightClickMenuService import (
    AclSecuredNamedPipeBinding,
    MyMenuItem,
    MyContextMenuService,
    etc
)

вы пробовали clr.FindAssembly?

import clr
import sys
assemblydir = r"C:\pyfornet_test"
assemblypath = r"C:\pyfornet_test\DotNet4Class.dll"
sys.path.append(assemblydir)
clr.FindAssembly(assemblypath)

Я не знаю, почему он работает, но этот код работает на моем компьютере (Python 2.7,.NET4)