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

我如何使4.0项目具有4.5参考。 在unit testing中,我无法构建解决方案,它给了我这个警告。

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

.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的更改有助于提高安全性,正确性或function,这也可能会引发兼容性问题。

听起来你需要改变库的框架。 由于它只是一个unit testing项目,我不明白为什么你不会。

在Visual Studio中:

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

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

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

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

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