Gérer les dossiers de packages globaux, les dossiers de cache et les dossiers temporaires

Chaque fois que vous installez, mettez à jour ou restaurez un package, NuGet gère les packages et les informations associées dans plusieurs dossiers extérieurs à la structure de votre projet :

Nom Description et emplacement (par utilisateur)
global-packages C’est dans le dossier global-packages que NuGet installe les packages téléchargés. Chaque package est entièrement développé dans un sous-dossier qui correspond à son identificateur et à son numéro de version. Les projets au format PackageReference utilisent toujours les packages directement dans ce dossier. Lorsque packages.config est utilisé, les packages sont installés dans le dossier global-packages, puis copiés dans le dossier packages du projet.
  • Windows : %userprofile%\.nuget\packages
  • Mac/Linux : ~/.nuget/packages
  • Écrasez avec la variable d’environnement NUGET_PACKAGES, les paramètres de configurationglobalPackagesFolder ou repositoryPath (respectivement pour PackageReference et packages.config) ou la propriété MSBuild RestorePackagesPath (MSBuild uniquement). La variable d’environnement a la priorité sur le paramètre de configuration.
http-cache Le Gestionnaire de Package de Visual Studio (NuGet 3.x+) et l’outil dotnet stockent une copie des packages téléchargés dans ce cache (sous la forme de fichiers .dat), dans un sous-dossier par source de package. Les packages ne sont pas développés, et le cache a un délai d’expiration de 30 minutes.
  • Windows : %localappdata%\NuGet\v3-cache
  • Mac/Linux : ~/.local/share/NuGet/v3-cache
  • Écrasez avec la variable d’environnement NUGET_HTTP_CACHE_PATH.
temp Il s’agit du dossier dans lequel NuGet stocke les fichiers temporaires pendant ses différentes opérations.
  • Windows : %temp%\NuGetScratch
  • Mac : /tmp/NuGetScratch
  • Linux : /tmp/NuGetScratch<username>
  • Écrasez avec la variable d’environnement NUGET_SCRATCH.
  • plugins-cache 4.8+ Il s’agit du dossier dans lequel NuGet stocke les résultats de la demande de revendications de l’opération.
    • Windows : %localappdata%\NuGet\plugins-cache
    • Mac/Linux : ~/.local/share/NuGet/plugins-cache
    • Remplacez par la variable d’environnement NUGET_PLUGINS_CACHE_PATH.

    Remarque

    NuGet 3.5 et les versions antérieures utilisent packages-cache au lieu de http-cache, qui se trouve dans %localappdata%\NuGet\Cache.

    Les dossiers global-packages et cache dispensent en général NuGet de télécharger des packages déjà présents sur l’ordinateur, ce qui améliore les performances d’installation, de mise à jour et de restauration. Avec PackageReference, le dossier global-packages évite également de conserver les packages téléchargés à l’intérieur des dossiers du projet, où ils pourraient être ajoutés par inadvertance au contrôle de code source, et réduit l’impact global de NuGet sur le stockage de l’ordinateur.

    Pour récupérer un package, NuGet commence par regarder dans le dossier global-packages. Si la version exacte du package n’y figure pas, il vérifie toutes les sources de packages non HTTP. S’il ne trouve toujours pas le package, il le recherche dans http-cache, sauf si vous spécifiez --no-http-cache avec des commandes dotnet.exe ou -NoHttpCache avec des commandes nuget.exe. Si le package ne se trouve pas dans le cache ou que le cache n’est pas utilisé, NuGet le récupère sur HTTP.

    Pour plus d’informations, consultez Processus d’installation d’un package.

    Afficher l’emplacement des dossiers

    Vous pouvez voir les emplacements avec la commande nuget locals :

    # Display locals for all folders: global-packages, http cache, temp and plugins cache
    nuget locals all -list
    

    Sortie classique (Windows ; « user1 » est le nom d’utilisateur actuel) :

    http-cache: C:\Users\user1\AppData\Local\NuGet\v3-cache
    global-packages: C:\Users\user1\.nuget\packages\
    temp: C:\Users\user1\AppData\Local\Temp\NuGetScratch
    plugins-cache: C:\Users\user1\AppData\Local\NuGet\plugins-cache
    

    (package-cache est utilisé dans NuGet 2.x et apparaît avec NuGet 3.5 et les versions antérieures.)

    Vous pouvez aussi voir l’emplacement des dossiers avec la commande dotnet nuget locals :

    dotnet nuget locals all --list
    

    Sortie classique (Mac ; « user1 » est le nom d’utilisateur actuel) :

    info : http-cache: /home/user1/.local/share/NuGet/v3-cache
    info : global-packages: /home/user1/.nuget/packages/
    info : temp: /tmp/NuGetScratch
    info : plugins-cache: /home/user1/.local/share/NuGet/plugins-cache
    

    Sortie classique (Linux ; « user1 » est le nom d’utilisateur actuel) :

    info : http-cache: /home/user1/.local/share/NuGet/v3-cache
    info : global-packages: /home/user1/.nuget/packages/
    info : temp: /tmp/NuGetScratchuser1
    info : plugins-cache: /home/user1/.local/share/NuGet/plugins-cache
    

    Pour afficher l’emplacement d’un seul dossier, utilisez http-cache, global-packages, temp ou plugins-cache au lieu de all.

    Effacer les dossiers locaux

    Si vous rencontrez des problèmes d’installation de package ou que vous voulez vous assurer de l’installer à partir d’une galerie à distance, utilisez l’option locals --clear (dotnet.exe) ou locals -clear (nuget.exe), en spécifiant le dossier à effacer, ou all pour tous les effacer :

    # Clear the 3.x+ cache (use either command)
    dotnet nuget locals http-cache --clear
    nuget locals http-cache -clear
    
    # Clear the 2.x cache (NuGet CLI 3.5 and earlier only)
    nuget locals packages-cache -clear
    
    # Clear the global packages folder (use either command)
    dotnet nuget locals global-packages --clear
    nuget locals global-packages -clear
    
    # Clear the temporary cache (use either command)
    dotnet nuget locals temp --clear
    nuget locals temp -clear
    
    # Clear the plugins cache (use either command)
    dotnet nuget locals plugins-cache --clear
    nuget locals plugins-cache -clear
    
    # Clear all caches (use either command)
    dotnet nuget locals all --clear
    nuget locals all -clear
    

    Les packages utilisés par des projets actuellement ouverts dans Visual Studio ne sont pas effacés du dossier global-packages.

    À compter de Visual Studio 2017, utilisez la commande de menu Outils > Gestionnaire de package NuGet > Paramètres du Gestionnaire de package, puis sélectionnez Effacer tous les caches NuGet. À l’heure actuelle, la gestion du cache n’est pas disponible avec la console du Gestionnaire de package. Dans Visual Studio 2015, utilisez plutôt les commandes CLI.

    NuGet option command for clearing caches

    Résolution des erreurs

    Les erreurs suivantes risquent de se produire avec nuget locals ou dotnet nuget locals :

    • Erreur : Le processus ne peut pas accéder au <package> de fichiers, car il est utilisé par un autre processus ou Échec de l’effacement des ressources locales : Suppression d’un ou plusieurs fichiers impossible

      Un ou plusieurs fichiers du dossier sont en cours d’utilisation par un autre processus ; par exemple, un projet Visual Studio faisant référence à des packages du dossier global-packages est ouvert. Fermez ces processus, puis réessayez.

    • Erreur : Accès au <chemin> refusé ou L’annuaire n’est pas vide

      Vous n’avez pas l’autorisation de supprimer des fichiers du cache. Modifiez les autorisations du dossier, si possible, puis réessayez. Sinon, contactez votre administrateur système.

    • Erreur : Le chemin d’accès ou le nom de fichier spécifié est trop long. Le nom du fichier complet doit être inférieur à 260 caractères et le nom du répertoire à 248 caractères.

      Raccourcissez le nom des dossiers, puis réessayez.