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, который всегда будет чреват проблемами.
У меня есть такой код (я устанавливаю 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)