visual studio restaurar reinstalar referencia que proyecto paquetes los hace faltan este equipo all nuget

studio - Restauración del paquete NuGet-carpeta.nuget en la solución-¿Comprometerse con el repositorio?



restore all nuget packages command (4)

No tiene que enviar nuget.exe al control de origen. NuGet.targets descarga el último NuGet.exe de nuget.org si falta.

Al habilitar la restauración del paquete NuGet, agrega lo siguiente a mi solución:

/.nuget
/.nuget/NuGet.exe
/.nuget/NuGet.targets

Como estas son parte de mi solución, la confirmación de la solución en mi repositorio sin ninguno de estos archivos significa que me faltan referencias, pero al eliminar la carpeta o cualquiera de estos archivos, la restauración del paquete NuGet no está habilitada.

Dado que parte del punto de configuración de la restauración del paquete es que no tengo que enviar archivos binarios al repositorio, ¿cuál es la intención detrás de forzar a NuGet.exe en la solución?

¿La suposición de que cometer un pequeño .exe en el repositorio es un precio pequeño a pagar para eliminar la necesidad de cometer otros binarios? ¿O se supone que debo excluir estos también del repositorio y decirle a un desarrollador que está revisando mi repositorio por primera vez para que se active y permita la restauración del paquete? ¿Qué pasa cuando la integración continua encuentra una referencia faltante en mi solución?


Para .gitignore , agregue las siguientes líneas.

.nuget/ !.nuget/packages.config


Si está siguiendo la respuesta de @Richard Szalay (no está confirmando nuget.exe) y, por alguna razón, Visual Studio no descarga automáticamente nuget.exe, asegúrese de que el siguiente conjunto sea verdadero en el archivo nuget.targets:

<!-- Download NuGet.exe if it does not already exist --> <DownloadNuGetExe Condition=" ''$(DownloadNuGetExe)'' == '''' ">true</DownloadNuGetExe>

Cierra la solución VS, vuelve a abrirla y compílala. Visual Studio debería descargar nuget.exe automáticamente ahora.


El punto detrás de la confirmación de la carpeta .nuget en el repositorio es que puede configurar su solución para usar la restauración de paquetes, usando la misma versión exacta de nuget.exe que instaló al habilitar esta función.

Sus archivos de proyecto dependen de las instrucciones nuget.targets de MSBuild que usan nuget.exe, y ambos archivos se consideran vinculados porque las instrucciones de MSBuild usan la API nuget.exe. Es perfectamente posible terminar con una versión diferente de nuget.exe y nuget.targets algún día. Utiliza los paquetes NuGet.Build y NuGet.Commandline bajo el capó. Esa es también la razón por la que la restauración de paquetes suele configurarse una vez para la solución y no por cada desarrollador individualmente.

Además, no necesitará instalar nuget.exe en cada servidor de compilación, y su servidor de compilación puede crear soluciones con diferentes versiones de nuget.exe, lo que es un beneficio adicional que no requiere ningún esfuerzo adicional. Y sí, uno podría considerarlo como un pequeño precio a pagar también :-)

Si su CI encuentra una referencia faltante, verifique lo siguiente:

  • su servidor de compilación no puede alcanzar la fuente del paquete NuGet
  • su servidor de compilación no puede encontrar el paquete NuGet en la fuente del paquete NuGet (verifique si está allí o si está apuntando a la fuente correcta del paquete)