Обновление .NET Framework оставляет сборку с предупреждениями «Обнаружен конфликт между ...» - PullRequest
0 голосов
/ 29 августа 2018

Я недавно обновил проект 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

1 Ответ

0 голосов
/ 30 августа 2018

Обновление .NET Framework оставляет сборку с предупреждениями «Обнаружен конфликт между…»

Это потому что:

Это связано с внедренной поддержкой NETStandard 2.0. Мы вводим новые сборки в NET 4.6.1 и более поздних настольных проектах для добавления поддержка netstandard2.0 . Мы делаем это в целях сейчас, а не пакеты, потому что больше нет необходимости ссылаться на пакет построить нестандартную библиотеку. Эта инъекция происходит всякий раз, когда мы видим Ссылка на библиотеку netstandard1.5 или выше (см. dotnet / sdk # 1386).

Проверьте эту тему для получения более подробной информации.

Чтобы решить эту проблему, вы можете добавить перенаправление привязки к этим ссылкам или просто использовать стандартные ссылки на Microsoft.Win32.Primitives и не вносить какой-либо пакет Nuget для Microsoft.Win32.Primitives.

Подробнее см. System.Net.Http v4.2.0.0, копируемый / загружаемый из инструментария MSBuild .

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...