Que signifient les triangles d'avertissement jaunes sur les dépendances dans Visual Studio 2017?


101

Je viens de convertir ma bibliothèque PCL en une nouvelle bibliothèque .Net Standard et j'ai quelques triangles d'avertissement jaunes sur mes dépendances ci-dessous:

entrez la description de l'image ici

Au cours de la conversion, tous les packages nuget ont été transférés, y compris les dépendances, de sorte qu'il puisse s'agir de dulicates.

Comment savoir ce que représentent les triangles d'avertissement jaunes?

ÉDITER

Créer des journaux:

Pour empêcher NuGet de restaurer des packages pendant la génération, ouvrez la boîte de dialogue Options de Visual Studio, cliquez sur le nœud Gestionnaire de package et décochez «Autoriser NuGet à télécharger les packages manquants pendant la génération». NU1605: rétrogradation de package détectée: NUnit de 3.8.1 à 2.6.4. Référencez le package directement à partir du projet pour sélectionner une version différente.
MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1)
MyProj.UI.Tests -> NUnit (> = 2.6.4) NU1605: rétrogradation de package détectée: NUnit de 3.8.1 à 2.6.4. Référencez le package directement à partir du projet pour sélectionner une version différente. MyProj.UI.Tests.iOS -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1) MyProj.UI.Tests.iOS -> NUnit (> = 2.6.4) NU1605: Déclassement du package détecté: NUnit de 3.8.1 à 2.6.4. Référencez le package directement à partir du projet pour sélectionner une version différente.
MyProj.UI.Tests.Android -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1) MyProj.UI.Tests.Android -> NUnit (> = 2.6.4)


Survolez-les et il vous le dira. La plupart du temps, c'est parce qu'il ne peut pas les trouver / résoudre ou qu'il existe un conflit. Si vous regardez également dans la fenêtre Erreur, cela a tendance à expliquer l'erreur dans la solution.
Nkosi

52
@Nkosi les survolant ne montre rien pour moi
user1

2
Ces références sont utilisées lorsque vous générez votre programme. Mais ils sont également importants pour l'EDI, il doit les résoudre afin de fournir IntelliSense. Si cela échoue, vous obtenez le triangle d'avertissement. Utilisez Build> Build pour obtenir un message d'erreur.
Hans Passant

27
Quand cela m'est arrivé, il n'y avait aucun avertissement de construction. L'icône d'avertissement était juste bloquée dans l'interface utilisateur. Le déchargement et le rechargement du projet ont résolu le problème.
StackOverthrow

1
@TKK: Je pense que cela ne dure que quelques minutes, puis les triangles d'avertissement apparaissent dans l'interface utilisateur. Du moins, c'est ce qui m'est arrivé après avoir rouvert la solution. Je pensais que c'était réglé au début, mais les triangles d'avertissement ont soudainement réapparu.
PussInBoots

Réponses:


68

Aussi banal que cela puisse paraître, essayez de reconstruire puis de redémarrer VS - et continuez votre journée :)


5
Merci de me rappeler la solution classique "essayez de le redémarrer" :). J'ai passé la dernière heure à me demander pourquoi VS supprimait mes packages lorsque j'ai créé ma solution. J'ai redémarré VS et tout a fonctionné comme prévu. / ugh
Ryan E.

1
Le "shut down"
classique

Je viens de mettre à jour aujourd'hui mon Visual Studio 2019 avec la dernière version (16.5.1) pour être exact. Et le problème existe toujours mais cette solution fonctionne toujours :)
Willy David Jr

Éteignez et rallumez :-D
Don Ch

62

exécutez dotnet restoreavant de faire toute manipulation compliquée, vous allez recevoir beaucoup plus d'informations que dans la fenêtre d'erreur ou l'explorateur de solutions.

Vous pouvez exécuter cette commande dans la console du gestionnaire de package:

Outils> Gestionnaire de package NuGet> Console du gestionnaire de package


4
Le simple fait de rouvrir la solution au lieu de redémarrer VS a également fonctionné pour moi.
Quido

pourquoi devrais-je faire une restauration dotnet? la construction ne doit-elle pas faire ça?
pabrams

11

Dans le journal de construction, j'ai remarqué ceci:

C: \ Program Files \ dotnet \ sdk \ 2.0.2 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.NET.Sdk.DefaultItems.targets (199,5): avertissement: Un PackageReference pour 'NETStandard.Library' était inclus dans votre projet. Ce package est implicitement référencé par le SDK .NET et vous n'avez généralement pas besoin de le référencer à partir de votre projet. Pour plus d'informations, voir https://aka.ms/sdkimplicitrefs

Je suis donc allé désinstaller tous les paquets qui étaient listés comme dépendances pour le .Net Standard nuget listé ici:

.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.Globalization (> = 4.3.0)

  • System.IO (> = 4.3.0)

  • Compression System.IO (> = 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)

  • Réflexion système (> = 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)

Et les avertissements jaunes ont disparu.

De là: https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-standard-2-0/

J'ai également trouvé que vous pouvez utiliser la propriété NoWarn comme ci-dessous:

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

7

Le triangle jaune signifie que le ou les fichiers physiques du package ont disparu et ne sont plus disponibles sur le disque dur.

Cela se produit généralement lors de l'émission d'une get latest versionrequête sur le contrôle de code source dans TFS, en particulier lors de l'utilisation d'une nouvelle machine, et que vous souhaitez obtenir le code de votre projet à partir du serveur TFS.

Cela peut également être causé par low quality internet connectionune perte de données ou des fichiers téléchargés corrompus.

entrez la description de l'image ici

Si le problème manque quelques packages, vous pouvez modifier le packages.configfichier et supprimer ces packages du packages.configet réinstaller les packages manquants via le gestionnaire de packages nuget.

Mais si le problème manque plus que quelques paquets, le moyen le meilleur et le plus rapide que j'utilise pour récupérer les paquets manquants est de:

  1. Ouverture d'une nouvelle instance de Visual Studio
  2. Créer une nouvelle solution de projet avec le même type de projet que celle avec des packages manquants (exemple: ASP.Net MVC avec compte d'utilisateur individuel)
  3. Mettez à jour les packages du nouveau projet avec les derniers pour correspondre aux versions de packages de la solution de projet précédente
  4. Ouvrez l'explorateur de fichiers et accédez au dossier packages dans la nouvelle solution que vous avez créée
  5. Copiez tout le contenu du dossier Packagesen sélectionnant tout, Remarque ne copiez PAS le dossier Packages lui-même uniquement le contenu à l'intérieur du dossier
  6. Collez cela dans votre solution précédente (solution avec les packages manquants), dans le Packagesdossier avec écraser les éléments existants.
  7. Accédez au dossier de vos packages dans l'explorateur de solutions et développez-le, puis cliquez sur le bouton d'actualisation pour voir que de nombreux packages manquants s'affichent désormais sans triangle jaune
  8. Enfin, vous vous retrouverez avec quelques packages manquants, qui ne sont pas inclus par défaut lorsque vous créez une nouvelle solution, vous devez les supprimer de votre fichier packages.config (le fichier que les gestionnaires de packages nuget) lit pour déterminer les packages installés, et installez-les comme neufs à l'aide du gestionnaire de paquets nuget.

Notez que ces problèmes liés aux fichiers manquants dans les projets sont toujours difficiles à résoudre et dépendent de l'expérience du développeur, alors ne vous attendez pas à une solution facile pour celui-ci.

Sur la cause de l'erreur, Microsoft dit qu'il s'agit d'un bogue, mais cela peut se produire sur n'importe quelle version de Visual Studio.


1
En ce qui concerne les projets, le redémarrage de Visual Studio (2019) m'a semblé résoudre le problème.
Steve Smith

il n'y a pas de packages.coinfig
pabrams

6

Juste à des fins de documentation pour une nouvelle personne avec ce problème, essayez ceci et vous vous souviendrez de moi: D

Si vous allez dans: Outils> Administrateur NuGet> Configurations. et vous avez "Autoriser nuget ...." et "vérifier automatiquement ...." vérifiés.

La seule chose que vous devez faire est de cliquer sur le bouton "Effacer tous les cache (s) NuGet"

Voilà, vous n'avez pas besoin de modifier les pensées manuelles qui peuvent être dangereuses, croyez-moi, j'ai l'habitude de faire certaines des étapes que de décrire ici beaucoup de temps, et d'essayer plus de 5 étapes de la documentation officielle de Microsoft pour ce problème, vous pouvez le vérifier ici: https://docs.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio

Mais le simple nettoyage du cache résout tous les problèmes


4

Si vous avez l'icône d'avertissement mais aucun avertissement et que rien ne semble vraiment être faux, cliquez avec le bouton droit sur le projet> Décharger le projet> cliquez à nouveau avec le bouton droit sur le projet> Recharger le projet. L'icône est apparue pendant un moment, puis a été effacée pour moi dans Visual Studio 2019. Cela évite un redémarrage complet de Visual Studio.


2

Curieusement, mon projet .Net Core 3 nécessitait que je clique simplement sur "Charger les dépendances du projet" dans le contexte du projet, puis l'icône d'avertissement a disparu.

Capture d'écran utile:

entrez la description de l'image ici


1

Je viens de mettre à jour Visual Studio vers 16.4.4 et le problème a été résolu. La référence est fixe et plus de triangle jaune. Merci.


1

J'ai rencontré cette erreur lorsque j'ai cloné le projet. la raison principale était que les packages Nuget ne pouvaient pas être restaurés et je trouve une solution en faisant de nuget.org la seule ressource active.

entrez la description de l'image ici

Assurez-vous de sélectionner Nuget.org comme seule ressource active.

J'espère que ça aide


1

Le signe d'exclamation jaune est généralement dû à une référence manquante ou à une DLL non prise en charge. Si vous clonez un référentiel, il y a des chances que de nombreux packages de nugget affichent une exclamation jaune. Si vous avez vérifié que la version du projet est correcte et que le problème persiste, vous pouvez essayer la solution ci-dessous.

Dans la console du gestionnaire de packages, sélectionnez le projet dans lequel vous rencontrez ce problème, puis tapez la commande suivante.

Update-Package -Reinstall

Cela forcera la réinstallation de tous les packages. Cette commande ne mettra pas à jour la version des packages NuGet, elle forcera simplement à les réinstaller.

Cette solution a fonctionné dans mon cas. J'utilise VS2019. J'espère que cela aidera également les autres.


0

Il peut y avoir 1 paquet qui peut empêcher le chargement de tous les autres. essayez de commenter les paquets de .csproj un par un et trouvez celui qui pose problème pour le réduire.


0

Si j'essaye de désinstaller Microsoft.NETCore.Platformscomme indiqué dans la réponse marquée, j'obtiens l'erreur suivante:

Impossible de désinstaller «Microsoft.NETCore.Platforms.1.1.0» car «NETStandard.Library.2.0.3» en dépend.

J'ai désinstallé les autres packages, mais j'obtiens toujours l' NETSDK1023erreur:

Un PackageReference pour «NETStandard.Library» a été inclus dans votre projet. Ce package est implicitement référencé par le SDK .NET et vous n'avez généralement pas besoin de le référencer à partir de votre projet. Pour plus d'informations, voir https://aka.ms/sdkimplicitrefs

Maintenant, j'ai édité mon .csproj et supprimé la partie suivante

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

comme indiqué dans https://aka.ms/sdkimplicitrefs sous Recommandations :

Lorsque vous ciblez .NET Core ou .NET Standard, ne faites jamais de référence explicite aux métapaquets Microsoft.NETCore.Appou NETStandard.Libraryvia un <PackageReference>élément de votre fichier projet.

Maintenant, l'avertissement est parti!


0

Aucun de ces éléments n'a fonctionné pour moi. J'avais un projet dans la solution avec des triangles d'avertissement sur les dépendances à d'autres projets de la solution, ce qui a causé beaucoup d'erreurs rouges dans VS. Cependant, il serait très bien construit, exécuté et débogué. J'ai finalement déchargé le projet avec un clic droit sur le nom du projet dans l'arborescence des solutions, puis rechargé le projet et tout est maintenant heureux. Merci Visual Studio, smh. J'utilise VS 2019 16.7.1


0

Redémarrer la machine

Je crois que ma situation était que certains processus ne libéraient pas certaines dll après un vidage du cache, puis toute acquisition de dll a échoué en raison de ce verrou (?).

En redémarrant ma machine et en donet restorerésolvant le problème, je pourrais reconstruire sans l'erreur de package manquante.


-3

S'il n'y a aucun problème avec vous pour mettre à jour tous les packages NuGet qui peuvent résoudre ce problème.

Menu Outils -> Gestionnaire de packages NuGet -> Gérer les packages Nuget pour la solution . Lorsque ce menu apparaît, cliquez sur l' onglet Mettre à jour et cliquez sur le bouton Tout mettre à jour .


4
Ne serait-ce pas mettre à jour tous les packages vers la dernière version? Cela peut ne pas être souhaitable si une version spécifique (non la plus récente) d'un ou plusieurs packages est requise.
Gertsen

Si vous utilisez déjà les derniers packages, c'est une excellente solution. Correction de mon problème tout de suite.
n4rzul

1
Ce n’est pas toujours la solution. Parfois, il y a des packages dans le projet qui ne doivent pas être mis à jour.
caras
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.