【问题标题】:Visual studio conflicts between Reference and Platform参考和平台之间的 Visual Studio 冲突
【发布时间】:2019-03-22 09:21:16
【问题描述】:

自从我为 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,处理器架构=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)\ 中的 .NET 框架之间似乎存在版本冲突Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib.

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

【问题讨论】:

  • 你能否重新安装所有 NuGet 包(Nuget 命令窗口中的Update-Package -Reinstall),然后双击程序集绑定警告,如果有人建议添加绑定重定向(它将打开一个对话框,询问是否允许您自动编辑 web.config)?
  • 我收到并且没有收到任何程序集绑定警告:(

标签: .net visual-studio msbuild


【解决方案1】:

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

似乎是因为:

这是由于注入了对 NETStandard 2.0 的支持。我们注入新的 程序集到 NET 4.6.1 和更高版本的桌面项目中,以便添加 支持netstandard2.0。我们现在在目标中执行此操作,而不是 包,因为它不再需要引用包 建立一个网络标准库。每当我们看到一个 引用了 netstandard1.5 或更高版本的库(参见 dotnet/sdk#1386)。

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

查看System.Net.Http v4.2.0.0 being copied/loaded from MSBuild tooling了解更多详情。

希望这会有所帮助。

【讨论】:

  • 我希望我知道什么是“绑定重定向”。我已经按照您指出的主题进行了操作,但我什么也不懂。但是,我只是按照文档中 MS 的指示使用“dotnet new angular -o my-new-app”创建 ASP.Net Core Angular 项目(“将 Angular 项目模板与 ASP.NET Core") 在安装 Net Core 2.2 SDK 之前并在之后定位到它。在正确安装 SDK 的情况下创建一个新项目可以正常工作。
  • 我在一组围绕类库的项目中遇到了同样的问题,这些类库包含从 2009 年开始的代码,针对 NET Framework 4.5 及更低版本(低至 3.5),并且解决方案没有对 ASP 组件的任何引用。谢天谢地,这些消息是警告,但即使是那些也让我感到烦恼。
  • 但是如何为 Azure 函数做到这一点? v1 函数不允许绑定重定向
【解决方案2】:

我的一位同事将 .Net 版本升级到 4.6.1 。 在本地更新我的 git 后,我​​遇到了同样的问题。 对于许多 .dll,我得到了“考虑 app.config 重新映射程序集”

我首先想更新我的 4.6.1 框架,但我收到了这条消息: “.NET Framework 4.6.1 ou une mise à jour ultérieure est déjà installé sur cet ordinateur。”

阅读相关链接后: https://docs.microsoft.com/en-us/dotnet/framework/install/troubleshoot-blocked-installations-and-uninstallations

on sdk 和之前的似乎有“联系”。

然后我安装最新版本的 .NET SDK (4.8):ndp48-devpack-enu.exe。

安装结束后,我重建了我的项目,它正在工作

+

【讨论】:

    【解决方案3】:

    设置 NUGET_PACKAGES 变量并没有解决我的问题。此外,我注意到 nuget 包在基于 'SYSWOW64' 的路径中可用,但通过在系统服务帐户中运行的 Jenkins 的 MSBUID 正在查看 'System32' 路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      • 2015-11-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多