ソリューションで未使用のNuGetパッケージを見つけるにはどうすればよいですか?


148

ソリューションで未使用のNuGetパッケージを見つけるにはどうすればよいですか?

インストール済みのパッケージに多くの解決策があり、多数の更新プログラムがあるとフラグが立てられています。

しかし、私は重大な変更があるのではないかと懸念しているため、まず未使用のパッケージを削除してクリーンアップしたいと思います。


2
使用していないパッケージの変更を壊しても影響はないことに気づきました...質問については、すべてのNuGetパッケージを削除して、コンパイラーの指示を再追加します。
Ohad Schneider 2017

5
@OhadSchneider Nope ...しかし、私のOCDは、未使用のパッケージをすべて残したくありません。例えば、デプロイメント
SteveC

回答:


57

ReSharper 2016.1には、未使用のNuGetを削除する機能あります。

ソリューションおよびソリューションの各プロジェクトで実行でき、次のことを行います。

  1. コードを分析し、アセンブリへの参照を収集します。
  2. アセンブリの使用状況に基づいてNuGet使用状況グラフを作成します。
  3. コンテンツファイルがなく、それ自体が未使用で、依存関係が使用されていないパッケージは、未使用と見なされ、削除するように提案されます。

残念ながら、これはproject.jsonプロジェクト(RSRP-454515)およびASP.NETコアプロジェクト(RSRP-459076)では機能しません


2
2016.1があり、R#は未使用のnuget参照を削除していません。nuget3でproject.jsonを使用しています-これは既知の問題ですか?
Peter McEvoy 2016

2
@PeterMcEvoyはい、これは既知の問題です。ご指摘ありがとうございます。それを明確にするために回答を更新しました。
ulex

4
私は盲目である必要がありますが、このツールを実際に実行する方法はありません
claudekennilol 2017年

14
@claudekennilolはちょうどそれを理解しました。プロジェクトを右クリックすると、「参照の最適化...」のオプションがあります
Matt Sanders

1
@フラクタル正しい。プライベートユーザーにとっては非常に(高すぎる)費用がかかりますが、どのような種類の職場にいる場合でも、Resharperは、デフォルトのVSと比較して、はるかに高速でクリーンなワークフローを実現する価値があります。
除外(

21

Visual Studio Extension ResolveUR-未使用の参照の解決を使用できます

ソリューションおよびプロジェクトノードのソリューションエクスプローラーツールウィンドウのメニュー項目を使用して、Visual Studio 2012/2013プロジェクトのnuget参照を含む未使用の参照を解決します。

これは簡単な作業ではないので、何か問題が発生した場合にロールバックするために、前にバックアップを作成してコミットすることをお勧めします。


ライブラリの削除に関しては、このプログラムは熱心すぎます。Webサイトを使用すると、多くのDLLが必要であるにもかかわらず、なくなっていることに気付くでしょう。NuGetパッケージに別のパッケージが必要な場合は、依存関係がなくても削除しないでください。
jsgoupil 2016

私はこのツールを使用しましたが、結果は良くありません。実際に使用されていた多くのものが削除されました(または少なくとも削除することをお勧めします)。何度か提案を信頼し、削除されたものを復元するために貴重な時間を費やす必要がありました。
Ryan VandenHeuvel 2017

2
[注]説明は、明らかに状態: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

このツールは本当にいいです!コードで直接参照していなくても、NUnit.ConsoleRunnerなどを削除しないほど賢い
OlegI

このツールは遅いです。私は250以上のプロジェクトで解決策を持っています..私は待っていました..そして待っていました..ため息
Piotr Kula

11

これは、Resharper 2019.1.1を使用して実現できます。

プロジェクトを右クリックし、[リファクタリング]> [未使用の参照を削除]を選択します。

プロジェクトが小さい場合は、[プロジェクト]> [使用する参照を最適化]を選択することもできます。。。

ウィンドウがポップアップします。すべての参照を選択し、すべて削除します。次に戻って、コンパイラエラーが発生するものを再度追加します。


3
VS.Net 2019でResharperを使用して、このオプションをソリューションエクスプローラー> 参照 >参照を最適化...の
R.シュルール

「参照の最適化ツールウィンドウには、未使用で現在のプロジェクトで使用されているアセンブリ参照が表示され、参照の使用方法が正確に示されます。」blog.jetbrains.com/dotnet/2012/01/03/...
ニックGallimore

1

これは手作業ですが、うまくいきます。

  1. ReSharperまたは同様のコード分析ツールを使用して、プロジェクト内の未使用の参照を特定し、対応するプロジェクトのnugetをアンインストールします。

  2. アンインストールされたNuget が、[NuGetパッケージの管理]ダイアログの[ インストールされたパッケージ] および[ 更新]リストに残っていることがあります。Visual Studioを閉じてpackagesフォルダーを削除し、ソリューションを再度開いて、nugetsを復元します。


0

これを見つけるためのデフォルトの方法はないと思います。主な理由は、これらのパッケージがアセンブリの参照からプロジェクトへのソースコードの挿入までさまざまなことができるためです。Nuget.Extensionsを確認することもできます。次のcodeplexのスレッドでは、nugetパッケージの監査レポートについて説明しています。

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

(NuGetはCodeplexからGitHubに移動されました。上記のリンクのアーカイブ:) https://web.archive.org/web/20171212202557/http://nuget.codeplex.com:80/discussions/429694

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.