.NET Framework更新使构建时出现“遇到...之间的冲突”警告

问题描述 投票:1回答:1

我最近将ASP.NET MVC 5项目从.NET Framework 4.5.1更新到4.6.1。我还更新了NuGet包。

现在,当我构建项目时,我看到几十个Encountered conflict between ...警告我已经在VS Output窗口中包含了几个这样的条目:

1>_HandlePackageFileConflicts: 
1>  Encountered conflict between 'Reference:Microsoft.Win32.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL' and 'Reference:Microsoft.Win32.Primitives'.  Choosing 'Reference:Microsoft.Win32.Primitives' because AssemblyVersion '4.0.3.0' is greater than '4.0.2.0'. 
1>  Encountered conflict between 'Reference:System.AppContext, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL' and 'Reference:System.AppContext'.  Choosing 'Reference:System.AppContext' because AssemblyVersion '4.1.2.0' is greater than '4.0.0.0'. 
1>  Encountered conflict between 'Reference:System.Console, Version=4.0.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL' and 'Reference:System.Console'.  Choosing 'Reference:System.Console' because AssemblyVersion '4.0.2.0' is greater than '4.0.1.1'. 
1>  Encountered conflict between 'Reference:System.Diagnostics.TraceSource, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL' and 'Reference:System.Diagnostics.TraceSource'.  Choosing 'Reference:System.Diagnostics.TraceSource' because AssemblyVersion '4.0.2.0' is greater than '4.0.1.0'. 
1>  Encountered conflict between 'Reference:System.Globalization.Calendars, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL' and 'Reference:System.Globalization.Calendars'.  Choosing 'Reference:System.Globalization.Calendars' because AssemblyVersion '4.0.3.0' is greater than '4.0.2.0'.

packages.config文件包含正确的版本引用:

<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="net461" />
<package id="Microsoft.Win32.Registry" version="4.5.0" targetFramework="net461" />

package /文件夹也包含正确的版本。 4.3.0和4.5.0用于上述2个条目。

我该如何解决这些冲突?

* *

UPDATE

有一个参考使用Path的Microsoft.Win32.Primitives

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\Microsoft.Win32.Primitives.dll

安装NuGet包时配置引用。我不明白为什么NuGet正在安装v4.3.0并在项目中添加一个引用到v4.0.2.0的扩展,然后使用v4.3.0解决冲突,因为它更新。

这是令人困惑的行为。它在我的本地PC上工作正常,但是我在发布之后在其中一个登台服务器上遇到了一个微妙的问题。我怀疑有一个或多个软件包在登台服务器上无法正确解决此冲突。

我试图弄清楚如何消除这些依赖关系的eenie-meenie-minie-moe选择。 :S

.net visual-studio nuget
1个回答
2
投票

.NET Framework更新使构建时出现“遇到...之间的冲突”警告

那是因为:

这是由于注入了对NETStandard 2.0的支持。我们将新的程序集注入到.NET 4.6.1及更高版本的桌面项目中,以便添加对netstandard2.0的支持。我们现在在目标中执行此操作而不是包,因为它不再需要引用包来构建netstandard库。只要我们看到引用了netstandard1.5或更高版本的库,就会发生这种注入(参见dotnet / sdk#1386)。

查看this thread了解更多详情。

要解决此问题,您可以将绑定重定向添加到这些引用,或者只使用对Microsoft.Win32.Primitives的标准引用,而不是为Microsoft.Win32.Primitives引入任何Nuget包。

有关详细信息,请参阅System.Net.Http v4.2.0.0 being copied/loaded from MSBuild tooling

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.