Pythonnet 支持 .NET Core 或 .NET 5.0

2023-12-21

我使用 Pythonnet 已经有一段时间了,但始终反对 .NET Framework 4。* 随着最近发布的 .NET 5.0,我想迁移我的项目,但无法使其适用于非框架版本(例如 .NET Core 2.0、.NET Core 3.0、.NET 5.0)

这是我使用 .NET Framework 4.5 运行的一个非常简单的测试:

namespace TestNet
{
    public class Dummy
    {
        private string _name;

        public Dummy(string name)
        {
            _name = name;
        }

        public string Hello(string name)
        {
            return $"Hello {name}, my name is {_name}";
        }
    }
}

这会生成 TestNet.dll,然后运行以下 Python 代码:

>>> import clr
>>> clr.AddReference("TestNet")
<System.Reflection.RuntimeAssembly object at 0x000001899ACFABB0>
>>> from TestNet import Dummy
>>> d = Dummy("Bob")
>>> d.Hello("John")
'Hello John, my name is Bob'

所以一切都很好。

现在,完全相同的 C# 代码但针对 .NET Core 或 .NET 5.0 将给出:

>>> import clr
>>> clr.AddReference("TestNet")
<System.Reflection.RuntimeAssembly object at 0x00000122AF0DABB0>
>>> from TestNet import Dummy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'TestNet'

我的理解是他们使用的是 CoreClr 而不是 CLR 并且来自 Pythonnet 网站(https://pythonnet.github.io/ https://pythonnet.github.io/):

Python.NET (pythonnet) 是一个包,使 Python 程序员能够与 .NET 4.0+ 公共语言运行时 (CLR) 几乎无缝集成

有谁知道CoreClr是否支持?

Thanks!

环境:Python 3.8/Windows 10


Python.NET 中已添加对 .NET 5 的支持,但尚未发布。

请参阅此处的示例

Pythonnet dotnet core“没有命名模块” https://stackoverflow.com/questions/67970591/pythonnet-dotnet-core-no-module-named

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pythonnet 支持 .NET Core 或 .NET 5.0 的相关文章

随机推荐