Я недавно обновил проект ASP.NET MVC 5 с .NET Framework 4.5.1 до 4.6.1. Я также обновил пакеты NuGet.
Теперь, когда я строю проект, я вижу несколько десятков предупреждений о Encountered conflict between ...
Я включил несколько из этих записей в окне вывода VS:
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" />
А в папке packages / также содержатся правильные версии. 4.3.0 и 4.5.0 для 2 записей выше.
Как мне разрешить эти конфликты?
* *
UPDATE
Существует ссылка на 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, поскольку он более новый.
Это запутанное поведение. Он отлично работает на моем локальном ПК, но у меня возникла небольшая проблема на одном из промежуточных серверов после публикации. Я подозреваю, что на промежуточном сервере есть один или несколько пакетов, в которых этот конфликт не разрешен правильно.
Я пытаюсь выяснить, как устранить выбор этих зависимостей eenie-meenie-minie-moe. : S