使用Python.Net导入具有依赖项的.NET Standard 2.0类库

时间:2018-07-31 09:14:02

标签: python .net dll nuget python.net

我有一个要从Python使用的.NET Standard 2.0类库。 该库依赖于某些私有和公共的NuGet软件包。

我设法从artifact on appveyor安装了pythonnet的最新开发版本,并且可以运行以下导入代码:

import clr
import sys
sys.path.append(r'C:\....\My.Library\bin\Debug\netstandard2.0')
ref = clr.AddReference("My.Library")

上面的代码运行良好,但是当我尝试从模块名称空间导入...

from My.Library import MyClass
# >>> ModuleNotFoundError: No module named 'My'

当我尝试做ref.get_ExportedTypes()时,我得到了:

System.IO.FileNotFoundException:
 Die Datei oder Assembly "Google.Protobuf, Version=3.6.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604"
 oder eine Abhängigkeit davon wurde nicht gefunden.
 Das System kann die angegebene Datei nicht finden.
 bei System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly assembly, ObjectHandleOnStack retTypes)
 bei System.Reflection.RuntimeAssembly.GetExportedTypes()

基本上,这是关于NuGet依赖项的FileNotFoundException。 构造我的DLL文件/使用NuGet依赖项导入它的正确方法是什么?

谢谢

1 个答案:

答案 0 :(得分:1)

通过将所有依赖项放在一个目录中,导入可以工作。 How to get .NET Core projects to copy NuGet references to build output?

中提供了几种实现此目的的选项,例如dotnet publish