调用自制C# DLL时出现System.Runtime程序集找不到异常,求解决方案
解决System.IO.FileNotFoundException: 未能加载System.Runtime 6.0.0.0的问题
核心原因
这个错误本质是DLL项目与调用项目的.NET运行时版本不兼容,或是依赖项未正确复制到调用项目的输出目录。
具体解决步骤
对齐.NET框架版本
- 右键
Draf_Lib项目 → 属性 → 应用程序,查看其目标框架版本(比如.NET 6) - 右键调用项目
Draft1→ 属性 → 应用程序,将目标框架修改为与Draf_Lib完全一致的版本 - 注意:.NET Core/.NET 5+ 与 .NET Framework是两套不兼容的框架,不能跨版本混用
- 右键
使用项目引用而非手动复制DLL
不要直接复制DLL文件到调用项目目录添加引用,而是:- 右键
Draft1项目 → 添加 → 项目引用 - 在弹出窗口中勾选
Draf_Lib并确定
这种方式会让Visual Studio自动处理依赖项的复制与版本匹配
- 右键
清理重建解决方案
- 点击Visual Studio菜单栏「生成」→「清理解决方案」
- 依次重新生成
Draf_Lib和Draft1项目 - 检查
Draft1的输出目录(bin/Debug或bin/Release),确认Draf_Lib.dll及相关依赖(如System.Runtime.dll)都存在
检查NuGet依赖(若有)
如果Draf_Lib使用了NuGet包,确保Draft1也安装了相同版本的对应包:- 打开NuGet包管理器,搜索
System.Runtime - 保证两个项目的
System.Runtime包版本完全一致
- 打开NuGet包管理器,搜索
补充:代码说明
你的DLL代码和调用代码本身无语法问题,仅运行环境配置存在问题:
DLL代码:
using System; namespace Draf_Lib { public class Class1 { public static int add(int x, int y) { return x + y; } } }
调用代码(可移除多余的实例化代码):
using System; using Draf_Lib; namespace Draft1 { internal class Program { static void Main(string[] args) { System.Console.WriteLine("Hello"); int b = Class1.add(9, 8); Console.WriteLine(b); } } }
内容的提问来源于stack exchange,提问作者TomC
相关产品推荐
相关产品推荐

