参考和平台之间的 Visual Studio 冲突

Pet*_*ijn 12 .net msbuild visual-studio

由于我将 C# ASP.Net 项目的目标框架升级到 4.6.1,因此在构建期间我收到了很多冲突警告。50 多条消息,例如:

考虑从版本“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 System 库相关。我当然可以重新映射所有引用,但不知何故我认为这不是正确的解决方案。如果我用输出“详细”重建,我会得到更多信息:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\Microsoft.NET.Build.Extensions.ConflictResolution.targets(33,5):消息 NETSDK1041:遇到“Reference:System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL”和“Reference: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 框架之间似乎存在版本冲突\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib.

我不知道如何确保它使用来自同一个地方的引用。任何人都可以帮忙吗?

Leo*_*SFT 6

参考和平台之间的 Visual Studio 冲突

好像是因为:

这是由于注入了对 NETStandard 2.0 的支持。我们将新程序集注入 NET 4.6.1 和更高版本的桌面项目,以添加对 netstandard2.0 的支持。我们现在在目标而不是包中这样做,因为它不再需要引用包来构建网络标准库。每当我们看到引用了 netstandard1.5 或更高版本的库时,就会发生这种注入(请参阅 dotnet/sdk#1386)。

要解决此问题,您可以向这些引用添加绑定重定向。

检查从 MSBuild 工具复制/加载的 System.Net.Http v4.2.0.0 以获取更多详细信息。

希望这可以帮助。