无法解析主要参考,因为它是针对比当前目标框架更高版本的 .NET 框架构建的

问题描述 投票:0回答:4

我正在尝试构建一个引用第 3 方 SlingshotClient.dll 的项目。该项目在其他开发人员工作站上构建良好。但是,我收到以下错误。我可以想象导致我的问题的一个差异是我的计算机上还安装了 VS 2012 和 .NET Frameworks 4.5。我相信其他可以成功构建这个的开发人员没有安装这些。

C:\Windows\Microsoft.NET\Framework 4.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 构建的

h

.net visual-studio-2010 .net-4.0 build
4个回答
25
投票

显然,如果您仅安装了 .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 并发出抱怨。


4
投票

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

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

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

参考


0
投票

我通过更改框架以匹配项目构建所针对的框架来解决这个问题。 此处解释了解决方案


0
投票
  1. 下载+安装NETFramework4.5
  2. 打开 *.csproj 文件
  3. 找到你的框架(Ctrl+F -> 4.0)
  4. 更换为4.5
  5. 保存
  6. 启动项目 enter image description here
© www.soinside.com 2019 - 2024. All rights reserved.