Udostępnij za pośrednictwem


Ostrzeżenie narzędzia NuGet NU1605

Przykład 1

Wykryto obniżenie poziomu pakietu: "PackageB" z wersji 4.0.0 do 3.5.0. Odwołuj się do pakietu bezpośrednio z projektu, aby wybrać inną wersję.
"Project" -> "PackageA" 4.0.0 -> "PackageB" (>= 4.0.0)
'Project' -> 'PackageB' (>= 3.5.0)

Problem

Pakiet zależności określił ograniczenie wersji dla wyższej wersji pakietu niż ostatecznie rozwiązane. Wynika to z reguły direct-dependency-wins — w przypadku rozpoznawania pakietów bezpośrednia wersja pakietu w podgrafie zastąpi te z odległych pakietów o tym samym identyfikatorze.

Rozwiązanie

Aby projekt wyświetlał ostrzeżenie dotyczące przywracania, dodaj odwołanie do pakietu do nowszej wersji pakietu.

W powyższym przykładzie należy zmienić odwołanie do pakietu na PackageB 4.0.0:

  "PackageA" 4.0.0 -> "PackageB" 4.0.0
'PackageB' 4.0.0

Przykład 2

Wykryto obniżenie poziomu pakietu: "PackageC" z wersji 2.0.0 do 1.1.0. Odwołuj się do pakietu bezpośrednio z projektu, aby wybrać inną wersję.
"Project" -> 'PackageA' 1.0.0 -> 'PackageB' 2.0.0 ->'PackageC' (>= 2.0.0)
'Project' -> 'PackageA' 1.0.0 -> 'PackageC' (>= 1.1.0)

Problem

Pakiet zależności określił ograniczenie wersji dla wyższej wersji pakietu niż ostatecznie rozwiązane. Wynika to z reguły direct-dependency-wins — podczas rozwiązywania pakietów NuGet próbuje uhonorować intencję autora pakietu. Autor jawnie PackageA obniżył poziom do PackageC wersji 1.1.0 z PackageC wersji 2.0.0.

Rozwiązanie

Aby projekt wyświetlał ostrzeżenie dotyczące przywracania, dodaj odwołanie do pakietu do nowszej wersji pakietu.

W powyższym przykładzie należy zmienić odwołanie do pakietu na PackageC 2.0.0:

  "PackageA" 4.0.0 -> "PackageB" 4.0.0
'PackageB' 4.0.0

Przykład 3

Detected package downgrade: System.IO.FileSystem.Primitives from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.
Project -> System.IO.FileSystem 4.0.1 -> runtime.win.System.IO.FileSystem 4.3.0 -> System.IO.FileSystem.Primitives (>= 4.3.0)
Project -> System.IO.FileSystem 4.0.1 -> System.IO.FileSystem.Primitives (>= 4.0.1)

Problem

Niektóre kombinacje pakietów dostarczanych z platformą .NET Core 1.0 i 1.1 nie są ze sobą zgodne, gdy są przywoływane razem w projekcie .NET Core 3.0 lub nowszym, a określono parametr RuntimeIdentifier. Problematyczne pakiety zazwyczaj zaczynają się od System. lub Microsoft.i mają numery wersji z zakresu od 4.0.0 do 4.3.1. W takim przypadku komunikat o obniżeniu poziomu będzie miał pakiet rozpoczynający się od runtime.<RID> w łańcuchu zależności.

Rozwiązanie

Aby obejść ten problem, dodaj następujący element PackageReference:

<PackageReference Include="Microsoft.NETCore.Targets" Version="3.0.0" PrivateAssets="all" />

Możesz użyć version zgodnej wersji głównej zestawu SDK.

Przykład 4

Wykryto obniżenie poziomu pakietu: Microsoft.NETCore.App z wersji 2.1.8 do 2.1.0. Odwołuj się do pakietu bezpośrednio z projektu, aby wybrać inną wersję.
test -> mvc -> Microsoft.NETCore.App (>= 2.1.8)
test -> Microsoft.NETCore.App (>= 2.1.0)

Problem

Projekt mvc określił ograniczenie wersji dla wyższej wersji pakietu niż przywracanie ostatecznie rozwiązane. Wynika to z reguły direct-dependency-wins — w przypadku rozpoznawania pakietów wersja bezpośrednio przywołynego pakietu na grafie zastąpi pakiet odległy o tym samym identyfikatorze.

Rozwiązanie

Ten konkretny błąd (z pakietem Microsoft.NETCore.App) został ulepszony przez przeniesienie zestawu .NET Core SDK do wersji 2.2.100 lub nowszej. Microsoft.NETCore.App jest pakietem automatycznie odwołującym się do zestawu .NET Core SDK przed wersją 3.0.100. Zobacz również Samodzielne wdrażanie środowiska uruchomieniowego wdrażania.

Uwaga

Chociaż nu1605 jest uznawane za ostrzeżenie przez narzędzia NuGet, zestaw SDK platformy .NET decyduje się traktować to ostrzeżenie jako błąd za pośrednictwem polecenia WarningsAsErrors. Projekt może uaktualnić to ostrzeżenie do błędu, ustawiając wartość TreatWarningsAsErrorstrue. Chociaż nie jest to zalecane, ponieważ prawdopodobnie wystąpią problemy ze środowiskiem uruchomieniowym, możesz pominąć to ostrzeżenie.

Napiwek

Rozwiązanie alternatywne: NuGetSolver to rozszerzenie programu Visual Studio opracowane przez firmę Microsoft DevLabs, które ułatwia rozwiązywanie konfliktów zależności. Automatyzuje proces identyfikowania i rozwiązywania tych problemów. Aby uzyskać więcej informacji, odwiedź stronę NuGetSolver w witrynie Visual Studio Marketplace i chętnie poznamy Twoją opinię na temat Twojego środowiska.