Administración de las carpetas de paquetes globales, de caché y temporales

Cada vez que instala, actualiza o restaura un paquete, NuGet administra los paquetes y la información de paquete en varias externas a la estructura del proyecto:

Nombre Descripción y ubicación (por usuario)
global-packages La carpeta global-packages es donde NuGet instala los paquetes que se descargan. Cada paquete se expande totalmente en una subcarpeta que coincida con el identificador y el número de versión del paquete. Los proyectos con el formato PackageReference siempre usan los paquetes directamente de esta carpeta. Cuando se usa packages.config, los paquetes se instalan en la carpeta global-packages y luego se copian en la carpeta packages del proyecto.
  • Windows: %userprofile%\.nuget\packages
  • Mac/Linux: ~/.nuget/packages
  • Se invalida mediante la variable de entorno NUGET_PACKAGES, las opciones de configuraciónglobalPackagesFolder o repositoryPath (cuando se usa PackageReference y packages.config, respectivamente) o la propiedad RestorePackagesPath de MSBuild (solo MSBuild). La variable de entorno tiene prioridad sobre la opción de configuración.
http-cache El Administrador de paquetes de Visual Studio (NuGet 3.x y versiones posteriores) y la herramienta dotnet almacenan copias de los paquetes descargados en esta caché (guardados como archivos .dat), organizados en subcarpetas para cada origen de paquete. Los paquetes no se expanden y la caché tiene un plazo de expiración de 30 minutos.
  • Windows: %localappdata%\NuGet\v3-cache
  • Mac/Linux: ~/.local/share/NuGet/v3-cache
  • Se invalida mediante la variable de entorno NUGET_HTTP_CACHE_PATH.
temp Carpeta donde NuGet almacena los archivos temporales durante sus diversas operaciones.
  • Windows: %temp%\NuGetScratch
  • Mac: /tmp/NuGetScratch
  • Linux: /tmp/NuGetScratch<username>
  • Se invalida mediante la variable de entorno NUGET_SCRATCH.
  • plugins-cache 4.8+ Carpeta en la que NuGet almacena los resultados de la solicitud de notificaciones de la operación.
    • Windows: %localappdata%\NuGet\plugins-cache
    • Mac/Linux: ~/.local/share/NuGet/plugins-cache
    • Se invalida mediante la variable de entorno NUGET_PLUGINS_CACHE_PATH.

    Nota:

    NuGet 3.5 y versiones anteriores utilizan packages-cache en lugar de http-cache, que se encuentra en %localappdata%\NuGet\Cache.

    Mediante las carpetas global-packages y de caché, NuGet generalmente evita descargar paquetes que ya existen en el equipo, lo que mejora el rendimiento de las operaciones de instalación, actualización y restauración. Cuando se usa PackageReference, la carpeta global-packages también evita mantener paquetes descargados dentro de carpetas de proyecto, donde podrían accidentalmente agregarse al control de código fuente, y reduce el impacto general de NuGet en el almacenamiento en el equipo.

    Cuando se le pide que recupere un paquete, NuGet busca primero en la carpeta global-packages. Si la versión exacta del paquete no está, NuGet comprueba todos los orígenes de paquetes que no sean HTTP. Si todavía no se encuentra el paquete, NuGet lo busca en http-cache a menos que especifique --no-http-cache con comandos dotnet.exe o -NoHttpCache con comandos nuget.exe. Si el paquete no está en la caché o esta no se usa, NuGet recupera luego el paquete por HTTP.

    Para obtener más información, vea ¿Qué ocurre cuando se instala un paquete?

    Visualización de ubicaciones de carpeta

    Puede ver las ubicaciones mediante el comando nuget locals:

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

    Salida típica (Windows; "user1" es el nombre de usuario actual):

    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 se utiliza en NuGet 2.x y aparece con NuGet 3.5 y versiones anteriores).

    También puede ver las ubicaciones de carpeta mediante el comando dotnet nuget locals:

    dotnet nuget locals all --list
    

    Salida típica (Mac; "user1" es el nombre de usuario actual):

    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
    

    Salida típica (Linux; "user1" es el nombre de usuario actual):

    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
    

    Para mostrar la ubicación de una sola carpeta, use http-cache, global-packages, temp o plugins-cache en lugar de all.

    Borrado de carpetas locales

    Si detecta problemas de instalación de paquetes o quiere asegurarse de que está instalando paquetes de una galería remota, use la opción locals --clear (dotnet.exe) o locals -clear (nuget.exe) para especificar la carpeta que quiere borrar o all para borrar todas las carpetas:

    # 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
    

    Los paquetes que se usen en proyectos que están actualmente abiertos en Visual Studio no se borran de la carpeta global-packages.

    A partir de Visual Studio 2017, use el comando de menú Herramientas > Administrador de paquetes NuGet > Configuración del Administrador de paquetes y, luego, seleccione Borrar todas las cachés de NuGet. La administración de la memoria caché no está actualmente disponible a través de la consola del Administrador de paquetes. En Visual Studio 2015, en su lugar use los comandos de la CLI.

    NuGet option command for clearing caches

    Errores de solución de problemas

    Se pueden producir los siguientes errores al usar nuget locals o dotnet nuget locals:

    • Error: El proceso no puede obtener acceso al archivo <package> porque otro proceso lo está utilizando o Error al borrar los recursos locales: no se pueden eliminar uno o varios archivos

      Uno o varios archivos de la carpeta están en uso por otro proceso; por ejemplo, se abre un proyecto de Visual Studio que hace referencia a paquetes de la carpeta global-packages. Cierre los procesos y e inténtelo de nuevo.

    • Error: Se ha denegado el acceso a la ruta <path> o El directorio no está vacío

      No tiene permiso para eliminar archivos en la caché. Si es posible, cambie los permisos de carpeta e inténtelo de nuevo. Si no, póngase en contacto con el administrador del sistema.

    • Error: la ruta de acceso especificada, el nombre de archivo o ambos son demasiado largos. El nombre de archivo completo debe ser inferior a 260 caracteres y el nombre del directorio debe ser inferior a 248.

      Acorte los nombres de carpeta e inténtelo de nuevo.