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

在PyCharm中用Pythonnet调用C# DLL时遇System.IO.FileNotFoundException

解决Pythonnet调用C# DLL时找不到Microsoft.Extensions.Configuration的问题

问题重现

调用代码

from pythonnet import load
load("coreclr")

import platform
print(platform.architecture())
import clr
from System import *
from Microsoft import *

clr.AddReference("dll/dllname2")
from dllname import classname

var1 = String("test")
var2 = String("test")


obj: object = Class()
msg =(obj.MethodName(String(""),String("")))

抛出异常

System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Extensions.Configuration, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
File name: 'Microsoft.Extensions.Configuration, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'

解决方案

  • 确保依赖DLL存在并可访问
    目标C# DLL依赖Microsoft.Extensions.Configuration 7.0.0.0,需将该DLL及同版本的相关依赖(如Microsoft.Extensions.Configuration.Abstractions)放置到Python脚本可读取的路径:

    • 可放在Python脚本同级目录,或你添加引用的dll文件夹下;
    • 从NuGet下载对应版本的包,解压后提取lib/net7.0目录下的相关DLL。
  • 匹配.NET Runtime版本
    你使用load("coreclr")加载.NET Core运行时,需确保其版本与C# DLL编译时依赖的.NET版本一致(此处为.NET 7):

    • 通过设置环境变量DOTNET_ROOT指定.NET 7 runtime的安装路径;
    • 在PyCharm的运行配置中添加该环境变量。
  • 显式添加依赖引用
    在代码中除了引用目标DLL,还要显式添加缺失的依赖项引用:

    # 替换为实际的DLL路径
    clr.AddReference("path/to/Microsoft.Extensions.Configuration")
    
  • 版本绑定重定向(可选)
    若无法找到精确的7.0.0.0版本,可在Python脚本同级目录创建runtimeconfig.json文件,指定版本绑定规则:

    {
      "runtimeOptions": {
        "assemblyBinding": {
          "dependencies": [
            {
              "name": "Microsoft.Extensions.Configuration",
              "publicKeyToken": "adb9793829ddae60",
              "version": "7.0.0.0",
              "culture": "neutral"
            }
          ]
        }
      }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 12:35:26