Partager via


Résolution des problèmes des packages installés

Parfois, vous souhaiterez peut-être valider la source d’où provient un package spécifique. Voici quelques méthodes permettant de vérifier.

Remarque

Certaines sources de package prennent en charge un concept appelé sources en amont. Par exemple, source en amont Azure Artifacts. Les clients NuGet ne savent pas si un package provient d’une source en amont ou non. Par conséquent, toute journalisation de la source du package répertorie la source configurée, et non la source en amont.

Fichier .nupkg.metadata dans le dossier de packages globaux

Lorsqu’un package est extrait dans le dossier de global-packages, un fichier .nupkg.metadata est écrit. À partir de NuGet 5.9.0, NuGet ajoute la source du package. Voir ci-dessous pour mapper les versions de NuGet aux versions du Kit de développement logiciel (SDK) Visual Studio ou .NET. Par exemple :

{
  "version": 2,
  "contentHash": "bw3R9q8cVNhWXNpnvWb0OGP4HadS4zvClq+T1zf7AF+tLY1haZ2AvbHidQekf4PDv1T40c6brZeT/V0IBq7cEQ==",
  "source": "https://api.nuget.org/v3/index.json"
}

Remarque

Si votre dossier de packages globaux contient des packages extraits avant une mise à niveau vers une version plus récente d’outils fonctionnant avec NuGet 5.9.0, le fichier .nupkg.metadata sera en version 1 et ne contiendra pas la source du package. Vous pouvez effacer votre dossier global-packages pour vous assurer que tous les packages contiennent la source du package.

Conseil

NuGet écrit le fichier .nupkg.metadata dans le dossier global-packages uniquement. Les projets utilisant packages.config utilisent un dossier de packages de solution, qui ne crée pas de fichier .nupkg.metadata.

Message du journal pour les packages installés

À partir de NuGet 5.9.0, NuGet produit la source du package dans le message de restauration indiquant qu’un package a été installé. Par exemple :

Installed Moq 4.16.1 from https://api.nuget.org/v3/index.json with content hash bw3R9q8cVNhWXNpnvWb0OGP4HadS4zvClq+T1zf7AF+tLY1haZ2AvbHidQekf4PDv1T40c6brZeT/V0IBq7cEQ==.

Conseil

Ce message est produit au niveau normal/détaillé de verbosité. Par défaut, Visual Studio et l’interface CLI dotnet sont réglés sur la valeur minimale de verbosité. Ce message ne sera donc pas visible par défaut. Par défaut, les msbuild et les outils CLI nuget sont réglés sur la valeur de verbosité normale. Ce message sera donc visible par défaut.

Message de journal HTTP

Lorsqu’un package n’est pas disponible localement, ni dans le dossier global-packages, ni dans un dossier de secours, ni dans une source de fichier local, NuGet le télécharge à partir de n’importe quelle source de package configurée via HTTP. Les requêtes et réponses HTTP sont journalisées au niveau de verbosité normal. Vous ne devez voir qu’une seule requête et qu’une seule réponse par version du package. Par exemple :

info :   GET https://api.nuget.org/v3-flatcontainer/moq/index.json
info :   OK https://api.nuget.org/v3-flatcontainer/moq/index.json 56ms
info :   GET https://api.nuget.org/v3-flatcontainer/moq/4.16.1/moq.4.16.1.nupkg
info :   OK https://api.nuget.org/v3-flatcontainer/moq/4.16.1/moq.4.16.1.nupkg 3ms

Si les fichiers ont été récemment téléchargés, ils peuvent être récupérés à partir du cache HTTP de NuGet

CACHE https://api.nuget.org/v3-flatcontainer/moq/index.json
CACHE https://api.nuget.org/v3-flatcontainer/moq/4.16.1/moq.4.16.1.nupkg

Le format d’URL peut être différent suivant différentes implémentations de serveur HTTP NuGet et de s’il implémente le protocole HTTP NuGet V2 ou le V3.

Si plusieurs sources HTTP sont définies pour nuget.config, vous verrez plusieurs requêtes adressées au fichier index.json de chaque package, une pour chaque source. Mais il n’y aura qu’un seul nupkg téléchargé pour chaque version du package.

Message du journal des signatures de package

Si le package téléchargé est signé, NuGet valide la signature et journalise le message quand réglé sur le niveau détaillé de verbosité :

PackageSignatureVerificationLog: PackageIdentity: Moq.4.16.1 Source: https://api.nuget.org/v3/index.json PackageSignatureValidity: True

Ce message sera enregistré que le package provienne d’une source de package HTTP ou qu’il soit copié à partir d’une source de package local. Il ne sera pas produit si le package est déjà disponible dans le dossier global-packages ou dans un dossier de secours.

Important

En raison de la suppression de la confiance de l’autorité de confiance VeriSign NuGet a désactivé la vérification des packages signés sur certaines plateformes dans certaines versions de NuGet et du Kit de développement logiciel (SDK) .NET. Par conséquent, les mêmes packages peuvent avoir des journaux PackageSignatureVerificationLog, ou bien ces journaux peuvent être manquants, selon la plateforme sur laquelle vous exécutez la restauration, et la version de .NET ou NuGet que vous utilisez.

Mappage de version NuGet

Les versions suivantes de NuGet comportent des modifications importantes concernant la journalisation de la source du package :

Version de NuGet Version de Visual Studio Version du Kit de développement logiciel (SDK) .NET
NuGet 5.9.0 Visual Studio 2019 16.9.0 Kit de développement logiciel (SDK) 5.0.200 .NET 5