Tengo una solución con múltiples proyectos. Faltan la mayoría de las referencias de terceros, pero hay packages.config
archivos para cada proyecto. ¿Cómo consigo que NuGet instale / actualice todos los paquetes necesarios? ¿Esto debe hacerse a través de la línea de comando para cada proyecto?
674
Respuestas:
Puede 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 faltantes.
Para NuGet.exe puede ejecutar el siguiente comando para cada proyecto.
O con NuGet 2.7 puede restaurar todos los paquetes en la solución usando la línea de comando.
Ambos harán descender los paquetes. Sin embargo, los archivos de su proyecto no se modificarán al ejecutar este comando, por lo que el proyecto ya debería tener 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 versiones posteriores, Visual Studio restaurará automáticamente los paquetes NuGet faltantes cuando cree su solución, por lo que no es necesario usar NuGet.exe.
Para actualizar todos los paquetes en su solución, primero restaúrelos, y luego puede usar NuGet.exe para actualizar los paquetes o desde Visual Studio puede actualizar los paquetes desde la ventana Consola del Administrador de paquetes, o finalmente puede usar el Administrador Diálogo de paquetes.
Desde la línea de comandos, puede actualizar los paquetes de la solución a la última versión disponible de nuget.org.
Tenga en cuenta que esto no ejecutará ningún script de PowerShell en ningún paquete NuGet.
Desde Visual Studio puede usar la Consola del Administrador de paquetes para actualizar también los paquetes. Esto tiene la ventaja de que cualquier script de PowerShell se ejecutará como parte de la actualización, ya que el uso de NuGet.exe no los ejecutará. El siguiente comando actualizará todos los paquetes en cada proyecto a la última versión disponible de nuget.org.
También puede restringir esto a un solo proyecto.
Si desea reinstalar los paquetes a las mismas versiones que se instalaron anteriormente, puede usar el
-reinstall
argumento con elUpdate-Package
comando.También puede restringir esto a un solo proyecto.
La
-reinstall
opción primero se desinstalará y luego volverá a instalar el paquete en un proyecto.O bien, puede actualizar los paquetes utilizando el
Manage Packages
cuadro de diálogo.Actualizaciones:
-reinstall
fuente
Update-Package -reinstall -Project ProjectName
Vuelva a instalar todos los paquetes en TODOS LOS PROYECTOS de la solución actual:
Vuelva a instalar todos los paquetes en PROYECTO ESPECÍFICO de la solución actual ( Gracias a la unaridad y las cenizas999 ):
fuente
Hay otra forma más nueva y más rápida de hacerlo desde Visual Studio. Echa un vistazo a esta publicación de David Ebbo y consulta la sección de comentarios si tienes problemas. Básicamente, hace lo siguiente en el indicador del Administrador de paquetes:
Luego, cuando cree su solución, los paquetes se instalarán automáticamente si faltan.
Actualizar:
Esta funcionalidad está integrada en Nuget 1.6 con la integración de Visual Studio, por lo que ni siquiera necesita instalar NuGetPowerTools o escribir comandos. Todo lo que tienes que hacer es
Lea este artículo para más detalles.
fuente
Aquí hay otra solución si está utilizando proyectos de sitios web o no desea 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.
fuente
$packages.packages.package | % { Update-Package -reinstall -id $($_.id) }
Update-Package -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.fuente
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
fuente
Estoy usando Visual Studio 2015 y las soluciones dadas anteriormente no funcionaron para mí, 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 vuelva a generarla.
Quizás tengas el siguiente error:
Para resolver esto: cambie esta línea en su archivo NuGet.targets y configúrelo como verdadero:
Referencia: https://stackoverflow.com/a/30918648 y https://stackoverflow.com/a/20502049
fuente
Si instala Nuget 2.8, marque la casilla de verificación
en Visual Studio Si está marcado, simplemente reconstruir el proyecto restaurará todas sus bibliotecas de referencia.
fuente
Allow NuGet to download missing packages
casilla de verificación también.Después de 3 horas de búsqueda e investigación.
Tuve problemas con él porque tenemos dos miembros en el equipo (usando el control de fuente de GitHub), porque no restringimos los archivos para los paquetes para enviarlos al repositorio remoto, uno de los miembros del equipo fue enviar paquetes al servidor y he aplicado los cambios a mi local
Después de eso tuve el mismo problema que PO, tampoco pude publicar mi proyecto de API en el servidor.
En el y acabo de usar
Update-Package -Reinstall : ejecuta este comando en la consola de Package Manager
Este comando reinstalará todos los paquetes que haya utilizado en su solución. (Para cada proyecto)
Vuelva a instalar todos los paquetes en TODOS LOS PROYECTOS de la solución actual:
Update-Package -ProjectName 'NameOfProject' -Reinstall : ejecute este comando en la consola de Package Manager
Este comando reinstalará todos sus paquetes relacionados con el proyecto que especificó después de "-ProjectName". Y creo que esto es mejor porque tuve que esperar media hora para reinstalar todos los paquetes en solución.
Por esto muchas gracias a Rodolpho Brock .
Además, le recomendaría que cuando extraiga cambios del servidor remoto, presione el botón "Restaurar paquetes" que Visual Studio mostrará.
fuente
Creo que lo primero que debe 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 te ayudará hasta el final: 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 comprometido (involuntariamente) los paquetes al control de origen cuando comprometí el proyecto, pero Visual Studio (y el complemento de control de origen) habían 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 allí es donde originalmente instalé / descargué los paquetes.
Sin embargo, en la nueva rama de lanzamiento,
.nupkg
archivos del paquete estaban allí, por lo que NuGet no creía que hubiera nada que restaurar;Eliminé todas las carpetas del paquete
$(SolutionDir)/packages
(debajo de la rama de lanzamiento) y luego ejecuté una reconstrucción completa, y esta vez la compilación tuvo éxito.... y luego, por supuesto, volví y eliminé las carpetas del paquete del control de origen (en el tronco y la rama de liberación). No tengo claro (todavía) si el
repositories.config
archivo también debe eliminarse.Muchos de los componentes instalados para usted por las plantillas de proyecto, al menos para proyectos web, son paquetes NuGet. Es decir, este problema no se limita a los paquetes que ha agregado.
Por lo tanto, habilite la restauración del paquete inmediatamente después de crear el proyecto / solución, y antes de realizar un registro inicial, borre la
packages
carpeta (y asegúrese de confirmar la.nuget
carpeta con el control de origen).Descargo de responsabilidad: vi otra respuesta aquí en SO que indicaba que borrar la
packages
carpeta era parte de la resolución. Eso me puso en el camino correcto, así que me gustaría darle crédito al autor, pero ya no puedo localizar esa pregunta / respuesta. Publicaré una edición si me encuentro con ella.También señalaría que
Update-Package -reinstall
modificará los archivos.sln
y.csproj
/.vbproj
. Al menos eso es lo que hizo en mi caso. Que en mi humilde opinión hace que esta opción sea mucho menos atractiva.fuente
Lo intenté
Update-Package -reinstall
pero falla en un paquete y dejé de procesar todos los paquetes restantes de proyectos en mi solución.Terminé con mi script que enumera todos los archivos package.config y se ejecuta
Update-Package -Reinstall -ProjectName prj -Id pkg
para cada proyecto / paquete.Espero que pueda ser útil para alguien:
Editar: Este es un error que tuve: Paquete de actualización: no se puede encontrar el paquete 'EntityFramework.BulkInsert-ef6'. Los paquetes existentes deben restaurarse antes de realizar una instalación o actualización. La ejecución manual de
Update-Package -Reinstall -ProjectName my_prj -Id EntityFramework.BulkInsert-ef6
funcionó muy bien.fuente
Para aquellos que lleguen aquí debido a que el servidor de compilación no está en condiciones de esto, puede crear un objetivo de MSBuild ejecutando el comando exec para ejecutar el comando de restauración de nuget , como se muestra a continuación (en este caso, nuget.exe está en la carpeta .nuget, en lugar de en la ruta), que luego se puede ejecutar en un paso de compilación de TeamCity inmediatamente antes de crear la solución
fuente
ahora Nuget Package Manager Console en Visual Studio 2012 le da un botón "Restaurar" automáticamente tan pronto como encuentre cualquier paquete no instalado pero allí dentro de package.config. Característica impresionante!
fuente
En VS2012 V11, si uso "-Reinstalar" al final de la línea, no funciona.
Entonces simplemente usé:
fuente
Sé que esta es una publicación antigua, pero pensé que podría ser útil. Si necesita ignorar paquetes específicos durante el proceso de actualización (como cualquier paquete que actualice las referencias de JavaScript), use el siguiente script de PowerShell (asegúrese de que el origen del paquete esté configurado en "Todos" en la Consola del Administrador de paquetes):
EDITAR 2014-09-25 10:55 AM EST - Se corrigió un error en el script
fuente
No sé desde cuándo, pero en VS2019 puedes hacerlo de una manera más fácil:
fuente
En Visual Studio 2017, cuando compila usando IDE, descargará todos los paquetes nuget que faltan y los guardará en la carpeta "paquetes".
Pero en la compilación de la máquina de compilación se realizó usando msbuild.exe. En ese caso, descargué nuget.exe.
Durante cada proceso de compilación antes de ejecutar msbuild.exe. Se ejecutará -> nuget.exe restore NAME_OF_SLN_File (si solo hay un archivo .SLN, puede ignorar ese parámetro).
fuente
MSbuild -t:restore Xxxx.sln