.net 在Python中调用C# DLL TypeLoadException错误

hi3rlvi2  于 2023-08-08  发布在  .NET
关注(0)|答案(1)|浏览(137)

你能帮我看看是什么问题吗?
下面是C#代码:

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Net.Http.Headers;

namespace PostMessage
{
    public class Message
    {
        public async Task<string> SendMessage()
        {    
            .... code here to create the message body
            HttpResponseMessage response = await client.PostAsync(url, request);
            string responseXml = await response.Content.ReadAsStringAsync();
            return responseXml;
        }

        public string RunSync()
        {
            var task = Task.Run(async () => await SendMessage());
            return task.Result;
        }

    }
}

字符串
我创建了一个.DLL文件并从Python调用。

import clr
clr.AddReference("/PostMessage.dll")
from PostMessage import Message


当我运行代码时,我得到了以下错误:

TypeLoadException:未能从程序集“System.Runtime,Version=4.0.0.0,Culture=neutral,PublicKeyToken= b03f5f7f11d50a3a”加载类型“System.Diagnostics.DebuggerStepThroughAttribute”。

在C#中,我使用.NET 5。在Python中我使用了pythonnet 3.0.1

8yparm6h

8yparm6h1#

你的C#代码依赖于框架的其他部分。现在你只加载dll本身,而不考虑其他的依赖项:

from pythonnet import load
load("coreclr")

import clr
clr.AddReference("/PostMessage.dll")
from PostMessage import Message

字符串
如果您有多个核心运行时,并且您不希望它自动解析,您可以遵循此here

from pythonnet import load

load("coreclr", runtime_config="/path/to/runtimeconfig.json")


您还必须确保您确实已将适当版本的.net核心安装到默认位置。

相关问题