Как игнорировать NuGet NU1605? - PullRequest
0 голосов
/ 12 июля 2019

У меня есть огромное решение со многими проектами и собственными пакетами NuGet, которое имеет повсеместную зависимость от Unity 4.0.1.Мы оцениваем миграцию этого решения на Unity 5.11.1, чтобы повысить производительность и решить случайные сбои, связанные с DI, происходящие из кода, который проект Unity полностью удалил в версии 5.0.0.

В поисках способа облегчениябыли разработаны два внешних инструмента для миграции:

  • Преобразователь исходного кода на основе Roslyn
  • Мост, который реализует интерфейс Unity 5, но в действительности карты прозрачно обращаются кобернутый интерфейс контейнера Unity 4

Оба инструмента отлично проходят свои модульные тесты, и преобразователю удалось преобразовать один ключевой «листовой» проект, однако мы столкнулись с препятствиями при попытке сослаться на перенесенный листпроект из одного внутреннего проекта: печально известный NU1605 .

Я абсолютно понимаю, как оправдана ошибка NU106, поскольку внутренний проект все еще ссылается на Unity 4.0.1, а конечный проект ссылается на Unity 5.110,1.однако, это один из случаев, когда инструменты мешают: мне требуется, чтобы обе версии «сосуществовали», поскольку я вручную устранял их несоответствия.

На бумаге это должно быть достаточно жизнеспособным, так как библиотеки DLLимеют разные версии и даже разные пространства имен.

Есть ли способ заставить "nuget" принять эту странную установку?

1 Ответ

1 голос
/ 13 июля 2019

У вас есть два варианта подавления этого кода.Одним из них является использование свойства <NoWarn>NU1605</NoWarn> msbuild (должно быть определено внутри PropertyGroup).Свойства проекта Visual Studio, вероятно, имеют возможность редактировать его в пользовательском интерфейсе.

Другой вариант - добавить метаданные NoWarn="NU1605" в элемент ProjectReference:

  <ProjectReference Include="package id" Version="1.2.3" NoWarn="1605" />

Наконец, NuGet фактическисообщает NU1605 как предупреждение, которое вы можете заметить, если внимательно прочитаете заголовок страницы документации..NET Core SDK выводит его в предупреждение с использованием свойства WarningsAsErrors.Итак, если вы достаточно опытны с MSBuild, вы можете удалить его после добавления или проверить, как предотвратить добавление его в список.Я предполагаю, что мотивация заключается в том, что BCL распространяется как пакеты для .NET Core 1.x и 2.x (не для 3.x), а когда есть обновление безопасности, вы не хотите Правило ближайших побед NuGet , приводящее к случайному использованию пакета с известной уязвимостью.

...