2012-03-30 15 views
15

SCENARIUSZANuget - zarządzanie i usuwanie opakowań wielo wersji w jednym rozwiązaniu

roztwór

Jeden z VS n projektów. Projekt Referencyjny pakiet Y v1, Projekt referencyjny pakiet B Y v2. Nie jest teraz możliwe uaktualnienie wszystkich odniesień do pakietu Y dla wszystkich projektów w rozwiązaniu za pomocą okna dialogowego zarządzania pakietami NuGet na poziomie rozwiązania, można to zrobić tylko wtedy, gdy wszystkie projekty odnoszą się do tej samej wersji pakietu Y. Nie jest to duże zajmują się tylko dwoma projektami, ale mam do czynienia z wieloma projektami, które poprzez złe zarządzanie pakietami odnoszą się do wielu wersji pakietów, gdy wszystkie powinny odnosić się do tej samej wersji.

Zanim spędzę popołudnie, piszę aplikację konsolową. automatycznie aktualizować wszystkie pliki package.config w celu znalezienia rozwiązania, dzięki czemu do każdego przywoływanego pakietu odwołuje się tylko jego najnowsza wersja (najnowsze odnośniki, nie najnowsze, z wyjątkami/zastrzeżeniami itp.) ... czy istnieje narzędzie/metoda do wykonania to już? Albo jakieś inne podejście, którego nie jestem świadomy?

+0

piątkowe popołudnie to dobry czas na to! – Bond

+0

Czy próbowałeś użyć sed lub awk? –

+0

lub powershell !! –

Odpowiedz

10

Możesz to zrobić w Menedżerze pakietów Nuget dla rozwiązania (Aby znaleźć menu, kliknij prawym przyciskiem myszy rozwiązanie lub wybierz Narzędzia-> Menedżer pakietów bibliotecznych). Zakładka Aktualizacja w tym oknie dialogowym zaproponuje aktualizację dla wielu projektów, w których ma zastosowanie aktualizacja. To samo dotyczy odinstalowywania z zakładki Zainstalowane.

Lub przy otwartym rozwiązaniu, otwórz konsolę NuGet, uruchom "Update-Package", aby zaktualizować wszystkie pakiety dla wszystkich projektów. Może także współpracować zaktualizować konkretnych pakietów/projekty:

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

znajdzie te same aktualizacje niż w oknie, po prostu upewnij się, że prawy kanał (lub „All”) wybiera się w „pakiet źródłowy:” rozwijana .

przykład:

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

Po pierwsze, tylko zmiana plików xml nie jest wystarczająca, aby NuGet mógł zmienić referencje. W rzeczywistości czasami pojawiają się błędy, gdy ręcznie modyfikujesz pliki packages.config. konsola menedżera pakietów ma możliwość aktualizacji wszystkich pakietów w rozwiązaniu; możesz po prostu wywołać komendę "Get-Project-All | Update-Package".

Po drugie, przed wywołaniem tego polecenia upewnij się, że masz dostępne odpowiednie źródła pakietów.

+0

A po drugie ... – Steven

+0

To polecenie konsoli zgłosiło brak dostępnych aktualizacji dla wszystkich odwołań do pakietów w każdym proj w rozwiązaniu, ale są aktualizacje i mogę aktualizować je pojedynczo za pomocą okna dialogowego. –

+0

Pozwól mi sprawdzić ponownie. – daryal

Powiązane problemy