2012-03-30 13 views
15

SCENARIONuGet - la gestione e la rimozione multi-pacchetti versione in un'unica soluzione

soluzione

Uno VS con n progetti. Progetto Un pacchetto di riferimenti Y v1, Project B reference package Y v2. Non è ora possibile aggiornare tutti i riferimenti al pacchetto Y per tutti i progetti nella soluzione utilizzando la finestra di dialogo Gestione pacchetti NuGet a livello di soluzione, è possibile farlo solo quando tutti i progetti fanno riferimento alla stessa versione del pacchetto Y. Non è un grande trattare solo due progetti, ma ho a che fare con molti progetti che attraverso una cattiva gestione dei pacchetti fanno riferimento a molte versioni di pacchetti quando dovrebbero fare riferimento alla stessa versione.

Prima di passare il pomeriggio a scrivere un'app per console. per aggiornare automaticamente tutti i file package.config per una soluzione in modo che ogni pacchetto di riferimento sia referenziato tramite la sua ultima versione (più recente, non l'ultima, con eccezioni/avvertimenti, ecc.). C'è uno strumento/metodo per fare questo già? O qualche altro approccio di cui non sono a conoscenza?

+0

Venerdì pomeriggio è grande tempo per questo! – Bond

+0

Hai provato a usare sed o awk? –

+0

o powershell !! –

risposta

10

È possibile eseguire questa operazione nel Gestore pacchetti Nuget per soluzione (per trovare il menu, fare clic con il tasto destro del mouse sulla soluzione o andare in Strumenti-> Gestore pacchetti libreria). La scheda Aggiorna in questa finestra di dialogo proporrà l'aggiornamento per più progetti in cui l'aggiornamento è applicabile. Lo stesso vale per la disinstallazione dalla scheda Installato.

Oppure con la soluzione aperta, aprire NuGet Console, eseguire "Update-Package" per aggiornare tutti i pacchetti per tutti i progetti. Può funzionare anche per aggiornare specifici pacchetti/progetti:

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

Troverà gli stessi aggiornamenti che nella finestra di dialogo, basta assicurarsi che il mangime giusto (o "Tutti") è selezionato in "Source Package:" discesa .

esempio:

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

In primo luogo, solo la modifica dei file xml non è sufficiente per NuGet per modificare i riferimenti. In effetti, a volte si verificano errori quando si modificano i file packages.config a mano. la console di gestione pacchetti ha la capacità di aggiornare tutti i pacchetti nella soluzione; puoi semplicemente chiamare il comando "Get-Project -All | Update-Package".

E in secondo luogo, prima di chiamare questo comando, assicurarsi di avere a disposizione le corrette origini del pacchetto.

+0

E in secondo luogo ... – Steven

+0

Questo comando della console non ha segnalato aggiornamenti disponibili per tutti i refs dei pacchetti in ogni proj nella soluzione, ma ci sono aggiornamenti e posso aggiornarli uno alla volta tramite la finestra di dialogo. –

+0

fammi controllare di nuovo. – daryal

Problemi correlati