我正在尝试构建一个引用第三方SlingshotClient.dll的项目。该项目在其他开发人员工作站上构建良好。但是,我收到以下错误。我可以想象的一个不同之处是我的问题是我的机器上还安装了VS 2012和.NET Frameworks 4.5。我相信其他可以成功构建它的开发人员没有安装它们。
C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(1578,5):警告MSB3274:主要参考“SlingshotClient,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = bb5a8745472e181a,processorArchitecture = MSIL“无法解析,因为它是针对”.NETFramework,Version = v4.5“框架构建的。这是一个更高的版本 n比目前的目标框架“.NETFramework,Version = v4.0”。
错误似乎是说我们的项目针对的是框架版本4.0(这是正确的),但引用的SlingshotClient.dll是针对框架版本4.5构建的。当我查看诈骗程序中的SlingshotClient.dll时,它在我看来该程序集是针对框架版本4.0构建的
答案 0 :(得分:18)
显然,如果您只安装了.NET Frameworks 4.0,则可以将面向4.5的.NET程序集作为参考添加到面向.NET 4.0的项目中。这将编译并运行,没有错误。
只要安装.NET Frameworks 4.5,编译就会失败。解决方案是针对.NET Framework 4.5的项目,或者获取针对.NET 4.0的引用程序集的版本。
.NET 4.5是4.0的替代品。 4.0对4.5没有任何了解,我认为它只是查看版本号的第一个数字,对于4.0或4.5是相同的,所以允许编译。一旦安装4.5,您的4.0项目就会使用4.5框架进行编译,它现在知道4.5和抱怨。
答案 1 :(得分:0)
作为一种解决方法,您可以将以下内容添加到
<PropertyGroup>
<ResolveAssemblyReferenceIgnoreTargetFrameworkAttributeVersionMismatch>true</ResolveAssemblyReferenceIgnoreTargetFrameworkAttributeVersionMismatch>
</PropertyGroup>
请注意,虽然这确实会使编译错误消失,但这些错误的存在是有原因的,当您引用的二进制文件尝试执行在您的较低版本上不起作用的代码时,公然忽略它们绝对会导致问题.NET。