Pregunta ¿Cómo hago para que NuGet instale / actualice todos los paquetes en el paquete.config?


Tengo una solución con múltiples proyectos en ella. La mayoría de las referencias de terceros faltan, sin embargo, hay packages.config archivo para cada proyecto ¿Cómo obtengo NuGet para instalar / actualizar todos los paquetes necesarios? ¿Esto se debe hacer a través de la línea de comando para cada proyecto?


543
2017-07-29 17:23


origen


Respuestas:


Puedes usar nuget.exe Para restaurar sus paquetes o con NuGet 2.7 o superior, instalado, simplemente puede compilar su solución en Visual Studio, que también restaurará los paquetes que faltan.

Para NuGet.exe puede ejecutar el siguiente comando para cada proyecto.

nuget install packages.config

O con NuGet 2.7 puede restaurar todos los paquetes en la solución usando la línea de comando.

nuget restore YourSolution.sln

Ambos eliminarán los paquetes. Sin embargo, sus archivos de proyecto no se modificarán cuando ejecute este comando para que el proyecto ya tenga una referencia a los paquetes NuGet. Si este no es el caso, puede usar Visual Studio para instalar los paquetes.

Con NuGet 2.7 y superior, Visual Studio restaurará automáticamente los paquetes NuGet faltantes cuando construya su solución para que no haya necesidad de usar NuGet.exe.

Para actualizar todos los paquetes en su solución, primero restablézcalos, y luego puede usar NuGet.exe para actualizar los paquetes o desde Visual Studio puede actualizar los paquetes desde la ventana de la consola de Package Manager, o finalmente puede usar Administrar Diálogo de paquetes.

Desde la línea de comandos puede actualizar los paquetes en la solución a la última versión disponible en nuget.org.

nuget update YourSolution.sln

Tenga en cuenta que esto no ejecutará ningún script de PowerShell en ningún paquete NuGet.

Desde Visual Studio puede usar el Consola de Package Manager para actualizar también los paquetes. Esto tiene el beneficio de que los scripts de PowerShell se ejecutarán como parte de la actualización, ya que al usar NuGet.exe no se ejecutarán. El siguiente comando actualizará todos los paquetes en cada proyecto a la última versión disponible en nuget.org.

Update-Package

También puede restringir esto a un proyecto.

Update-Package -Project YourProjectName

Si desea volver a instalar los paquetes en las mismas versiones que se instalaron anteriormente, puede usar -reinstall argumento con Update-Package mando.

Update-Package -reinstall

También puede restringir esto a un proyecto.

Update-Package -reinstall -Project YourProjectName

los -reinstall la opción primero desinstalará y luego volverá a instalar el paquete en un proyecto.

O bien, puede actualizar los paquetes usando el Manage Packages diálogo.

Actualizaciones:

  • 2013/07/10 - Actualizado con información sobre restauración Nuget en NuGet 2.7
  • 2014/07/06 - Actualizado con información sobre restauración automática de paquetes en Visual Studio y actualizado la respuesta con otros cambios a NuGet.
  • 21/11/2014 - Actualizado con información sobre -reinstall

676
2017-07-30 11:11



Reinstale todos los paquetes en TODOS LOS PROYECTOS de la solución actual:

Update-Package -Reinstall

Reinstale todos los paquetes en PROYECTO ESPECÍFICO de la solución actual (Gracias a unarity y ashes999)

Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall

442
2017-09-02 16:27



Existe otra forma más nueva y más rápida de hacerlo desde Visual Studio. Revisa esta publicación por David Ebbo, y haz referencia a la sección de comentarios si tienes problemas. Básicamente, haga lo siguiente en el indicador Administrador de paquetes:

PM> Install-Package NuGetPowerTools
PM> Enable-PackageRestore

Luego, cuando construya su solución, los paquetes se instalarán automáticamente si faltan.

Actualizar:

Esta funcionalidad está integrada Nuget 1.6 con integración de estudio visual, por lo que ni siquiera necesita instalar NuGetPowerTools ni escribir comandos. Todo lo que tienes que hacer es

Haga clic con el botón derecho en el nodo Solución en el Explorador de soluciones y seleccione   Habilite la restauración del paquete NuGet.

Leer Este artículo para más detalles.


164
2017-12-06 16:19



Aquí hay otra solución si está utilizando proyectos de sitios web, o no quiere habilitar la restauración del paquete NuGet.

Puede usar la consola del administrador de paquetes para enumerar todos los paquetes en el archivo package.config y volver a instalarlos.

# read the packages.config file into an XML object
[xml]$packages = gc packages.config

# install each package 
$packages.packages.package | % { Install-Package -id $($_.id) -Version $($_.version) }

18
2018-02-01 09:49



Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall

Este es el mejor y más fácil ejemplo que encontré. Reinstalará todos los nugets que se enumeran en packages.config y conservará las versiones actuales. Reemplazar YourProjectNameGoesHere con el nombre del proyecto.


14
2017-10-23 16:38



Con la última versión de NuGet 2.5, ahora hay un botón "Actualizar todo" en el administrador de paquetes: http://docs.nuget.org/docs/release-notes/nuget-2.5#Update_All_button_to_allow_updating_all_packages_at_once


10
2018-06-12 17:06



Estoy usando Visual Studio 2015 y las soluciones dadas anteriormente no me funcionaron, así que hice lo siguiente:

Elimine la carpeta de paquetes de mi solución y también las carpetas bin y obj de cada proyecto en la solución y dele una reconstrucción.

Quizás tengas el siguiente error:

incapaz de localizar nuget.exe

Para resolver esto: Cambie esta línea en su archivo NuGet.targets y configúrelo en verdadero:

<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>

Referencia:https://stackoverflow.com/a/30918648 y https://stackoverflow.com/a/20502049


6
2017-12-01 02:00



Creo que lo primero que debes hacer es habilitar la función de restauración del paquete. Ver también aquí. Esto se hace a nivel de solución (no de proyecto).

Pero eso no lo llevará por completo: me encontré con un problema similar después de haber habilitado la función de restauración. (VS2013, NuGet 2.8.)

Resultó que había (involuntariamente) comprometido los paquetes con el control de código cuando cometí el proyecto. pero Visual Studio (y el complemento de control de origen) había ignorado los binarios al realizar el check-in.

El problema surgió cuando creé una rama de lanzamiento. Mi copia local de la rama dev / main / trunk tenía los binarios, porque ahí es donde originalmente había instalado / descargado los paquetes.
Sin embargo, en la nueva rama de lanzamiento,

  • las carpetas de paquetes y .nupkg los archivos estaban todos allí, por lo que NuGet no pensó que había nada que restaurar;
  • pero, al mismo tiempo, ninguno de los archivos DLL estaba presente, es decir, faltaban las referencias de terceros, por lo que no pude compilar.

Eliminé todas las carpetas del paquete en $(SolutionDir)/packages (en la rama de publicación) y luego ejecutó una reconstrucción completa, y esta vez la compilación tuvo éxito.
... y luego, por supuesto, volví y eliminé las carpetas de paquetes del control de código fuente (en la rama troncal y de liberación). No estoy claro (todavía) sobre si el repositories.config el archivo debe ser eliminado también.

Muchos de los componentes que las plantillas de proyecto le han instalado, al menos para proyectos web, son paquetes NuGet. Es decir, este problema no está limitado a los paquetes que ha agregado.
Así que habilite la restauración del paquete inmediatamente después de crear el proyecto / solución, y antes de realizar un check-in inicial, borre la packages carpeta (y asegúrese de confirmar el .nuget carpeta al control de fuente).

Descargo de responsabilidad: vi otra respuesta aquí en SO, que indicaba que limpiar el packages la carpeta era parte de la resolución. Eso me puso en el camino correcto, por lo que me gustaría darle crédito al autor, pero ya no puedo ubicar esa pregunta / respuesta. Voy a publicar una edición si me tropiezo con ella.

También me gustaría señalar que Update-Package -reinstall modificará el .sln y .csproj/.vbproj archivos. Al menos eso es lo que hizo en mi caso. Que en mi humilde opinión hace esta opción mucho menos atractiva.


3
2018-04-23 20:29