-->

的Python .NET“无法找到程序集”错误(Python for .NET “unable to

2019-07-03 15:22发布

我使用CPython的,我有一个C#DLL。 我试图使用Python为.NET,使他们交谈。 因为我需要这个集成到现有的CPython的系统无法使用IronPython的。

我完全新的Python .NET,我确实有使用Python的经验非常少,用C#没有经验。 所以,请,如果我的问题似乎很基本的原谅。

我使用Python 2.7.3,和我下载pythonnet-2.0-α-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:\Users\Barton\Documents\Visual Studio 2008\Projects\PyShar
p\trunk\pythonnet\src\runtime\moduleobject.cs:line 375

任何意见,将不胜感激。 谢谢!

Answer 1:

DotNet4Class.dll建立针对.NET 4? 我认为这样基于DLL的命名。

请注意这里的问题: http://sourceforge.net/tracker/?func=detail&aid=3293169&group_id=162464&atid=823891

当组件与.NET 4.0内置clr.AddReference失败 - ID:3293169

我读到的解决方案,但本质上,你需要重建和.NET下4重新编译.NET项目蟒蛇。

我还要提到的项目就是这样,没有被积极开发和很多人使用,一般有细微的特质 ,使该平台必须解决问题的知识,如此。 这听起来像你想在破解这一解决方案,无需了解太多关于Python或.NET它始终将是充满了问题。



Answer 2:

试试这个(没有扩展.dll ):

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


Answer 3:

我有这样的代码(我在同一目录下安装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
)


Answer 4:

你有没有尝试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)



文章来源: Python for .NET “unable to find assembly” error