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

时间:2014-05-22 12:51:28

标签: c# .net

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

  

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

3 个答案:

答案 0 :(得分:25)

.Net框架(v2.0或更高版本)不是 forward compatible。您无法在.Net 4.0项目中引用.Net 4.5程序集。

请参阅:Version Compatibility in the .NET Framework

您可能还会看到:Version Compatibility

  

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

     

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

答案 1 :(得分:7)

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

在Visual Studio中:

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

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

答案 2 :(得分:5)

您无法在以4.0为目标的项目中引用4.5.1程序集。 但是......假设安装了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例程很有用。

相关问题