使用python访问.net核心dll

时间:2019-03-15 16:20:29

标签: c# .net python-2.7 .net-core windows-7

我需要访问在.net核心(.NETCore版本= v1.1)中内置的C#dll。我以下面的方式尝试过,但是出现导入错误。

import clr

clr.AddReference("dllname") - No error

from dllname import *

Got Import Error异常,提示没有名为 dllname 的模块。

注意:我尝试使用Iron python和python都给了我相同的异常。

2 个答案:

答案 0 :(得分:1)

我正在尝试使用Mono 5.18,python3.7和netcore 3.0.100-preview-009812的Fedora 29, 如果使用绝对路径来解析netcore dll,似乎可以正常工作

import clr
import os

clr.AddReference(os.path.abspath('./bin/Debug/netstandard2.0/sample.dll'))
import sample
p = sample.Person(name='Peter')

netcore项目就是这样生成的

dotnet new classlib -o sample

人员班

using System;

namespace sample
{
    public class Person
    {
            public string Name { get; set; }
    }
}

更新

基于@SMHP提供的数据,似乎在主要.NET Framework / mono(pythonnet运行时)与面向.netcoreapp 2.0的库之间不兼容。

enter image description here

enter image description here

答案 1 :(得分:0)

您收到导入错误,因为您在导入语句中使用了 dllname。而不是使用 dllname 使用 dll 的命名空间。 P.S:不要对dll和命名空间使用相同的名称,它会在python中导入时抛出错误

import clr

clr.AddReference("dllname") - No error

from namespace import *