Jak usunąć pakiety NuGet, do których nie odwołuje się żaden projekt w moim rozwiązaniu?

141

W jakiś sposób podczas aktualizacji do VS2012 i .NET 4.5 udało mi się pomylić NuGet. Istnieją pakiety, które pojawiają się w menedżerze pakietów (i folderze pakietów), których nie mogę usunąć (uważam, że są to starsze pakiety ASP.NET NuGet, które zostały zastąpione nowymi nazwami pakietów w nowej wersji. Każdy z nich ma tylko przycisk Zarządzaj - ale nie ma przycisku odinstalowania. A kiedy spojrzysz, aby zobaczyć, gdzie są używane, zobaczysz, że nie ma do nich odwołań w żadnym z projektów rozwiązania? NIE wyświetlają odinstalowania?

Howard Pinsley
źródło

Odpowiedzi:

108

Możesz użyć konsoli Menedżera pakietów za pomocą polecenia: Uninstall-Package PackageIdaby go usunąć lub po prostu usuń folder pakietów z folderu „packages” w folderze rozwiązania. Więcej informacji o konsoli menedżera pakietów można znaleźć tutaj: http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference

Pavel Bakshy
źródło
8
Dzięki Pavel. Miałem wrażenie, że możesz po prostu usunąć foldery. Jest to trochę niepokojące, ponieważ muszę ręcznie upewnić się, że żaden z pakietów nie jest przywoływany (nie wygląda na to). Nadal jestem ciekawy, dlaczego menedżer pakietów nie wyświetla przycisku Odinstaluj (lub usuń).
Howard Pinsley,
2
Menedżer pakietów na poziomie rozwiązania wyświetla wszystkie odwołania do pakietów do projektów z rozwiązania i dodatkowo wszystkie pakiety, które zostały umieszczone w folderze pakietów, ale nie są przywoływane. W przypadku tych pakietów nie ma możliwości odinstalowania w interfejsie użytkownika. Zgadzam się, że jest to wynikiem nieprawidłowego zachowania, ale w takim przypadku należy to sprawdzić ręcznie. I usuń pakiet lub zainstaluj go ponownie, kiedy będziesz tego potrzebować, czy nie.
Pavel Bakshy,
1
Po prostu usuwając folder i wracając do NuGet i wyświetlając pakiet, w jakiś sposób nadal wyświetla się jako zainstalowany z zielonym znaczkiem obok niego, lepiej wykonać właściwą dezinstalację za pomocą konsoli.
k80sg
1
@ysrb, to polecenie PowerShell, które przechodzi czasownik-rzeczownik, na przykład get-user lub remove-item, twój przykład to rzeczownik-czasownik
Nick Young
1
@ysrb Jak mówi Nick Young, a poza tym byłby to potworny komplement Install-Package.
ProfK
159

Znalazłem obejście tego problemu.

  1. Włącz przywracanie pakietów i automatyczne sprawdzanie (Opcje / Menedżer pakietów / Ogólne)
  2. Usuń całą zawartość folderu pakietów (do Kosza, jeśli się denerwujesz!)
  3. Zarządzaj pakietami Nuget w poszukiwaniu rozwiązania
  4. Kliknij przycisk przywracania.

NuGet przywróci tylko pakiety używane w rozwiązaniu. Otrzymujesz ładny, usprawniony zestaw pakietów.

James L.
źródło
1
Nie będzie to nie usunąć paczkę od packages.configa nie usunięcie odniesień z projektu?
CodeCaster,
1
@CodeCaster trudno przeanalizować podwójny minus. Nic nie zostanie usunięte z konfiguracji i odniesień. Chodzi o to, aby usunąć pakiety NuGet, do których nie ma już odwołań
James L
1
Doskonała odpowiedź! Jeśli używasz TFS, powinieneś najpierw usunąć całą zawartość wewnątrz ./packages w źródłowym eksploratorze countrol, aby inni klienci, tacy jak maszyny budujące, również usunęli nadmiarowe elementy.
Alexander Schmidt
4
@ sprinter252, jeśli używasz przywracania pakietów, nie powinieneś w pierwszej kolejności sprawdzać pakietów w kontroli źródła. To jedna z głównych zalet korzystania z przywracania pakietów. W ramach konwersji do przywracania pakietów w folderze pakietów należy umieścić regułę „ignoruj”.
Carl Bussema
@CarlBussema Masz rację. Od nowej wersji NuGet nie jest to tak ważne, ponieważ Nuget nie doda żadnych plików binarnych do podfolderów. Więc dostajesz tylko strukturę folderów. Mój komentarz dotyczył domyślnego zachowania TFS (w tym folder-pakiety). W TFS Anywhere wartości ignorowane są często ignorowane ;-). Ważne w przypadku projektów mieszanych z platformą Xamarin.
Alexander Schmidt
17

Najpierw otwórz konsolę Menedżera pakietów. Następnie wybierz projekt z listy rozwijanej. Uruchom następujące polecenia, aby odinstalować pakiety NuGet.

Get-Package

za pobranie całego zainstalowanego pakietu.

i wtedy

Uninstall-Package PagedList.Mvc

--- aby odinstalować pakiet o nazwie PagedList.MVC

Wiadomość

PM> Uninstall-Package PagedList.Mvc
Successfully removed 'PagedList.Mvc 4.5.0.0' from MCEMRBPP.PIR.
Abdus Salam Azad
źródło
Ta odpowiedź zadziałała idealnie dla mnie. Moja sytuacja była taka, że ​​pakiet pojawił się tylko pod zakładką Aktualizacje w oknie dialogowym ... a kiedy kliknąłem Aktualizuj, żaden projekt nie miał zainstalowanego pakietu - więc nie było sposobu, aby go zaktualizować lub usunąć.
azarc3
8

Jeśli chcesz usunąć / odinstalować pakiet Nuget, który jest stosowany do wielu projektów w Twoich rozwiązaniach, przejdź do:

  1. Narzędzia -> Menedżer pakietów Nuget -> Zarządzaj pakietami Nuget w celu rozwiązania

  2. W lewej kolumnie, w której znajduje się „Zainstalowane pakiety”, wybierz „Wszystkie”, aby wyświetlić listę zainstalowanych pakietów i przycisk Zarządzaj.

  3. Wybierz przycisk Zarządzaj, a pojawi się wyskakujące okienko, odznacz pole wyboru w nazwie projektu i OK

Reszta pracy Menedżer pakietów zrobi to za Ciebie.


źródło
1
To jest zdecydowanie odpowiedź, której szukałem, dzięki!
Sal
3

Jeśli usunąłeś pakiet za pomocą narzędzia Uninstall-Package i usunąłeś żądany pakiet z katalogu pakietu w rozwiązaniu (i nadal pojawia się błąd), po prostu otwórz plik * .csproj w edytorze kodu i usuń tag ręcznie. Jak na przykład, chciałem pozbyć Nuget pakietów Xamarin.Forms.Alias i usunąłem te wiersze z pliku * .csproj.

Usuwanie pakietu NuGet ze skryptu MSBuild

I na koniec nie zapomnij ponownie załadować projektu po wyświetleniu monitu w programie Visual Studio (po zmianie pliku projektu). Wypróbowałem to na Visual Studio 2015, ale powinno działać również w Visual Studio 2010 i nowszych.

Mam nadzieję że to pomoże.

AB
źródło
2

Alternatywą jest zainstalowanie nieużywanego pakietu, który chcesz usunąć w dowolnym projekcie rozwiązania, a następnie odinstaluj go, a Nuget również go usunie.

Potrzebny jest tutaj odpowiedni deinstalator.

D.Rosado
źródło
Czy istnieje sposób na poprawne odinstalowanie bez ponownej instalacji?
Knox
2

Rozwiązanie 1

Użyj potoku Powerhell, aby pobrać pakiety i usunąć je w jednej instrukcji, jak to

Get-Package | Uninstall-Package

Rozwiązanie 2

jeśli chcesz odinstalować wybrane pakiety, wykonaj następujące kroki

  1. Posługiwać się GetPackages aby uzyskać listę pakietów
  2. Pobierz Nimble text oprogramowanie
  3. Skopiuj dane wyjściowe GetPackages w NimbleText (dla każdego wiersza w oknie listy)
  4. W (razie potrzeby ustaw separator kolumn na
  5. Typ Uninstall-Package $0(Zastąp za pomocą okna wzorca)
  6. Skopiuj wyniki i wklej je w konsoli zarządzania pakietami

To wszyscy ludzie.

irfandar
źródło
1

Jeden pakiet NuGet może odwoływać się do innego pakietu NuGet. Dlatego należy bardzo uważać na zależności między pakietami. Właśnie odinstalowałem pakiet mapy Google, a następnie odinstalowałem podstawowe pakiety, takie jak Newtonsoft, Entity Framework itp.

Zatem ręczne usunięcie określonego pakietu z folderu pakietów byłoby bezpieczniejsze.

Aki
źródło
1

W oknie konsoli Menedżera pakietów często można użyć dowolnego polecenia użytego do zainstalowania pakietu, aby odinstalować ten pakiet. Po prostu zamień polecenie INSTALL na ODINSTALUJ .

Na przykład, aby zainstalować PowerTCPTelnet, polecenie brzmi:

Install-Package PowerTCPTelnet -Version 4.4.9

Aby odinstalować to samo, polecenie brzmi:

Uninstall-Package PowerTCPTelnet -Version 4.4.9

Jazimov
źródło
1

VS2019> Narzędzia> Opcje> Menedżer pakietów NuGet> Ogólne> Kliknij „Wyczyść wszystkie pamięci podręczne Nuger”

harris
źródło
-2

Innym sposobem i najprościej dla mnie jest:

  1. Idź do swojego Soution, a następnie kliknij prawym przyciskiem myszy.

  2. Wybierz opcję „Zarządzane pakiety NUgets dla rozwiązania”. To otworzy wyskakujące okienko, w tym kliknij przycisk "Ustawienia". Spowoduje to otwarcie innego wyskakującego okienka, a następnie wyszukanie: „Menedżer pakietów”.

  3. W opcji „Menedżer pakietów” masz jeszcze dwie opcje (I. Ogólne II. Źródła pakietów) W każdej opcji odznacz wszystkie pola wyboru.

Te kroki dezaktywują NuGet z projektu.

Mam nadzieję, że naprawdę ci pomogę.

amedriveroperez
źródło
-2

Jeśli chcesz skorzystać z opcji Visual Studio, zobacz poniższe łącze

http://spvenky.wordpress.com/2014/08/10/how-to-remove-nuget-packages-from-existing-visual-studio-solution/

Krok 1: W programie Visual Studio przejdź do Narzędzia / Menedżer pakietów NuGet / Zarządzaj pakietami NuGet w celu znalezienia rozwiązania…

Krok 2: Usuń zaznaczenie projektów z aktualnego rozwiązania

Krok 3: Odznacz projekt (y) i naciśnij OK

user1214835
źródło
2
Lepiej jest napisać odpowiedź w StackOverflow niż po prostu opublikować link do niej, ponieważ linki mogą wygasnąć w przyszłości.
Amadeus Sánchez