以下是与开发环境相关的信息:
我有一个控制台项目,使用以下方法创建:
• Microsoft Visual Studio 2019 企业版
• .NET Framework 4.5.2
• C# 5.0
我有一个类库项目,使用以下方法创建:
• Microsoft Visual Studio 2022 企业版
• .NET 6.0
• C# 10
在 Visual Studio 2019 中,我尝试在控制台项目中引用类库 DLL,幸运的是,它没有抛出任何错误。它构建正确,并且没有错误。
但是,当我作为独立运行基于 .NET Framework 4.5.2 的控制台应用程序时,它会引发以下错误:
System.IO.FileNotFoundException
HResult=0x80070002
Message=Could not load file or assembly 'System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
Source=<Cannot evaluate the exception source>
StackTrace:
<Cannot evaluate the exception stack trace>
我检查了Nuget Package Manager,只找到了以下最新版本
System.Runtime版本4.3.1(最新版本)
奇怪的是,异常抱怨 System.Runtime,Version=6.0.0.0
但是,Nuget 包管理器指出最新的 System.Runtime 版本是 4.3.1
无论如何,我确实成功地将最新的 System.Runtime 版本 4.3.1 安装到我基于 .NET Framework 4.5.2 的控制台项目中。此外,它构建正确,并且没有错误。
但是,当我作为独立运行基于 .NET Framework 4.5.2 的控制台应用程序时,它会抛出以下错误:
System.IO.FileNotFoundException
HResult=0x80070002
Message=Could not load file or assembly 'System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
Source=<Cannot evaluate the exception source>
StackTrace:
<Cannot evaluate the exception stack trace>
有人可以告诉我如何解决上述兼容性问题吗?
@hans-passant 感谢您的评论。
顺便说一句,我只是想提一下以下几点。
将基于 .NET6 的类库与基于 .NET Framework 4.5.2 的解决方案一起使用会导致兼容性问题。
在做了一些调查和研究之后,我们可以考虑重构所述类库的选项,以便它可以容纳具有不同.NET框架的多个客户端项目。以下是一些相关技术指南: