无法解析主引用,因为它是根据高于当前目标框架的.NET framework版本构建的

无法解析主引用,因为它是根据高于当前目标框架的.NET framework版本构建的,.net,visual-studio-2010,.net-4.0,build,.net,Visual Studio 2010,.net 4.0,Build,我正在尝试构建一个引用第三方SlingshotClient.dll的项目。该项目在其他开发人员工作站上构建良好。然而,我得到下面的错误。我可以想象导致我的问题的一个不同之处是,我的机器上还安装了VS 2012和.NET Framework 4.5。我相信其他能够成功构建此功能的开发人员没有安装这些功能 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1578,5):警告MSB3274:无法解析主引用“S

我正在尝试构建一个引用第三方SlingshotClient.dll的项目。该项目在其他开发人员工作站上构建良好。然而,我得到下面的错误。我可以想象导致我的问题的一个不同之处是,我的机器上还安装了VS 2012和.NET Framework 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构建的。当我在disembler中查看SlingshotClient.dll时,我认为程序集是针对framework 4.0版构建的


显然,如果只安装了.NET Framework 4.0,则可以将目标为4.5的.NET程序集作为参考添加到目标为.NET 4.0的项目中。这将编译并运行,没有错误

一旦安装.NETFrameworks4.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并会投诉。

作为一种解决方法,您可以将以下内容添加到元素中的.csproj文件中

<PropertyGroup>
<ResolveAssemblyReferenceIgnoreTargetFrameworkAttributeVersionMismatch>true</ResolveAssemblyReferenceIgnoreTargetFrameworkAttributeVersionMismatch>
</PropertyGroup>

真的
请注意,虽然这确实会使编译错误消失,但这些错误存在是有原因的,当您引用的二进制文件试图执行在较低版本的.NET上不起作用的代码时,公然忽略它们绝对会导致问题


您需要向下滚动并查看TargetFrameworkAttribute@HansPassant你说得对。TargetFrameworkAttribute稍微向下一点,显示为4.5。我读到的另一篇文章说,我需要检查引用的mscorlib版本。这就解释了这一点,尽管如此,我还是很惊讶它在一台只有.NETFramework 4.0的机器上编译时毫无怨言。如果你想把你的评论作为这个问题的答案,我会相信你的正确答案。