Warnung zum Herabstufen des Pakets erkannt (Dotnet Core, vs 2017)

73

Ich habe gerade alle meine Nuget-Pakete für meine Lösung aktualisiert (Dotnet Core 1.1-Projekt).

Ich erhalte jetzt die folgenden Warnungen und weiß nicht wirklich, was sie bedeuten.

Warnung zum Downgrade von NETStandard.Library


Update: Ich erhalte immer noch die oben genannten Warnungen. Meine Webprojekte warnen vor dem Microsoft.NETCore.App-Paket (siehe Abbildung unten) und meine lib-Projekte warnen vor NETStandard.Library (siehe Abbildung oben).

Microsoft.NETCore.App-Downgrade-Warnung

Beim Versuch, Microsoft.NETCore.App im NuGet-Paketmanager zu aktualisieren, wird folgende Fehlermeldung angezeigt:

NuGet-Upgrade-Fehler

Ich hoffe, jemand kann mir helfen, diese Warnungen loszuwerden und alles einzurichten, was es sein soll, damit ich alle meine Pakete aktualisieren kann.

Nik
quelle
Können Sie den Inhalt Ihrer .csproj-Datei veröffentlichen?
Drew Noakes

Antworten:

33

Diese Situation kam mir nach dem Öffnen einer vorhandenen Lösung in den Sinn, aber anstelle von Warnungen handelte es sich um Fehler.

Ich habe die Datei YourAwesomeApp.csproj geöffnet und die Fehler "Herabgestuftes Paket erkannt" nacheinander durchgesehen und die Version dieser Werbebuchung manuell von der vorhandenen Version in die angegebene Version geändert, die im Fehler selbst angezeigt wurde.

Wenn der Fehler beispielsweise besagt, dass ein Downgrade "SqlServer 1.0.4 -> 1.0.3" erkannt hat, suchen Sie die Zeile für das Paket SqlServer und bearbeiten Sie die Version von 1.0.3 auf 1.0.4.

Diese Fehler sollten nach dem Erstellen des Projekts verschwinden.

Der Nachteil dabei, dass ich diesmal nur 5 Fehler hatte, aber was ist, wenn das Projekt einer anderen Person etwa 50 solcher Fehler enthielt? Dann wäre die Aufgabe dieser Person, diese Zeilen manuell zu bearbeiten, sehr mühsam und zeitaufwändig.

Jimmy Shaw
quelle
2
Dies funktioniert für mich, wenn ich danach ein dotnet restoreProjekt zum fehlgeschlagenen Erstellen durchgeführt habe.
Aage
1
Arbeitete für mich, musste aber eine "saubere Lösung" machen und dann bauen.
Neville
Herabgestuftes Paket: Microsoft.Extensions.Logging von 3.1.3 auf 2.2.0. Verweisen Sie direkt aus dem Projekt auf das Paket, um eine andere Version auszuwählen. Bei der Suche nach Microsoft.Extensions.Logging habe ich keine gefunden.
Gopi
25

Gemäß der obigen Antwort besteht die Arbeitslösung darin, die folgende Zeile aus Ihrer csproj-Datei zu entfernen.

Web App-Projekt:

<RuntimeFrameworkVersion>1.0.4</RuntimeFrameworkVersion>

Lib-Projekt:

<NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
Nik
quelle
22

Dies geschieht im Allgemeinen, weil für das Element, das Sie installieren möchten, eine neuere Version einer Unterabhängigkeit erforderlich ist, als Sie bereits in Ihr Projekt aufgenommen haben.

Die Lösung besteht darin, die vorhandene Abhängigkeit in Ihrem Projekt vor der Installation des Pakets zu aktualisieren oder zu löschen.

Beispiel:

Erkanntes Downgrade des Pakets: Newtonsoft.Json von 9.0.0 auf 8.0.0.

Dies bedeutet , dass Newtonsoft.Json 8.0.0 bereits als Abhängigkeit in Ihrem Projekt aufgeführt ist. Für das zu installierende Paket ist jedoch mindestens Version 9.0.0 als Abhängigkeit erforderlich.

Das ist weil Visual Studio diese Abhängigkeit nicht automatisch aktualisiert, da Sie eine explizite Version für Ihr Projekt angegeben haben. Sie können entweder die Abhängigkeit in Ihrem Projekt auf die minimal erforderliche Version aktualisieren oder sie aus Ihrem Projekt entfernen und das von Ihnen installierte Paket damit umgehen lassen.

Um dies zu beheben, bedeutet dies in unserem obigen Beispiel, dass Sie 'Newtonsoft.Json 8.0.0' suchen und auf Version '9.0.0' aktualisieren oder es einfach aus Ihrem Projekt entfernen, bevor Sie Ihr Paket installieren.

Stephen Elmendorf
quelle
19

In meinem Fall wurde keine dieser Eigenschaften in meinen csproj-Dateien festgelegt.

Ich musste VS anweisen, diese Pakete über NuGet zu aktualisieren.

Die Warnungen wurden für mich angezeigt, nachdem die Warnung für den expliziten Verweis auf die implizite Abhängigkeit .NETCore.App nach dem Wechsel von 1.0 auf 1.1 aufgelöst wurde.

UPDATE 21/09/17

Dies scheint sich auch auf Upgrades auf 2.0 auszuwirken, die Auflösung ist gleich. Aktualisieren Sie diese Pakete manuell mit NuGet. Vielen Dank an IbrarMumtaz für diesen Hinweis!

Gerard Wilkinson
quelle
Das passiert mir jetzt ab 1.1> 2.0. :?
IbrarMumtaz
Es ist fast definitiv am besten, Ihre Paketversionen explizit festzulegen, anstatt die Warnung zu ignorieren oder eine andere allgemeinere Lösung zu versuchen. Wenn Sie die Downgrades vermeiden möchten, geben Sie dies ausdrücklich an. Dies ist die beste Antwort.
Dan Field
6
Es sei denn, Nuget lässt dich nicht! Albtraum.
Oliver
13

Ich konnte einen solchen Fehler beheben, indem ich NoWarn in cproj hinzufügte

<Project Sdk="Microsoft.NET.Sdk">

 <PropertyGroup>
    <NoWarn>$(NoWarn);NU1605</NoWarn>
  </PropertyGroup>

...
</Project>

Möglicherweise möchten Sie es nur vorübergehend während eines Upgrades mehrerer Pakete hinzufügen und später entfernen.

Mrapi
quelle
11

Ich konnte diese Warnungen in meinem Projekt entfernen, indem ich das <NetStandardImplicitPackageVersion>Element aus der csprojDatei entfernte.

In diesem Artikel finden Sie einige Informationen zu impliziten Metapaketen, die die Hauptursache für dieses Problem zu sein scheinen.

Möglicherweise müssen Sie auch einige Abhängigkeiten aktualisieren. Zum Beispiel musste ich ein Upgrade BenchmarkDotNetvon 0.10.1auf durchführen 0.10.3, um einige Warnungen wie die, die Sie sehen, zu entfernen.

Drew Noakes
quelle
6

Versuchen Sie zu entfernen :

<IsPackable>false</IsPackable>

aus Ihrer Projektdatei - das hat bei mir funktioniert!

Wenn Sie immer noch NU1605Fehlercode haben, können Sie diesen ignorieren, indem Sie Ihrer Projektdatei Folgendes hinzufügen:

<PropertyGroup>
    <NoWarn>NU1605</NoWarn>
</PropertyGroup>
Emil
quelle
Ich habe die Nowarn-Lösung verwendet, um die neueste Version 3.1.0-Preview4.19579.2 in Azure Webapp veröffentlichen zu können.
Magnus Karlsson
Ja, das funktioniert, solange Sie diese spezielle Warnung in Ihrem Build ignorieren können :)
Emil
6

Versuchen Sie es mit NuGet

Ich bekam:

Fehler NU1605: Downgrade des Pakets festgestellt: System.Net.NameResolution von 4.3.0 auf 4.0.0. Verweisen Sie auf das Paket direkt aus dem Projekt, um eine andere Version auszuwählen.

Also habe ich das Paketverzeichnis durch Ausführen (im Projektordner) referenziert:

dotnet add package System.Net.NameResolution

Siehe NuGet-Fehler - NU1605

Problem:

Ein Abhängigkeitspaket hat eine Versionsbeschränkung für eine höhere Version eines Pakets als die letztendlich aufgelöste Wiederherstellung angegeben. Das heißt, aufgrund der Regel "Nächste Gewinne" beim Auflösen von Paketen hat ein näheres Paket in der Grafik möglicherweise ein entferntes Paket überschrieben.

Lösung:

Fügen Sie einen direkten Verweis auf das Projekt für die höhere Version des Pakets hinzu, das Sie verwenden möchten.

Robert Brooker
quelle
2

Das manuelle Entfernen der Nuget-Paketabhängigkeiten aus dem Projekt und dem Install-Package für jedes von ihnen hat das Problem in meinem Fall behoben.

Max Favilli
quelle
2

In meinem Fall bezog sich dieser Fehler nicht auf .NET Core, sondern auf .NET Standard.

Ich hatte zwei Bibliotheken A und B. Bibliothek A hing von einem Nuget-Paket X ab, und Bibliothek B hing von A ab. Nachdem ich X auf eine neue Version aktualisiert hatte, begann es irgendwie abhängig von einer neuen Version des NETStandard.Library-Nuget-Pakets (von 2.0.2 bis 2.0.3), wodurch der Build von B mit dem Fehler unterbrochen wurde Detected package downgrade: NETStandard.Library from 2.0.3 to 2.0.2. Reference the package directly from the project to select a different version.

Nachdem ich das NETStandard.Library-Nuget-Paket als Abhängigkeit von B hinzugefügt hatte (offensichtlich auf die neueste Version 2.0.3 ausgerichtet), verschwand der Fehler, selbst wenn eine neue Warnung angezeigt wurde:

/usr/local/share/dotnet/sdk/2.1.403/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.DefaultItems.targets(5,5): Warnung NETSDK1023: Eine Paketreferenz für 'NETStandard.Library 'wurde in Ihr Projekt aufgenommen. Auf dieses Paket wird vom .NET SDK implizit verwiesen, und Sie müssen es normalerweise nicht aus Ihrem Projekt heraus referenzieren. Weitere Informationen finden Sie unter https://aka.ms/sdkimplicitrefs (NETSDK1023) (GWallet.Frontend.XF).

knocte
quelle
Ich habe das Projekt "B" aktualisiert, wie Sie erklärt haben, es hat bei mir nicht funktioniert. aber danke. Dies gibt mir etwas Verständnis, um eine andere Lösung zu finden
Pajri Aprilio
Bitte posten Sie Ihre Lösung als neue Antwort
Knocte
noch nicht gefunden. Aber ich versuche zuerst, die Abhängigkeit zwischen A und B zu entfernen, dann A und B von derselben Version von X abhängig zu machen und dann wieder die Abhängigkeit zwischen A und B hinzuzufügen
Pajri Aprilio
1

Ich habe versucht, Microsoft.AspNetcore.MVC auf Version 2+ zu aktualisieren. Die Lösung für mich bestand darin, alle anderen Abhängigkeiten zuerst auf 2+ zu aktualisieren und schließlich .MVC zu aktualisieren.

Eric
quelle
1

Ich könnte das Problem lösen, indem ich eine frühere Version des Pakets herunterlade, die das Problem verursacht. Dies scheint darauf zurückzuführen zu sein, dass abhängig von einer nicht installierten .NET Standard-Version dies auch durch Aktualisieren von Visual Studio behoben werden sollte.

mshwf
quelle
1

Wenn Sie diesen Fehler für Razorin a erhalten netcoreapp3.1, müssen Sie nur das Projekt-SDK von Microsoft.NET.Sdk.Razorauf ändern Microsoft.NET.Sdk.

Boiethios
quelle
1
Wie macht man das im Fahrer?
Kuldeep
1
@ Kuldeep Öffnen Sie die csprojmit F4 und ersetzen Sie den Text
Boiethios
1

Ich hatte ein ähnliches Problem, bei dem mein Projekt eine Paketreferenz wie die folgende hatte:

Paketreferenzen:

Package A
Package B
    Package A

Da Projekt B auf Paket A verweist, habe ich gerade Paket A aus der Liste der Hauptpakete gelöscht und Paket B auf Paket A verweisen lassen. Ich habe die Lösung neu erstellt und das Problem war behoben.

Yair A.
quelle
0

Ich bin erst kürzlich auf dieses Problem gestoßen, und die Aktualisierung der NuGet-Pakete hat bei mir funktioniert.

Combatc2
quelle
Welche Nuget-Pakete genau? Diese Antwort ist sehr zweideutig
Knocte
0

Versuchen Sie daher, das Paket vollständig zu deinstallieren und erneut zu installieren. Stellen Sie sicher, dass Sie dies für alle Lösungsprojekte tun, auf die verwiesen wird. dann einfach reinigen und wieder aufbauen. das hat bei mir funktioniert.

eva
quelle
0

Das Problem für mich war, dass ich lokal Pakete installiert hatte, die höhere Versionen hatten als meine Projekte, auf die verwiesen wurde. Wenn Sie zu Tools > NuGet Package Manager gehen > Package Manager-Einstellungen > Allgemein > Alle NuGet-Caches löschen gehen und dann Ihre Lösung neu erstellen, werden die referenzierten Pakete installiert und die Fehler werden behoben.

Dystar
quelle
Dies ist eine sehr schlechte Idee, wenn Ihr Paket-Feed / Netzwerk langsam ist, da es sehr lange dauern kann, alle Ihre Pakete zu laden
Tharaka
Ich bin mir nicht sicher, warum dies die Dinge reparieren würde. Es wird jedoch eine Weile dauern, bis alle Ihre Pakete abgerufen sind.
Ben Power
0

Für mich wurde dies dadurch verursacht, dass auf ein Projekt mit einer bestimmten Version von Microsoft.AspNetCore.App verwiesen wurde, bei der mein Projekt nicht:

Mein Projekt :

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App"/>
  </ItemGroup>

referenziertes Projekt:

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.2" />
  </ItemGroup>

Fix (Mein Projekt):

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.2" />
  </ItemGroup>
Steef
quelle
-2

Ich habe dieses Problem dank dieser Antwort gelöst . Fügen Sie einfach die folgende Zeile in die <PropertyGroup>Tags in Ihrer .csprojDatei ein:

<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
Shaul Behr
quelle