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
Wykryto obniżenie poziomu pakietu: System.IO.FileSystem.Primitives z wersji 4.3.0 do 4.0.1. Odwołuj się do pakietu bezpośrednio z projektu, aby wybrać inną wersję.
Projekt —> 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ść TreatWarningsAsErrors
true
.
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.