Aggiornare in automatico i package NuGet in tutti i progetti della soluzione Visual Studio

Difficilmente una soluzione Visual Studio contiene solo un progetto.

Supponiamo di avere una soluzione con due class library project A e B e di aggiungere il package NHibernate versione 3.1.0.4000 ad entrambi i progetti.

Se si utilizza NuGet out of the box e si esegue il comando (sul progetto A)

 

Update-Package NHibernate

 

verranno aggiornate solo le reference del progetto A e non del progetto B.

E’ quindi necessario eseguire manualmente l’update su tutti i progetti che usano un certo package.

Per aggiornare tutti i progetti che utilizzano uno specifico package è possibile installare preventivamente il package NuGetPackageUpdater che si occupa proprio di aggiornare in automatico tutti i progetti che utilizzano un determinato package.

Eseguendo quindi il comando

 

Update-Package NHibernate

 

si ottiene questo risultato:

PM> update-package NHibernate

Updating NHibernate in all referenced projects

‘Iesi.Collections (= 3.2.0.2001)’ not installed.

Attempting to retrieve dependency from source…

Done.

Successfully installed ‘Iesi.Collections 3.2.0.2001’.

Successfully installed ‘NHibernate 3.2.0.2001’.

Successfully removed ‘NHibernate 3.1.0.4000’ from ClassLibraryA.

Successfully removed ‘Iesi.Collections 3.1.0.4000’ from ClassLibraryA.

Successfully added ‘Iesi.Collections 3.2.0.2001’ to ClassLibraryA.

Successfully added ‘NHibernate 3.2.0.2001’ to ClassLibraryA.

‘NHibernate 3.2.0.2001’ already installed.

Successfully removed ‘NHibernate 3.1.0.4000’ from ClassLibraryB.

Successfully removed ‘Iesi.Collections 3.1.0.4000’ from ClassLibraryB.

Successfully added ‘Iesi.Collections 3.2.0.2001’ to ClassLibraryB.

Successfully added ‘NHibernate 3.2.0.2001’ to ClassLibraryB.

Successfully uninstalled ‘NHibernate 3.1.0.4000’.

Successfully uninstalled ‘Iesi.Collections 3.1.0.4000’.

NB: se si utilizza il file nuget.config per spostare tutti i package come riportato in questo precedente post questo tool non funziona. Comunque la feature che consente di avere un solo folder a livello di soluzione è in corso di implementazione (http://nuget.codeplex.com/wikipage?title=Package%20Updates%20Should%20Be%20Global).

Share

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.