NuGet-Warnung NU1605

Beispiel 1

Paketdowngrade erkannt: 'PackageB' von 4.0.0 auf 3.5.0. Verweisen Sie direkt aus dem Projekt auf das Paket, um eine andere Version auszuwählen.
'Project' -> 'PackageA' 4.0.0 -> 'PackageB' (>= 4.0.0)
'Project' -> 'PackageB' (>= 3.5.0)

Abgang

Ein Abhängigkeitspaket hat eine Versionseinschränkung für eine höhere Version eines Pakets angegeben, als die Wiederherstellung letztendlich aufgelöst wurde. Das liegt daran, dass die Direct-Dependency-wins-Regel - beim Auflösen von Paketen überschreibt die direkte Paketversion im Untergraphen die der entfernten Pakete mit derselben ID.

Lösung

Fügen Sie dem Projekt, das die Wiederherstellungswarnung anzeigt, einen Paketverweis auf die höhere Version des Pakets hinzu.

Im obigen Beispiel ändern Sie den Paketverweis auf PackageB 4.0.0:

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

Beispiel 2

Paketdowngrade erkannt: 'PackageC' von 2.0.0 auf 1.1.0. Verweisen Sie direkt aus dem Projekt auf das Paket, um eine andere Version auszuwählen.
'Project' -> 'PackageA' 1.0.0 -> 'PackageB' 2.0.0 ->'PackageC' (>= 2.0.0)
'Project' -> 'PackageA' 1.0.0 -> 'PackageC' (>= 1.1.0)

Abgang

Ein Abhängigkeitspaket hat eine Versionseinschränkung für eine höhere Version eines Pakets angegeben, als die Wiederherstellung letztendlich aufgelöst wurde. Das liegt an der Regel für direkte Abhängigkeiten – beim Auflösen von Paketen versucht NuGet, die Absicht des Paketautors zu berücksichtigen. Der Autor von PackageA hat explizit auf PackageC 1.1.0 von PackageC 2.0.0 herabgestuft.

Lösung

Fügen Sie dem Projekt, das die Wiederherstellungswarnung anzeigt, einen Paketverweis auf die höhere Version des Pakets hinzu.

Im obigen Beispiel ändern Sie den Paketverweis auf PackageC 2.0.0:

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

Beispiel 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)

Abgang

Bestimmte Kombinationen von Paketen, die mit .NET Core 1.0 und 1.1 ausgeliefert wurden, sind nicht miteinander kompatibel, wenn sie in einem .NET Core 3.0- oder höheren Projekt miteinander referenziert werden und ein RuntimeIdentifier angegeben wird. Die problematischen Pakete beginnen in der Regel mit System. oder Microsoft., und weisen Versionsnummern zwischen 4.0.0 und 4.3.1 auf. In diesem Fall verfügt die Downgradenachricht über ein Paket, das mit runtime.<RID> der Abhängigkeitskette beginnt.

Lösung

Um dieses Problem zu umgehen, fügen Sie das folgende PackageReference hinzu:

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

Sie können wählen, ob sie die version entsprechende Hauptversion Ihres SDK verwenden möchten.

Beispiel 4

Paketdowngrade erkannt: Microsoft.NETCore.App von 2.1.8 auf 2.1.0. Verweisen Sie direkt aus dem Projekt auf das Paket, um eine andere Version auszuwählen.
test -> mvc -> Microsoft.NETCore.App (>= 2.1.8)
test -> Microsoft.NETCore.App (>= 2.1.0)

Abgang

Das mvc-Projekt hat eine Versionseinschränkung für eine höhere Version eines Pakets angegeben, als die Wiederherstellung letztendlich aufgelöst wurde. Das liegt daran, dass die Direct-Dependency-wins-Regel - beim Auflösen von Paketen die Version des direkt referenzierten Pakets im Diagramm überschreibt die version des entfernten Pakets mit derselben ID.

Lösung

Dieser spezifische Fehler (mit Microsoft.NETCore.App Paket) wird verbessert, indem Das .NET Core SDK auf 2.2.100 oder höher verschoben wird. Microsoft.NETCore.App ist ein automatisch referenziertes Paket, das vom .NET Core SDK vor Version 3.0.100 automatisch eingefügt werden soll. Siehe auch Vorwärtsrollen der eigenständigen Bereitstellungslaufzeit.

Hinweis

Während NU1605 als Warnung durch das NuGet-Tool betrachtet wird, wird diese Warnung vom .NET SDK als Fehler WarningsAsErrorsbehandelt. Ihr Projekt kann diese Warnung in einen Fehler umwandeln, indem Sie TreatWarningsAsErrors auf true setzen. Es wird zwar nicht empfohlen, da es wahrscheinlicher ist, dass Laufzeitprobleme auftreten, sie können diese Warnung unterdrücken .

Tipp

Alternative Lösung: NuGetSolver ist eine von Microsoft DevLabs entwickelte Visual Studio-Erweiterung, die bei der Auflösung von Abhängigkeitskonflikten helfen soll. Sie automatisiert den Prozess der Identifizierung und Behebung dieser Probleme. Weitere Details finden Sie auf der NuGetSolver-Seite auf dem Visual Studio Marketplace und wir freuen uns, Ihr Feedback zu Ihrer Erfahrung zu hören.