Come trovare i pacchetti NuGet inutilizzati in una soluzione?


148

Come trovare i pacchetti NuGet inutilizzati in una soluzione?

Ho un numero di soluzioni in cui ce ne sono molte sui pacchetti installati e un gran numero è contrassegnato con aggiornamenti.

Tuttavia, sono preoccupato che potrebbero esserci delle modifiche, quindi prima voglio ripulire rimuovendo tutti i pacchetti non utilizzati.


2
Ti rendi conto che rompere le modifiche nei pacchetti che non stai usando non ti influenzerebbe comunque ... Per quanto riguarda la domanda, rimuovo semplicemente tutti i pacchetti NuGet e aggiungo nuovamente ciò che mi dice il compilatore.
Ohad Schneider,

5
@OhadSchneider No ... ma l'OCD in me non vuole tutta l'innesto dei pacchetti inutilizzati, ad esempio nello schieramento
SteveC

Risposte:


57

ReSharper 2016.1 ha una funzione per rimuovere NuGet inutilizzato.

Può essere eseguito su una soluzione e su ciascun progetto in una soluzione e fa le seguenti cose:

  1. Analizza il tuo codice e raccogli i riferimenti agli assiemi.
  2. Crea un grafico di utilizzo NuGet basato sugli usi degli assiemi.
  3. I pacchetti senza file di contenuto, inutilizzati e senza dipendenze utilizzate sono considerati inutilizzati e suggeriti di rimuoverli.

Sfortunatamente, questo non funziona per i project.jsonprogetti ( RSRP-454515 ) e per i progetti principali ASP.NET ( RSRP-459076 )


2
Ho 2016.1 e R # non rimuove i riferimenti nuget inutilizzati. Sto usando project.json con nuget3 - è un problema noto?
Peter McEvoy,

2
@PeterMcEvoy Sì, questo è un problema noto. Grazie per averlo segnalato. Ho aggiornato la risposta per chiarirlo.
ulex

4
Devo essere cieco ma non vedo alcun modo per eseguire effettivamente questo strumento
claudekennilol

14
@claudekennilol l'ha appena capito. fai clic destro sul progetto e c'è un'opzione per "Ottimizza riferimenti ..."
Matt Sanders

1
@Fractal Correct. È molto (troppo) costoso per gli utenti privati, ma se ti trovi in ​​qualsiasi tipo di posto di lavoro, Resharper vale la pena per il flusso di lavoro molto più veloce e più pulito che ottieni, rispetto al VS predefinito.
Escluso il

21

È possibile utilizzare Visual Studio Extension ResolveUR - Risolvi riferimenti inutilizzati

Risolvi i riferimenti inutilizzati inclusi i riferimenti di nuget nei progetti di Visual Studio 2012/2013 tramite la voce di menu nella finestra degli strumenti Esplora soluzioni della soluzione e dei nodi di progetto.

Non è un compito facile, quindi suggerisco di fare un backup e / o eseguire il commit prima solo per ripristinare se qualcosa è andato storto.


Questo programma è troppo desideroso quando si tratta di eliminare le librerie ... Fai attenzione, quando usi un sito web, noterai che molte DLL sono necessarie ma non ci sono più. Se un pacchetto NuGet ne richiede un altro, non è necessario eliminarlo anche se NON si ha una forte dipendenza da esso.
jsgoupil,

Ho usato questo strumento con risultati negativi. Ha rimosso (o almeno suggerito di rimuovere) molte cose che erano effettivamente in uso. Ci sono state alcune volte in cui mi sono fidato dei suggerimenti e ho dovuto trascorrere del tempo prezioso cercando di recuperare ciò che è stato rimosso.
Ryan VandenHeuvel il

2
[NOTA] LA descrizione indica chiaramente: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,

Questo strumento è davvero bello! È abbastanza intelligente da non rimuovere NUnit.ConsoleRunner ecc. Anche se non hai un riferimento diretto ad esso nel tuo codice
OlegI

Questo strumento è lento. Ho una soluzione con oltre 250 progetti .. Ho aspettato .. e atteso ... sospiro
Piotr Kula

11

Puoi farlo usando Resharper 2019.1.1.

Fare clic con il tasto destro sul progetto> Refactor> Rimuovi riferimenti non utilizzati.

Se il tuo progetto è piccolo, puoi anche proiettare> Ottimizza riferimenti usati. . .

Apparirà una finestra. Seleziona tutti i riferimenti e rimuovili tutti. Quindi tornare indietro e aggiungere nuovamente quelli che ti danno un errore del compilatore.


3
In VS.Net 2019 con Resharper, ho trovato questa opzione in: Esplora soluzioni> Riferimenti > Ottimizza riferimenti ...
R. Schreurs,

"La finestra dello strumento Ottimizza riferimenti visualizza i riferimenti di assieme che non sono utilizzati né utilizzati nel progetto corrente e mostra come vengono utilizzati esattamente i riferimenti." blog.jetbrains.com/dotnet/2012/01/03/…
Nick Gallimore il

1

Questo è lavoro manuale, ma funziona.

  1. Utilizzare ReSharper o uno strumento di analisi del codice simile per identificare eventuali riferimenti non utilizzati nei progetti e disinstallare il nuget nei progetti corrispondenti.

  2. A volte i nuget disinstallati rimangono negli elenchi Pacchetti installati e Aggiornamenti nella finestra di dialogo Gestisci pacchetti NuGet. Chiudi Visual Studio, quindi elimina la packagescartella, quindi riapri la soluzione e ripristina i tuoi nuget.


0

Non penso che ci sia un modo predefinito per scoprirlo. Il motivo principale è la varietà di cose che questi pacchetti possono fare dal riferimento a un assembly all'iniezione del codice sorgente nel progetto. Potresti voler controllare Nuget.Extensions però. Il seguente thread su codeplex parla di un rapporto di audit dei pacchetti nuget.

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

(NuGet è stato spostato da Codeplex a GitHub. Archivio del link sopra :) https://web.archive.org/web/20171212202557/http://nuget.codeplex.com:80/discussions/429694

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.