Предупреждение NuGet NU1605
Пример 1
Обнаружено понижение уровня пакета: PackageB с 4.0.0 до 3.5.0. Наведите ссылку на пакет непосредственно из проекта, чтобы выбрать другую версию.
Project —> PackageA 4.0.0 —> PackageB (>= 4.0.0)
Project —> PackageB (>= 3.5.0)
Проблема
Пакет зависимостей указал ограничение версии на более высокую версию пакета, чем восстановление в конечном счете разрешено. Это связано с правилом direct-dependency-wins - при разрешении пакетов прямая версия пакета в подграфе переопределяет, что удаленные пакеты с тем же идентификатором.
Решение
В проект, демонстрирующий предупреждение восстановления, добавьте ссылку на пакет в более высокую версию пакета.
В приведенном выше примере вы измените ссылку на пакет на PackageB
4.0.0:
PackageA 4.0.0 —> PackageB 4.0.0
PackageB 4.0.0
Пример 2
Обнаружена понижение уровня пакета: PackageC с 2.0.0 до 1.1.0. Наведите ссылку на пакет непосредственно из проекта, чтобы выбрать другую версию.
Project —> PackageA 1.0.0 —> PackageB 2.0.0 ->'PackageC' (>= 2.0.0)
Project —> PackageA 1.0.0 —> PackageC (>= 1.1.0)
Проблема
Пакет зависимостей указал ограничение версии на более высокую версию пакета, чем восстановление в конечном счете разрешено. Это связано с правилом direct-dependency-wins - при разрешении пакетов NuGet пытается учитывать намерение автора пакета.
Автор PackageA
явно снизился до PackageC
1.1.0 с PackageC
2.0.0.
Решение
В проект, демонстрирующий предупреждение восстановления, добавьте ссылку на пакет в более высокую версию пакета.
В приведенном выше примере вы измените ссылку на пакет на PackageC
2.0.0:
PackageA 4.0.0 —> PackageB 4.0.0
PackageB 4.0.0
Пример 3
Обнаружена пониженная версия пакета: System.IO.FileSystem.Primitives с 4.3.0 до 4.0.1. Наведите ссылку на пакет непосредственно из проекта, чтобы выбрать другую версию.
Проект — System.IO.FileSystem 4.0.1 — runtime.win.System.IO.FileSystem 4.3.0> — System.IO.FileSystem.Primitives (= 4.3.0) — System.IO.FileSystem 4.0.1 —>> System.IO.FileSystem.Primitives (>>= 4.0.1)
>>
Проблема
Некоторые сочетания пакетов, которые поставляется с .NET Core 1.0 и 1.1, несовместимы друг с другом, если они ссылаются вместе в проекте .NET Core 3.0 или более поздней версии, а также указан идентификатор RuntimeIdentifier. Проблемные пакеты обычно начинаются с System.
или Microsoft.
имеют номера версий от 4.0.0 до 4.3.1. В этом случае сообщение вниз будет иметь пакет, начиная с runtime.<RID>
цепочки зависимостей.
Решение
Чтобы обойти эту проблему, добавьте следующую команду PackageReference:
<PackageReference Include="Microsoft.NETCore.Targets" Version="3.0.0" PrivateAssets="all" />
Вы можете использовать version
соответствующую основную версию пакета SDK.
Пример 4
Обнаружена понижение уровня пакета: Microsoft.NETCore.App с 2.1.8 до 2.1.0. Наведите ссылку на пакет непосредственно из проекта, чтобы выбрать другую версию.
test - mvc ->> Microsoft.NETCore.App (>= 2.1.8)
test —> Microsoft.NETCore.App (>= 2.1.0)
Проблема
Проект mvc указал ограничение версии для более высокой версии пакета, чем восстановление в конечном счете разрешено. Это связано с правилом direct-dependency-wins - при разрешении пакетов, версия непосредственно на который ссылается пакет в графе, переопределит удаленный пакет с тем же идентификатором.
Решение
Эта конкретная ошибка (с пакетом Microsoft.NETCore.App) улучшена путем перемещения пакета SDK для .NET Core на 2.2.100 или более поздней версии. Microsoft.NETCore.App — это автоматически ссылающийся пакет, на который пакет SDK для .NET Core до версии 3.0.100 выбирает автоматический перенос. Дополнительные сведения см. в разделе "Локальный перенос среды выполнения развертывания".
Примечание.
Хотя NU1605 считается предупреждением средства NuGet, пакет SDK для .NET будет рассматривать это предупреждение как ошибку WarningsAsErrors
.
Проект может обновить это предупреждение до ошибки, установив значение TreatWarningsAsErrors
true
.
Хотя это не рекомендуется, так как вы, скорее всего, столкнулись с проблемами среды выполнения, вы можете отключить это предупреждение.
Совет
Альтернативное решение: NuGetSolver — это расширение Visual Studio, разработанное Microsoft DevLabs, предназначенное для устранения конфликтов зависимостей. Он автоматизирует процесс выявления и решения этих проблем. Дополнительные сведения см. на странице NuGetSolver в Visual Studio Marketplace, и мы хотели бы услышать отзывы о вашем опыте.