在4.0项目中引用.net框架4.5.1程序集

Dev*_*ion 16 .net c#

我如何使4.0项目具有4.5参考.在单元测试中,我无法构建解决方案,它给了我这个警告.

警告2无法解析主要参考"PR.Wallet",因为它是针对".NETFramework,Version = v4.5.1"框架构建的.这是比当前目标框架".NETFramework,Version = v4.0"更高的版本.PR.Wallet.Tests

Hab*_*bib 25

.Net框架(v2.0或更高版本)向前兼容..您无法在.Net 4.0项目中引用.Net 4.5程序集.

请参阅:.NET Framework中的版本兼容性

您还可以看到:版本兼容性

.NET Framework对向后和向前兼容性的支持程度是特定于版本的..NET Framework仅支持使用1.1版创建的应用程序的向后和向前兼容性.它不支持使用2.0版创建的应用程序中的向前兼容性.在.NET Framework的上下文中,向后兼容性意味着使用早期版本的.NET Framework创建的应用程序将在更高版本上运行.相反,向前兼容性意味着使用更高版本的.NET Framework创建的应用程序将在早期版本上运行.

.NET Framework为向后兼容性提供了高度支持.例如,使用1.0版创建的大多数应用程序将在1.1版上运行,而使用1.1版的应用程序将在2.0版上运行..NET Framework还仅支持1.1版的向前兼容性.但是,为了向前兼容,您可能需要修改应用程序,以便应用程序按预期运行.使用2.0版创建的应用程序无法在早期版本的.NET Framework上运行.对于向后和向前兼容性,对.NET Framework的更改有助于提高安全性,正确性或功能,这也可能会引发兼容性问题.


Tim*_*eed 7

听起来你需要改变库的框架.由于它只是一个单元测试项目,我不明白为什么你不会.

在Visual Studio中:

  • 右键单击您的项目
  • 选择属性
  • 选择应用程序选项卡
  • 将目标框架更改为所需的框架

如果您没有看到.NET Framework 4.5.1作为选项,请确保已安装它.


小智 5

您无法在以4.0为目标的项目中引用4.5.1程序集.但是......假设安装了4.5.1,你可以通过动态调用4.0来调用面向4.0的项目中4.5.1程序集的方法:

var assembly= Assembly.LoadFrom(...);
var type = assembly.GetType(...);
var method = type.GetMethod(...);
var res = method.Invoke(null, args);
Run Code Online (Sandbox Code Playgroud)

请注意,这种方法可能存在局限性,但我发现在使用VS2010时调用Roslyn例程很有用.