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

本文关键字:框架 程序集 net 引用 项目 | 更新日期: 2023-09-27 18:04:32

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

警告2主引用"PR.Wallet"无法解析因为它是基于"。net framework,Version=v4.5.1"构建的。框架。这是一个比当前目标更高的版本框架".NETFramework Version = v4.0"。PR.Wallet.Tests

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

。. Net框架(v2.0或更高版本)不兼容。你不能在。net 4.0项目中引用。net 4.5程序集。

参见:.NET框架中的版本兼容性

你也可以看到:版本兼容性

.NET Framework对向后和向前的支持程度兼容性与版本有关。.NET框架两者都支持创建的应用程序的向后和向前兼容性仅1.1版本。中不支持前向兼容性使用2.0版本创建的应用程序。在。net的上下文中框架,向后兼容性意味着一个应用程序创建使用早期版本的。net框架可以在较晚的版本上运行的版本。相反,向前兼容性意味着应用程序使用。net框架的更新版本创建的。net Framework将运行在早期版本。

.NET框架提供了高度的支持用于向后兼容。例如,大多数应用程序创建使用版本1.0可以在版本1.1上运行,而应用程序使用版本1.1将在版本2.0上运行。.NET框架也支持仅向前兼容版本1.1。然而,对于前进兼容性您可能需要修改应用程序,以便应用程序按预期运行。使用2.0版本创建的应用程序不能在早期版本的。net框架上运行。对于这两个向后和向前兼容性,对。net框架的改变这也有助于提高安全性、正确性或功能提出兼容性问题。

听起来您需要更改库的框架。既然它只是一个单元测试项目,我不明白你为什么不这样做。

在Visual Studio:

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

如果你没有看到。net Framework 4.5.1作为一个选项,确保你已经安装了。

您无法在以4.0为目标的项目中引用4.5.1程序集。但是…您可以在以4.0为目标的项目中动态调用4.5.1程序集的方法,假设安装了4.5.1:

var assembly= Assembly.LoadFrom(...);
var type = assembly.GetType(...);
var method = type.GetMethod(...);
var res = method.Invoke(null, args);

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

可能有例外。例如,根据我自己的经验,像TagLib-Sharp 2.2.0(你可以从NuGet下载)这样的一些库完全允许我从运行在Visual Studio 2010上的。net 4.0 (Full Profile客户端)项目中引用它的。net 4.5 DLL。

另外,从前面提到的。net 4.5 DLL中调用一些方法没有发出任何警告或错误,构建过程很好,包括在运行时。然而,一些方法/函数失败了,所以这是一个偶然的机会,但记住,引用。net 4.5 DLL是成功的。所以以上关于"向前兼容性"的答案和一般规则;上下文显然有一些例外,如在特定情况下的TagLib-Sharp。