Was bedeuten gelbe Warndreiecke für Abhängigkeiten in Visual Studio 2017?


96

Ich habe gerade meine PCL-Bibliothek in eine neue .Net Standard-Bibliothek konvertiert und habe einige gelbe Warndreiecke für meine unten gezeigten Abhängigkeiten:

Geben Sie hier die Bildbeschreibung ein

Während der Konvertierung wurden alle Nuget-Pakete einschließlich der Abhängigkeiten übertragen, sodass es sich um Dulikate handeln konnte.

Wie finde ich heraus, was die gelben Warndreiecke darstellen?

BEARBEITEN

Protokolle erstellen:

Um zu verhindern, dass NuGet Pakete während der Erstellung wiederherstellt, öffnen Sie das Dialogfeld "Visual Studio-Optionen", klicken Sie auf den Knoten "Paketmanager" und deaktivieren Sie "NuGet darf fehlende Pakete während der Erstellung herunterladen". NU1605: Downgrade des Pakets festgestellt: NUnit von 3.8.1 auf 2.6.4. Verweisen Sie direkt aus dem Projekt auf das Paket, um eine andere Version auszuwählen.
MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1)
MyProj.UI.Tests -> NUnit (> = 2.6.4) NU1605: Downgrade des Pakets festgestellt: NUnit von 3.8.1 auf 2.6.4. Verweisen Sie direkt aus dem Projekt auf das Paket, um eine andere Version auszuwählen. MyProj.UI.Tests.iOS -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1) MyProj.UI.Tests.iOS -> NUnit (> = 2.6.4) NU1605: Erkanntes Paket-Downgrade: NUnit von 3.8.1 auf 2.6.4. Verweisen Sie direkt aus dem Projekt auf das Paket, um eine andere Version auszuwählen.
MyProj.UI.Tests.Android -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1) MyProj.UI.Tests.Android -> NUnit (> = 2.6.4)


Bewegen Sie den Mauszeiger über sie und es wird Ihnen sagen. Meistens liegt es daran, dass es sie nicht finden / lösen kann oder ein Konflikt besteht. Wenn Sie auch in das Fehlerfenster schauen, wird der Fehler in der Lösung tendenziell erklärt.
Nkosi

51
@ Nkosi schwebt über ihnen zeigt nichts für mich
user1

2
Diese Referenzen werden beim Erstellen Ihres Programms verwendet. Aber sie sind auch für die IDE von Bedeutung. Sie müssen sie auflösen, um IntelliSense bereitzustellen. Wenn dies fehlschlägt, erhalten Sie das Warndreieck. Verwenden Sie Build> Build, um eine Fehlermeldung zu erhalten.
Hans Passant

27
Als mir das passierte, gab es keine Build-Warnungen. Das Warnsymbol steckte einfach in der Benutzeroberfläche. Durch das Entladen und erneute Laden des Projekts wurde das Problem behoben.
StackOverthrow

1
@TKK: Ich denke, das dauert nur ein paar Minuten, dann erscheinen die Warndreiecke in der Benutzeroberfläche. Zumindest ist mir das passiert, nachdem ich die Lösung wieder geöffnet habe. Ich dachte, es sei zuerst behoben, aber dann tauchten die Warndreiecke plötzlich wieder auf.
PussInBoots

Antworten:


64

So banal es auch klingt, versuchen Sie es neu und starten Sie VS neu - und fahren Sie mit Ihrem Tag fort :)


5
Vielen Dank, dass Sie mich an die klassische Lösung "Versuchen Sie es neu zu starten" erinnert haben :). Ich habe mich die letzte Stunde gefragt, warum VS meine Pakete entfernt hat, als ich meine Lösung erstellt habe. Ich habe VS neu gestartet und alles hat wie erwartet funktioniert. / ugh
Ryan E.

1
Das klassische "Herunterfahren" ist nicht immer die Lösung aller Übel der Welt: /
sgrysoft

Ich habe heute mein Visual Studio 2019 mit der neuesten Version (16.5.1) aktualisiert, um genau zu sein. Und das Problem besteht immer noch, aber diese Lösung funktioniert immer noch :)
Willy David Jr

Schalten Sie es aus und wieder ein :-D
Don Ch

60

Wenn dotnet restoreSie eine komplizierte Manipulation ausführen , erhalten Sie viel mehr Informationen als im Fehlerfenster oder im Lösungs-Explorer.

Sie können diesen Befehl in der Package Manager-Konsole ausführen:

Extras> NuGet Package Manager> Package Manager-Konsole


4
Nur die Lösung erneut zu öffnen, anstatt VS neu zu starten, hat auch für mich funktioniert.
Quido

Warum sollte ich Dotnet wiederherstellen? muss der Build das nicht tun?
Pabrams

11

Im Build-Protokoll habe ich Folgendes bemerkt:

C: \ Programme \ dotnet \ sdk \ 2.0.2 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.NET.Sdk.DefaultItems.targets (199,5): Warnung: Eine PackageReference für 'NETStandard.Library' war in Ihrem Projekt enthalten. 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

Ich habe daher alle Pakete deinstalliert, die als Abhängigkeiten für das .Net Standard hier aufgeführte Nuget aufgeführt waren:

.NETStandard 1.1

  • Microsoft.NETCore.Platforms (> = 1.1.0)

  • System.Collections (> = 4.3.0)

  • System.Collections.Concurrent (> = 4.3.0)

  • System.Diagnostics.Debug (> => 4.3.0)

  • System.Diagnostics.Tools (> = 4.3.0)

  • System.Diagnostics.Tracing (> = 4.3.0)

  • System.Globalisierung (> = 4.3.0)

  • System.IO (> = 4.3.0)

  • System.IO.Compression (> = 4.3.0)

  • System.Linq (> = 4.3.0)

  • System.Linq.Expressions (> = 4.3.0)

  • System.Net.Http (> = 4.3.2)

  • System.Net.Primitives (> = 4.3.0)

  • System.ObjectModel (> = 4.3.0)

  • System.Reflection (> = 4.3.0)

  • System.Reflection.Extensions (> = 4.3.0)

  • System.Reflection.Primitives (> = 4.3.0)

  • System.Resources.ResourceManager (> = 4.3.0)

  • System.Runtime (> = 4.3.0)

  • System.Runtime.Extensions (> = 4.3.0)

  • System.Runtime.InteropServices (> = 4.3.0)

  • System.Runtime.InteropServices.RuntimeInformation (> => 4.3.0)

  • System.Runtime.Numerics (> = 4.3.0)

  • System.Text.Encoding (> = 4.3.0)

  • System.Text.Encoding.Extensions (> = 4.3.0)

  • System.Text.RegularExpressions (> = 4.3.0)

  • System.Threading (> = 4.3.0)

  • System.Threading.Tasks (> = 4.3.0)

  • System.Xml.ReaderWriter (> = 4.3.0)

  • System.Xml.XDocument (> = 4.3.0)

Und die gelben Warnungen verschwanden.

Von hier aus: https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-standard-2-0/

Ich habe auch festgestellt, dass Sie die NoWarn-Eigenschaft wie folgt verwenden können:

<ItemGroup>
  <PackageReference Include="Huitian.PowerCollections" Version="1.0.0" NoWarn="NU1701" />
</ItemGroup>

6

Versuchen Sie dies nur zu Dokumentationszwecken für neue Personen mit diesem Problem , und Sie werden sich daran erinnern: D.

Wenn Sie zu: Extras> NuGet Administrator> Konfigurationen gehen. und Sie haben "Nuget zulassen ...." und "automatisch prüfen ...." überprüft.

Das einzige, was Sie tun müssen, ist auf die Schaltfläche "Alle NuGet-Caches löschen" zu klicken.

Das war's, Sie müssen keine manuellen Gedanken bearbeiten, die gefährlich sein können. Glauben Sie mir, ich muss einige der Schritte ausführen, als hier viel Zeit zu beschreiben, und versuchen Sie mehr als 5 Schritte der offiziellen Microsoft-Dokumentation für Dieses Problem können Sie hier überprüfen: https://docs.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio

Aber nur das Reinigen des Caches löst alle Probleme


6

Das gelbe Dreieck bedeutet, dass die physischen Paketdateien nicht mehr auf der Festplatte verfügbar sind.

Dies geschieht normalerweise, wenn Sie eine get latest versionAnforderung zur Quellcodeverwaltung in TFS ausgeben , insbesondere wenn Sie einen neuen Computer verwenden und Ihren Projektcode vom TFS-Server abrufen möchten.

low quality internet connectionDies kann auch dazu führen, dass fast immer Daten verloren gehen oder heruntergeladene Dateien beschädigt werden.

Geben Sie hier die Bildbeschreibung ein

Wenn bei dem Problem einige Pakete fehlen, können Sie die packages.configDatei ändern und diese Pakete aus dem entfernen packages.configund die fehlenden Pakete über den Nuget-Paket-Manager erneut installieren.

Wenn dem Problem jedoch mehr als ein paar Pakete fehlen, gehe ich am besten und schnellsten wie folgt vor, um fehlende Pakete abzurufen:

  1. Eröffnung einer neuen Instanz von Visual Studio
  2. Erstellen Sie eine neue Projektlösung mit demselben Projekttyp wie die mit fehlenden Paketen (Beispiel: ASP.Net MVC mit individuellem Benutzerkonto).
  3. Aktualisieren Sie die Pakete des neuen Projekts auf den neuesten Stand, um den Paketversionen der vorherigen Projektlösung zu entsprechen
  4. Öffnen Sie den Datei-Explorer und navigieren Sie in der von Ihnen erstellten neuen Lösung zum Paketordner
  5. Kopieren Sie den gesamten Inhalt des Ordners, Packagesindem Sie alle auswählen. Hinweis: Kopieren Sie NICHT den Paketordner selbst, sondern nur den Inhalt des Ordners
  6. Fügen Sie dies in Ihre vorherige Lösung (Lösung mit den fehlenden Paketen) in den PackagesOrdner ein , in dem vorhandene Elemente überschrieben werden.
  7. Gehen Sie im Lösungs-Explorer zu Ihrem Paketordner, erweitern Sie ihn und klicken Sie auf die Schaltfläche Aktualisieren, um festzustellen, dass viele fehlende Pakete jetzt ohne gelbes Dreieck angezeigt werden
  8. Schließlich werden Sie einige fehlende Pakete haben, die beim Erstellen einer neuen Lösung nicht standardmäßig enthalten sind. Sie müssen sie aus Ihrer Datei packages.config (der Datei, die Nuget-Paketmanager lesen) entfernen, um die installierten Pakete zu ermitteln Installieren Sie diese wie neu mit dem Nuget-Paketmanager.

Beachten Sie, dass solche Probleme im Zusammenhang mit fehlenden Dateien in Projekten immer schwer zu beheben sind und von der Erfahrung der Entwickler abhängen. Erwarten Sie daher keine einfache Lösung für dieses Problem.

Microsoft gibt an, dass es sich um einen Fehler handelt, der jedoch in jeder Version von Visual Studio auftreten kann.


1
In Bezug auf Projekte schien ein Neustart von Visual Studio (2019) das Problem für mich zu beheben.
Steve Smith

Es gibt keine packages.coinfig
pabrams

4

Wenn Sie das Warnsymbol haben, aber keine Warnungen und nichts tatsächlich falsch zu sein scheint, klicken Sie mit der rechten Maustaste auf das Projekt> Projekt entladen> klicken Sie erneut mit der rechten Maustaste auf das Projekt> Projekt neu laden. Das Symbol wurde für einen Moment angezeigt und dann in Visual Studio 2019 für mich gelöscht. Dadurch wird ein vollständiger Neustart von Visual Studio vermieden.


2

Seltsamerweise musste ich bei meinem .Net Core 3-Projekt einfach im Kontext des Projekts auf "Projektabhängigkeiten laden" klicken. Dann verschwand das Warnsymbol.

Hilfreicher Screenshot:

Geben Sie hier die Bildbeschreibung ein


1

Ich habe gerade Visual Studio auf 16.4.4 aktualisiert und das Problem wurde behoben. Die Referenz ist fest und kein gelbes Dreieck mehr. Vielen Dank.


0

Es könnte 1 Paket geben, das dazu führen kann, dass alle anderen nicht geladen werden. Versuchen Sie, Pakete von .csproj einzeln zu kommentieren, und finden Sie heraus, welches Problem darin besteht, sie einzugrenzen.


0

Wenn ich versuche, Microsoft.NETCore.Platformswie in der markierten Antwort angegeben zu deinstallieren , wird folgende Fehlermeldung angezeigt:

'Microsoft.NETCore.Platforms.1.1.0' kann nicht deinstalliert werden, da 'NETStandard.Library.2.0.3' davon abhängt.

Ich habe die anderen Pakete deinstalliert, erhalte aber trotzdem den NETSDK1023Fehler:

Eine PackageReference 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

Jetzt habe ich meine .csproj bearbeitet und den folgenden Teil gelöscht

<PackageReference Include="NETStandard.Library" Version="2.0.3" />

wie in https://aka.ms/sdkimplicitrefs unter Empfehlungen angegeben :

Wenn Sie auf .NET Core oder .NET Standard abzielen, dürfen Sie niemals über ein Element in Ihrer Projektdatei explizit auf die Microsoft.NETCore.Appoder die NETStandard.LibraryMetapakete verweisen <PackageReference>.

Jetzt ist die Warnung weg!


0

Ich habe diesen Fehler festgestellt, als ich das Projekt geklont habe. Der Hauptgrund war, dass die Nuget-Pakete nicht wiederhergestellt werden konnten und ich eine Lösung finde, indem ich nuget.org nur zur aktiven Ressource mache.

Geben Sie hier die Bildbeschreibung ein

Stellen Sie sicher, dass Sie Nuget.org als einzige aktive Ressource auswählen.

Ich hoffe es hilft


0

Keines der oben genannten hat bei mir funktioniert. Ich hatte ein Projekt in der Lösung mit Warndreiecken von den Abhängigkeiten zu anderen Projekten in der Lösung, die viele rote Fehler in VS verursachten. Es würde jedoch gut funktionieren, laufen und debuggen. Ich habe das Projekt schließlich mit einem Rechtsklick auf den Projektnamen im Lösungsbaum entladen und dann das Projekt neu geladen, und jetzt ist alles zufrieden. Danke Visual Studio, smh. Ich benutze VS 2019 16.7.1


0

Das gelbe Ausrufezeichen ist normalerweise auf fehlende Referenz oder nicht unterstützte DLL zurückzuführen. Wenn Sie ein Repository klonen, besteht die Möglichkeit, dass viele der Nugget-Pakete einen gelben Ausruf anzeigen. Wenn Sie überprüft haben, ob die Projektversion korrekt ist und das Problem weiterhin besteht, können Sie die folgende Lösung ausprobieren.

Wählen Sie in der Paketmanagerkonsole das Projekt aus, in dem dieses Problem auftritt, und geben Sie den folgenden Befehl ein.

Update-Package -Reinstall

Dadurch werden alle Pakete neu installiert. Dieser Befehl aktualisiert nicht die Version von NuGet-Paketen, sondern erzwingt einfach eine Neuinstallation.

Diese Lösung hat in meinem Fall funktioniert. Ich benutze VS2019. Hoffe, das wird auch anderen helfen.


-3

Wenn Sie kein Problem damit haben, alle NuGet-Pakete zu aktualisieren, die dieses Problem möglicherweise beheben.

Tools - Menü -> NuGet Package Manager -> Manage Nuget Packages für Lösung . Wenn dieses Menü angezeigt wird, klicken Sie auf die Registerkarte Aktualisieren und dann auf die Schaltfläche Alle aktualisieren.


4
Würde das nicht alle Pakete auf die neueste Version aktualisieren? Dies ist möglicherweise nicht wünschenswert, wenn eine bestimmte (nicht neueste) Version eines oder mehrerer Pakete erforderlich ist.
Gertsen

Wenn Sie bereits die neuesten Pakete verwenden, ist dies eine hervorragende Lösung. Mein Problem wurde sofort behoben.
n4rzul

1
Dies ist nicht immer die Lösung. Manchmal gibt es Pakete im Projekt, die nicht aktualisiert werden sollten.
Caras
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.