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 |