You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用.NET 5编写的C# DLL时遇TypeLoadException问题求助

问题排查与解决方案

问题根源

这个错误是因为pythonnet 3.0.1对.NET 5的兼容性不足,加上.NET 5中System.Diagnostics.DebuggerStepThroughAttribute的程序集归属与.NET Framework存在差异,导致加载时出现类型找不到的问题。

具体解决方法

1. 升级pythonnet到最新稳定版

pythonnet 3.0.1属于较旧版本,对.NET 5+的支持不完善,直接升级到最新稳定版(如3.1.0及以上)可解决大部分兼容性问题:

pip install --upgrade pythonnet

2. 切换C#项目的目标框架为.NET Framework

如果暂时无法升级pythonnet,可将C#项目的目标框架改为.NET Framework 4.7.2或更高版本:

  • 右键C#项目 → 属性 → 应用 → 目标框架,选择对应.NET Framework版本
  • 重新编译生成DLL后再用Python调用

3. 添加.NET绑定重定向配置(针对坚持用.NET5的场景)

在Python脚本的运行目录下创建python.runtime.config文件,内容如下,强制将旧版本的System.Runtime绑定到.NET5的版本:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

4. 检查C#代码的引用(可选)

如果你的C#代码中显式使用了DebuggerStepThroughAttribute,确保引用正确的命名空间:

using System.Diagnostics; // 此命名空间是DebuggerStepThroughAttribute的正确归属

额外提示

你的C#代码中SendMessage方法里的client、url、request变量未定义,后续运行时需要补全这些变量的初始化代码,否则会出现新的错误。

内容的提问来源于stack exchange,提问作者Erika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 13:45:19