Upozornění NuGet NU1605

Příklad 1

Zjistilo se downgrade balíčku: PackageB z verze 4.0.0 na 3.5.0. Odkazujte na balíček přímo z projektu a vyberte jinou verzi.
'Project' -> 'PackageA' 4.0.0 -> 'PackageB' (>= 4.0.0)
'Project' -> 'PackageB' (>= 3.5.0)

Problém

Balíček závislostí určil omezení verze na vyšší verzi balíčku, než bylo nakonec vyřešeno obnovení. Důvodem je pravidlo direct-dependency-wins - při překladu balíčků, přímá verze balíčku v podgrafu přepíše vzdálené balíčky se stejným ID.

Řešení

Do projektu s upozorněním na obnovení přidejte odkaz na balíček s vyšší verzí balíčku.

V předchozím příkladu byste změnili odkaz na balíček na PackageB 4.0.0:

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

Příklad 2

Zjištěný downgrade balíčku: PackageC z verze 2.0.0 na 1.1.0. Odkazujte na balíček přímo z projektu a vyberte jinou verzi.
'Project' -> 'PackageA' 1.0.0 -> 'PackageB' 2.0.0 ->'PackageC' (>= 2.0.0)
'Project' -> 'PackageA' 1.0.0 -> 'PackageC' (>= 1.1.0)

Problém

Balíček závislostí určil omezení verze na vyšší verzi balíčku, než bylo nakonec vyřešeno obnovení. Důvodem je pravidlo direct-dependency-wins - při překladu balíčků, NuGet se pokusí respektovat záměr autora balíčku. Autor PackageA explicitně downgradoval na PackageC verzi 1.1.0 z PackageC verze 2.0.0.

Řešení

Do projektu s upozorněním na obnovení přidejte odkaz na balíček s vyšší verzí balíčku.

V předchozím příkladu byste změnili odkaz na balíček na PackageC 2.0.0:

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

Příklad 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)

Problém

Některé kombinace balíčků, které jsou dodávány s .NET Core 1.0 a 1.1, nejsou vzájemně kompatibilní, pokud jsou odkazovány společně v projektu .NET Core 3.0 nebo vyšší a je zadán runtimeIdentifier. Problematické balíčky obvykle začínají System. nebo Microsoft.mají čísla verzí v rozmezí od 4.0.0 do 4.3.1. V tomto případě bude mít zpráva downgrade balíček začínající runtime.<RID> v řetězci závislostí.

Řešení

Chcete-li tento problém vyřešit, přidejte následující PackageReference:

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

Můžete se rozhodnout použít version odpovídající hlavní verzi sady SDK.

Příklad 4

Zjištěný downgrade balíčku: Microsoft.NETCore.App od 2.1.8 do 2.1.0. Odkazujte na balíček přímo z projektu a vyberte jinou verzi.
test -> mvc -> Microsoft.NETCore.App (>= 2,1,8)
test -> Microsoft.NETCore.App (>= 2.1.0)

Problém

Projekt mvc určil omezení verze na vyšší verzi balíčku, než bylo nakonec vyřešeno obnovení. Důvodem je pravidlo direct-dependency-wins - při překladu balíčků, verze přímo odkazovaného balíčku v grafu přepíše verzi vzdáleného balíčku se stejným ID.

Řešení

Tato konkrétní chyba (s balíčkem Microsoft.NETCore.App) se vylepšuje přesunutím sady .NET Core SDK na verzi 2.2.100 nebo novější. Microsoft.NETCore.App je automaticky odkazovaný balíček, na který sada .NET Core SDK před verzí 3.0.100 zvolí automatické přenesení. Podívejte se také na postupné uvedení místního modulu runtime nasazení.

Poznámka:

Zatímco NU1605 je považován za upozornění pomocí nástrojů NuGet, sada .NET SDK se rozhodne zacházet s tímto upozorněním jako s chybou prostřednictvím WarningsAsErrors. Projekt může toto upozornění upgradovat na chybu nastavením TreatWarningsAsErrors na true. I když se nedoporučuje, protože s větší pravděpodobností narazíte na problémy s modulem runtime, můžete toto upozornění potlačit .

Tip

Alternativní řešení: NuGetSolver je rozšíření sady Visual Studio vyvinuté Microsoft DevLabs, které je navržené tak, aby pomohlo vyřešit konflikty závislostí. Automatizuje proces identifikace a řešení těchto problémů. Další podrobnosti najdete na stránce NuGetSolver na webu Visual Studio Marketplace a rádi si poslechneme váš názor na vaše prostředí.