自从我将 C# ASP.Net 项目的目标框架升级到 4.6.1 后,我在构建过程中收到了很多冲突警告。 50 多条消息,例如:
考虑将程序集“System.Runtime.InteropServices.RuntimeInformation, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”从版本“0.0.0.0”[] 重新映射到版本“4.0.2.0”[C:\Program Files (x86)\ Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.InteropServices.RuntimeInformation.dll] 解决冲突并消除警告。
它们都与.NET系统库相关。我当然可以重新映射所有引用,但不知何故我认为这不是正确的解决方案。如果我使用“详细”输出进行重建,我会得到更多信息:
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ Microsoft \ Microsoft.NET.Build.Extensions \ Microsoft.NET.Build.Extensions.ConflictResolution.targets(33,5):消息NETSDK1041:遇到“参考:System.Runtime.InteropServices.RuntimeInformation,版本= 4.0.1.0,文化=中性,PublicKeyToken = b03f5f7f11d50a3a,processorArchitecture = MSIL”和“参考:System.Runtime.InteropServices.RuntimeInformation”之间存在冲突。 NETSDK1033:选择“Reference:System.Runtime.InteropServices.RuntimeInformation”,因为 AssemblyVersion“4.0.2.0”大于“4.0.1.0”。
不知何故,文件夹 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.6.1 和 C:\Program Files (x86)\Microsoft Visual Studio 中的 .NET Framework 之间似乎存在版本冲突\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib。
我不知道如何确保它使用来自同一位置的引用。有人可以帮忙吗?
Visual Studio 参考和平台之间的冲突
看来是因为:
这是由于注入了对 NETStandard 2.0 的支持。我们注入新的
NET 4.6.1 及更高版本的桌面项目中的程序集,以便添加
支持netstandard2.0。我们现在在目标中执行此操作,而不是
包,因为不再需要引用包
构建一个网络标准库。每当我们看到一个
引用了 netstandard1.5 或更高版本的库(请参阅 dotnet/sdk#1386)。
要解决此问题,您可以向这些引用添加绑定重定向。
Check 从 MSBuild 工具复制/加载 System.Net.Http v4.2.0.0 https://github.com/dotnet/corefx/issues/25773了解更多详细信息。
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)