¿Es posible cambiar la ubicación de los paquetes de NuGet?

Resuelto TheCloudlessSky asked hace 14 años • 19 respuestas

Tengo la siguiente convención para la mayoría de mis proyectos:

/src
    /Solution.sln
    /SolutionFolder
        /Project1
        /Project2
        /etc..
/lib
    /Moq
        moq.dll
        license.txt
    /Yui-Compressor
        yui.compressor.dll
/tools
    /ILMerge
        ilmerge.exe

Notarás que no mantengo bibliotecas externas dentro de la carpeta de origen. También estoy muy interesado en usar NuGet pero no quiero que estas bibliotecas externas estén dentro de la carpeta de origen. ¿NuGet tiene una configuración para cambiar el directorio en el que se cargan todos los paquetes?

TheCloudlessSky avatar Nov 04 '10 06:11 TheCloudlessSky
Aceptado

Ahora es posible controlar en qué carpeta se instalan los paquetes.

http://nuget.codeplex.com/workitem/215

Editar: vea el comentario de Phil Haack el 10 de diciembre de 2010 a las 11:45 p.m. (en el elemento de trabajo/en el enlace de arriba). El soporte está parcialmente implementado en 1.0, pero no está documentado.

Según @dfowler: agregue un archivo nuget.config junto a la solución con esto:

<settings>
<repositoryPath>{some path here}</repositoryPath>
</settings>

Hay un paquete nuget para crear la anulación de la carpeta del paquete.

Actualización para la versión 2.1

Como comentó Azat, ahora existe documentación oficial sobre cómo controlar las ubicaciones de los paquetes. Las notas de la versión 2.1 especifican la siguiente configuración en un archivo nuget.config (consulte las notas de la versión para obtener una descripción de los lugares válidos para colocar los archivos de configuración y cómo funciona el modelo de configuración jerárquica):

<configuration>
  <config>
    <add key="repositoryPath" value="C:\thePathToMyPackagesFolder" />
  </config>
  ... 
</configuration>

Esto cambiaría la carpeta de paquetes para el nivel de configuración en el que coloca el archivo (solución si la coloca en el directorio de la solución, proyecto en el directorio del proyecto, etc.). Tenga en cuenta que las notas de la versión indican:

[...] si tiene una carpeta de paquetes existente debajo de la raíz de su solución, deberá eliminarla antes de que NuGet coloque los paquetes en la nueva ubicación.

PHeiberg avatar Nov 16 '2010 17:11 PHeiberg
  1. Creó un archivo llamado "nuget.config".
  2. Agregué ese archivo a mi carpeta de soluciones.

Esto no funcionó para mí:

<configuration>
  <config>
    <add key="repositoryPath" value="..\ExtLibs\Packages" />
  </config>
  ... 
</configuration>

esto FUNCIONÓ para mí:

<?xml version="1.0" encoding="utf-8"?>
<settings>
  <repositoryPath>..\ExtLibs\Packages</repositoryPath>
</settings>
ShaneKm avatar Nov 28 '2012 07:11 ShaneKm

Bien, por el bien de cualquiera que lea esta publicación: esto es lo que entiendo de la gran cantidad de respuestas anteriores:

  1. El archivo nuget.config en la carpeta .nuget es relativo a esa carpeta. Esto es importante porque si su nueva carpeta es algo así como '../Paquetes', la colocará donde siempre aparece de fábrica. Como dice @bruce14, debes hacer '../../Packages' en su lugar

  2. No pude hacer que la última versión de Nuget (2.8.5) encontrara una carpeta de paquetes fuera de la ubicación estándar sin habilitar la restauración de paquetes. Entonces, una vez que habilite la restauración del paquete, se debe agregar lo siguiente al archivo nuget.config dentro de la carpeta .nuget para cambiar la ubicación:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      ...
      <config>
        <add key="repositoryPath" value="..\..\Packages" />
      </config>
      ...
    </configuration>
    
  3. (Esto es importante) Si realiza CUALQUIER cambio en la ubicación de la carpeta del paquete dentro de los archivos nuget.config, debe reiniciar Visual Studio o cerrar/recargar la solución para que los cambios surtan efecto.

Robert Petz avatar Aug 20 '2014 23:08 Robert Petz