¿Deberíamos incluir la carpeta Nuget PACKAGE en el control de versiones?

56

Me gustaría saber

En el proyecto C # o VB.NET deberíamos incluir la carpeta PACKAGE (carpeta de paquete de nugget que se crea en la raíz de mi proyecto que contiene los archivos nupkg y otro contenido) en nuestro repositorio de control de fuente (Git, por ejemplo).

    
pregunta Bastien Vandamme 03.11.2015 - 07:44

3 respuestas

23

Ha pasado mucho tiempo y NuGet ha cambiado, así que aquí hay una nueva respuesta.

NuGet ya no crea una carpeta de paquetes dentro de su estructura de origen. En su lugar, hay uno en su directorio de usuarios ( %HOME%\.nuget\packages para ser específico) donde coloca todos los paquetes que descarga, y los proyectos solo hacen referencia a estos.

Así que la respuesta simple en estos días es no, no deberías. Si está preocupado por los paquetes que necesita que desaparezcan, debe crear un espejo NuGet local del que realice una copia de seguridad por separado.

    
respondido por el Sebastian Redl 10.03.2017 - 10:50
43

Depende.

Echa un vistazo a la respuesta de Bart van Ingen Schenau para determinar si es posible ignorar la carpeta packages .

Básicamente: sí, NuGet está diseñado para que puedas ignorar la carpeta packages y NuGet extraerá todo de Internet si falta.

¿Pero deberías ignorarlo? Digo: depende.
OMI es una cuestión de "podemos continuar trabajando en caso de que el repositorio de paquetes no esté disponible" (ya sea de forma temporal o permanente)

Para mis proyectos OSS personales, tengo la carpeta packages ignorada en todos ellos.
Cuando nuget.org está fuera de línea, solo esperaré y continuaré otro día.

Pero es algo diferente en el trabajo.
Claro, es probable que aún tengas los paquetes localmente en alguna máquina, pero ¿vale la pena la molestia cuando tus compilaciones se están rompiendo porque tu servidor de compilación no puede alcanzar nuget.org?

Decidimos que el espacio es barato y no queremos la molestia, por eso estamos comprometiendo la carpeta packages en el control de fuente.

    
respondido por el Christian Specht 03.11.2015 - 23:45
24

La regla básica para lo que se incluye en un repositorio de control de origen es que almacena allí todo lo relacionado con un proyecto que necesita para poder compilar, probar, implementar y ejecutar el proyecto y que no puede generarse a partir de elementos ya presentes. en el repositorio.

En otras palabras, si puede desechar la carpeta PAQUETE y su contenido sin afectar su capacidad, continúe trabajando en el proyecto (la compilación puede tardar más tiempo, pero no tiene que buscar e instalar nada por sí mismo), entonces La carpeta se puede dejar fuera del repositorio de forma segura.
Si la carpeta contiene paquetes de terceros que pueden tardar mucho tiempo en descargarse o que no están disponibles, entonces esa podría ser una razón para agregarlos a su repositorio de todos modos.

    
respondido por el Bart van Ingen Schenau 03.11.2015 - 08:40

Lea otras preguntas en las etiquetas