Jak znaleźć nieużywane pakiety NuGet w rozwiązaniu?

148

Jak znaleźć nieużywane pakiety NuGet w rozwiązaniu?

Mam wiele rozwiązań, w których jest dużo zainstalowanych pakietów, a duża liczba jest oznaczana jako posiadająca aktualizacje.

Jednak obawiam się, że mogą nastąpić poważne zmiany, więc najpierw chcę uporządkować, usuwając nieużywane pakiety.

SteveC
źródło
2
Zdajesz sobie sprawę, że istotne zmiany w pakietach, których nie używasz, i tak nie wpłyną na ciebie ... Jeśli chodzi o pytanie, po prostu usuwam wszystkie pakiety NuGet i ponownie dodaję to, co powie mi kompilator.
Ohad Schneider
5
@OhadSchneider Nie ... ale OCD we mnie nie chce całego okrucieństwa nieużywanych pakietów, np. We wdrożeniu
SteveC

Odpowiedzi:

57

ReSharper 2016.1 ma funkcję usuwania nieużywanego NuGet.

Można go uruchomić na rozwiązaniu i na każdym projekcie w rozwiązaniu i wykonuje następujące czynności:

  1. Przeanalizuj swój kod i zbieraj odwołania do zestawów.
  2. Utwórz wykres użycia NuGet na podstawie użycia zestawów.
  3. Pakiety bez plików zawartości, same nieużywane i bez wykorzystanych zależności są uznawane za nieużywane i sugerowane do usunięcia.

Niestety, to nie działa w przypadku project.jsonprojektów ( RSRP-454515 ) i podstawowych projektów ASP.NET ( RSRP-459076 )

ulex
źródło
2
Mam 2016.1 i R # nie usuwa nieużywanych odwołań nuget .. Używam project.json z nuget3 - czy to znany problem?
Peter McEvoy
2
@PeterMcEvoy Tak, jest to znany problem. Dzięki za wskazanie. Zaktualizowałem odpowiedź, aby to wyjaśnić.
ulex
4
Muszę być ślepy, ale nie widzę żadnych sposobem faktycznie uruchomić to narzędzie
claudekennilol
14
@claudekennilol właśnie to rozgryzł. kliknij projekt prawym przyciskiem myszy i pojawi się opcja „Optymalizuj referencje ...”
Matt Sanders
1
@Fractal Correct. Jest to bardzo (zbyt) drogie dla użytkowników prywatnych, ale jeśli jesteś w jakimkolwiek miejscu pracy, Resharper jest tego wart ze względu na znacznie szybszy i czystszy przepływ pracy w porównaniu do domyślnego VS.
Excludos
21

Możesz użyć rozszerzenia Visual Studio ResolveUR - Resolve Unused References

Rozwiąż nieużywane odwołania, w tym odwołania nuget w projektach programu Visual Studio 2012/2013 za pomocą elementu menu w rozwiązaniu i węzłach projektu Okno narzędzia Eksplorator rozwiązań.

Nie jest to łatwe zadanie, więc sugeruję wykonanie kopii zapasowej i / lub zatwierdzenie wcześniej, aby cofnąć zmiany, jeśli coś pójdzie nie tak.

dknaack
źródło
Ten program jest zbyt chętny do usuwania bibliotek ... Uważaj, korzystając ze strony internetowej, zauważysz, że wiele bibliotek DLL jest potrzebnych, ale zniknęły. Jeśli pakiet NuGet wymaga innego, nie należy go usuwać, mimo że nie masz od niego twardej zależności.
jsgoupil
Użyłem tego narzędzia ze złymi wynikami. Usunięto (lub przynajmniej zasugerowano, aby usunąć) wiele rzeczy, które były faktycznie używane. Kilka razy zaufałem sugestiom i musiałem spędzić cenny czas, próbując odzyskać to, co zostało usunięte.
Ryan VandenHeuvel
2
[UWAGA] Opis wyraźnie stwierdza:The tool is not tested to work with DotNet Web projects(Asp.Net, MVC), Windows CE, Silverlight project types. Use it at your own risk.
Korayem
To narzędzie jest naprawdę fajne! Jest wystarczająco sprytny, aby nie usuwać NUnit.ConsoleRunner itp., Nawet jeśli nie masz bezpośredniego odniesienia do niego w swoim kodzie
OlegI
To narzędzie działa wolno. Mam rozwiązanie z ponad 250 projektami .. Czekałem .. i czekałem .. westchnienie
Piotr Kula
11

Możesz to osiągnąć za pomocą Resharper 2019.1.1.

Kliknij prawym przyciskiem myszy projekt> Refaktoryzuj> Usuń nieużywane odniesienia.

Jeśli Twój projekt jest mały, możesz również wykonać projekt> Optymalizuj używane odniesienia. . .

Pojawi się okno. Wybierz wszystkie odniesienia i usuń je wszystkie. Następnie wróć i ponownie dodaj te, które powodują błąd kompilatora.

Nick Gallimore
źródło
3
W VS.Net 2019 z Resharper znalazłem tę opcję w: Solution Explorer> References > Optimize References ...
R. Schreurs
„Okno narzędzia Optymalizuj odniesienia wyświetla odwołania do zespołów, które są zarówno nieużywane, jak i używane w bieżącym projekcie, oraz pokazuje, jak dokładnie odniesienia są używane”. blog.jetbrains.com/dotnet/2012/01/03/…
Nick Gallimore
1

To jest praca fizyczna, ale działa.

  1. Użyj narzędzia ReSharper lub podobnego narzędzia do analizy kodu, aby zidentyfikować wszelkie nieużywane odwołania w projektach i odinstaluj nuget w odpowiednich projektach.

  2. Czasami odinstalowane pakiety NuGet nadal pozostają na listach Zainstalowane pakiety i aktualizacje w oknie dialogowym Zarządzanie pakietami NuGet. Zamknij program Visual Studio, a następnie usuń packagesfolder, a następnie ponownie otwórz rozwiązanie i przywróć nugets.

angularsen
źródło
0

Nie sądzę, że istnieje domyślny sposób, aby się tego dowiedzieć. Głównym powodem jest różnorodność rzeczy, które te pakiety mogą robić, od odwoływania się do zestawu do wstrzykiwania kodu źródłowego do projektu. Możesz jednak sprawdzić Nuget.Extensions . Poniższy wątek w Codeplex mówi o raporcie audytu pakietów NuGet.

http://nuget.codeplex.com/discussions/429694

(NuGet został przeniesiony z Codeplex do GitHub. Archiwum powyższego linku :) https://web.archive.org/web/20171212202557/http://nuget.codeplex.com:80/discussions/429694

Nikhil Gupta
źródło