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 estas bibliotecas externas dentro de la carpeta de origen. ¿NuGet tiene una configuración para cambiar el directorio en el que se cargan todos los paquetes?
.net
visual-studio
nuget
nuget-package
TheCloudlessSky
fuente
fuente
Respuestas:
Ahora es posible controlar en qué carpeta están instalados 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 / el enlace de arriba). El soporte se implementa parcialmente en 1.0, pero no está documentado.
De acuerdo con @dfowler: Agregue un archivo nuget.config junto a la solución con esto:
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 hay 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):
Esto cambiaría la carpeta de paquetes para el nivel de configuración en el que coloca el archivo (solución si lo 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:
fuente
Esto no funcionó para mí:
esto funcionó para mí:
fuente
Bien, por el bien de cualquiera que lea esta publicación, esto es lo que entiendo de la miríada de respuestas anteriores:
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 '../Packs', eso la colocará donde siempre sale de la caja. Como @ bruce14 dice que debes hacer '../../Packs' en su lugar
No pude obtener el último nuget (2.8.5) para encontrar una carpeta de paquetes fuera de la ubicación estándar sin habilitar la restauración del paquete. 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:
(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 / volver a cargar la solución para que los cambios surtan efecto
fuente
Una solución para Nuget 3.2 en Visual Studio 2015 es:
Usando barra diagonal para la carpeta principal. Guarde el archivo anterior (nuget.config) en la carpeta de la solución.
La referencia está disponible aquí.
fuente
../lib
Esa es una barra diagonal, no una barra diagonal. ¿A qué te refieres?La solución propuesta en las notas de la versión 2.1 no funciona de manera inmediata. Se olvidaron de mencionar que hay código:
lo que evita que funcione. Para solucionar esto, debe modificar su archivo NuGet.targets y eliminar el parámetro 'OutputDirectory':
Entonces, si agrega la configuración 'repositoryPath' en algún lugar de 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), restaurará todos los paquetes en una sola ubicación, pero ... Su .csproj aún contiene sugerencias para ensamblados escritos como rutas relativas ...
Todavía no entiendo por qué fueron tan difíciles en lugar de cambiar PackageManager, por lo que agregaría rutas de pistas en relación con PackagesDir. Así es como lo hago manualmente para tener diferentes ubicaciones de paquetes localmente (en mi escritorio) y en el agente de compilación.
fuente
Además de la respuesta de Shane Kms, si activó Nuget Package Restore, edite el NuGet.config ubicado en la carpeta .nuget de la siguiente manera:
Observe el ".. \" extra, ya que retrocede desde la carpeta .nuget y no desde la carpeta de la solución.
fuente
Ninguna de estas respuestas me funcionó (Nuget 2.8.6) debido a la falta de algunos consejos, trataré de agregarlos aquí, ya que podría ser útil para otros.
Después de leer las siguientes fuentes:
https://docs.nuget.org/consume/NuGet-Config-Settings
https://github.com/NuGet/Home/issues/1346
Parece que
P.ej
También puede usar el comando NuGet para asegurarse de que la sintaxis sea correcta como esta:
fuente
Para los proyectos .NET Core y Visual Studio 2017 pude restaurar todos los paquetes a la ruta relativa al proporcionar esta configuración:
Según mi experiencia, la carpeta lib se creó en el mismo nivel donde se encontró Nuget.config, sin importar dónde estaba el archivo sln. Probé y el comportamiento es el mismo para la restauración de dotnet de línea de comandos y la reconstrucción de Visual Studio 2017
fuente
globalPackagesFolder
clave de la carpeta del paquete de mi proyecto. Traté de agregar un solo paquete condotnet add package MyPackage
.nuget.exe
descargó el marco completo de 83 paquetes .NET en esa carpeta. Eso no es lo que pretendía. Solo quería mi único MyPackage en mi carpeta de paquetes local controlada por código fuente.El archivo de configuración en la respuesta aceptada funciona para mí en VS2012. Sin embargo, para mí solo funciona cuando hago lo siguiente:
Si sigo esos pasos, puedo usar una carpeta de paquete compartido.
fuente
Para cambiar la ruta de los proyectos que usan PackageReference en lugar de packages.config, debe usar
globalPackagesFolder
Desde https://docs.microsoft.com/en-us/nuget/reference/nuget-config-file
Puse Nuget.config al lado de mi archivo de solución y funcionó.
fuente
Un pequeño dato más que acabo de descubrir. (Esto puede ser tan básico que algunos no lo han mencionado, pero fue importante para mi solución). La carpeta "paquetes" termina en la misma carpeta que su archivo .sln.
Movimos nuestro archivo .sln y luego arreglamos todos los caminos para encontrar los diferentes proyectos y ¡listo! Nuestra carpeta de paquetes terminó donde la queríamos.
fuente
ACTUALIZACIÓN para VS 2017:
Parece que la gente del equipo de Nuget finalmente comenzó a usar Nuget, lo que les ayudó a encontrar y solucionar varias cosas importantes. Entonces, ahora (si no me equivoco, ya que aún no migró a VS 2017), lo siguiente ya no es necesario. Debería poder establecer el "repositoryPath" en una carpeta local y funcionará. Incluso puede dejarlo ya que, de forma predeterminada, la ubicación de restauración se movió de las carpetas de soluciones al nivel de la máquina. De nuevo, todavía no lo probé solo
VS 2015 y anteriores
Solo un consejo para otras respuestas (específicamente esto ):
La ubicación de la carpeta del paquete NuGet se puede cambiar mediante la configuración, pero VisualStudio todavía hace referencia a los ensamblados en esta carpeta relativamente:
Para solucionar esto (hasta una mejor solución), utilicé el comando subst para crear una unidad virtual que apunta a una nueva ubicación de la carpeta Paquetes:
Ahora, al agregar un nuevo paquete NuGet, la referencia del proyecto utiliza su ubicación absoluta:
Nota:
fuente
<HintPath>$(SolutionDir)\packages\SomeAssembly\lib\net45\SomeAssembly.dll</HintPath>
lugar de usarsubst
Simplemente actualizando con Nuget 2.8.3. Para cambiar la ubicación de los paquetes instalados, habilité la restauración del paquete haciendo clic con el botón derecho en la solución. Editó NuGet.Config y agregó estas líneas:
Luego reconstruyó la solución, descargó todos los paquetes a mi carpeta deseada y actualizó las referencias automáticamente.
fuente
La forma más consistente es mediante el uso
nuget config
para configurar correctamente la configuración:https://docs.microsoft.com/en-us/nuget/consume-packages/configuring-nuget-behavior#changing-config-settings
fuente