如何使4.0项目具有4.5参考。在单元测试中,我无法构建解决方案并且它给了我这个警告。
警告2无法解析主要参考“PR.Wallet” 因为它是针对“.NETFramework,Version = v4.5.1”构建的 框架。这是比当前目标版本更高的版本 框架“.NETFramework,Version = v4.0”。 PR.Wallet.Tests
答案 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例程很有用。