2012-03-30 19 views
15

ESCENARIONuGet - la gestión y eliminación de paquetes versión multi en una única solución

solución

Una VS con n proyectos. El paquete de referencias del proyecto A Y v1, el proyecto B hace referencia al paquete Y v2. Ahora no es posible actualizar todas las referencias al paquete Y para todos los proyectos en la solución usando el diálogo de administración de paquetes NuGet en el nivel de solución, solo es posible hacer esto cuando todos los proyectos hacen referencia a la misma versión del paquete Y. No es un gran solo para dos proyectos, pero estoy lidiando con muchos proyectos que a través de la administración de paquetes deficiente hacen referencia a muchas versiones de paquetes cuando todos deben hacer referencia a la misma versión.

Antes de pasar la tarde escribiendo una aplicación de consola. para actualizar automáticamente todos los archivos de package.config para una solución, de modo que cada paquete al que se hace referencia solo se haga referencia a través de su última versión (última referencia, no la más reciente, con excepciones/advertencias, etc.) ... ¿existe una herramienta/método para hacer esto ya? O algún otro enfoque que desconozco?

+0

viernes por la tarde es buen momento para esto! – Bond

+0

¿Has probado usar sed o awk? –

+0

o powershell !! –

Respuesta

10

Puede lograr esto en Nuget Package Manager for Solution (Para buscar el menú, haga clic con el botón derecho en la solución o vaya a Tools-> Library Package Manager). La pestaña Actualizar en este diálogo propondrá actualizar para múltiples proyectos donde la actualización es aplicable. Lo mismo se aplica con la desinstalación desde la pestaña Instalado.

O con la solución abierta, abra NuGet Console, ejecute "Update-Package" para actualizar todos los paquetes para todos los proyectos. También puede funcionar para actualizar los paquetes/proyectos específicos:

Update-Package [-Id] <string> [-IgnoreDependencies] [-ProjectName <string>] [-Version <string>] [-Safe] [-Source <string>] [-IncludePrerelease] 

que encontrará los mismos cambios que en el cuadro de diálogo, sólo asegúrese de que la alimentación de la derecha (o "All") se selecciona en el "paquete de código fuente:" desplegable .

ejemplo:

PM> install-package NUnit -version 2.5.9.10348 -ProjectName ProjectA 
Successfully installed 'NUnit 2.5.9.10348'. 
Successfully added 'NUnit 2.5.9.10348' to ProjectA. 

PM> install-package NUnit -version 2.5.10.11092 -ProjectName ProjectB 
Successfully installed 'NUnit 2.5.10.11092'. 
Successfully added 'NUnit 2.5.10.11092' to ProjectB. 

PM> update-package 
Updating 'NUnit' from version '2.5.9.10348' to '2.6.0.12054' in project 'ProjectA'. 
Successfully removed 'NUnit 2.5.9.10348' from ProjectA. 
Successfully installed 'NUnit 2.6.0.12054'. 
Successfully added 'NUnit 2.6.0.12054' to ProjectA. 
Successfully uninstalled 'NUnit 2.5.9.10348'. 
Updating 'NUnit' from version '2.5.10.11092' to '2.6.0.12054' in project 'ProjectB'. 
Successfully removed 'NUnit 2.5.10.11092' from ProjectB. 
Successfully added 'NUnit 2.6.0.12054' to ProjectB. 
Successfully uninstalled 'NUnit 2.5.10.11092'. 
2

Primero, cambiar los archivos xml no es suficiente para que NuGet cambie las referencias. De hecho, a veces obtienes errores cuando modificas los archivos de packages.config a mano. la consola del administrador de paquetes tiene la capacidad de actualizar todos los paquetes en la solución; simplemente puede llamar al comando "Get-Project-All | Update-Package".

Y en segundo lugar, antes de llamar a este comando, asegúrese de tener las fuentes de paquetes adecuadas disponibles.

+0

Y en segundo lugar ... – Steven

+0

Ese comando de consola informó que no hay actualizaciones disponibles para todos los refs del paquete en cada proj de la solución, pero hay actualizaciones y puedo actualizarlas de a una por medio del diálogo. –

+0

déjame revisar nuevamente. – daryal

Cuestiones relacionadas