ソリューション内のどのプロジェクトからも参照されていないNuGetパッケージを削除するにはどうすればよいですか?


141

どういうわけか、VS2012と.NET 4.5へのアップグレード中に、NuGetを混乱させることができました。パッケージマネージャー(およびパッケージフォルダー)に表示され、削除できないパッケージがあります(これらは、新しいパッケージ名で新しいバージョンに置き換えられたレガシASP.NET NuGetパッケージであると考えています。それぞれに[管理 ]ボタンしかない-しかし、アンインストールボタンはありません。使用されている場所を確認すると、ソリューションのどのプロジェクトからも参照されていないことがわかりますか?アンインストールが表示されていませんか?

回答:


108

コマンドでパッケージマネージャーコンソールを使用Uninstall-Package PackageIdして削除できます。または、ソリューションフォルダーの下の 'packages'フォルダーからパッケージフォルダーを削除します。パッケージマネージャーコンソールの詳細については、http//docs.nuget.org/docs/reference/package-manager-console-powershell-referenceを参照してください。


8
Pavelに感謝します。フォルダーを削除できる気がしました。手動でパッケージが参照されていないことを確認する必要があるため、少し困惑します(参照されていないように見えます)。パッケージマネージャーに[アンインストール(または削除)]ボタンが表示されない理由を知りたいと思っています。
ハワードピンズリー2012

2
ソリューションレベルのパッケージマネージャーは、ソリューションからのプロジェクトへのすべてのパッケージ参照と、パッケージフォルダーに配置されているが参照されていないすべてのパッケージを表示します。このパッケージでは、UIにアンインストール機能はありません。これは不正な動作の結果であることに同意しますが、この場合は手動で確認する必要があります。そして、あなたがそれを必要とするかどうか確信しているときに、パッケージを削除するかこれを再インストールしてください。
Pavel Bakshy、2012

1
フォルダーを削除し、NuGetに戻ってパッケージを表示するだけで、インストール済みとして表示され、その横に緑色のチェックマークが表示されます。コンソールを使用して適切にアンインストールすることをお勧めします。
k80sg 2013年

1
@ysrbは、get-userやremove-itemなどの動詞-名詞になるpowershellコマンドです。例は、名詞-動詞です
Nick Young

1
@ysrbニック・ヤングが言うように、それに加えて、それはへの恐ろしい賛辞になるでしょうInstall-Package
ProfK 2017

159

これの回避策を見つけました。

  1. パッケージの復元と自動チェックを有効にする(オプション/パッケージマネージャー/全般)
  2. パッケージフォルダーの内容全体を削除します(緊張している場合はごみ箱に移動してください!)
  3. ソリューションのNugetパッケージを管理する
  4. 復元ボタンをクリックします。

NuGetは、ソリューションで使用されているパッケージのみを復元します。あなたは素晴らしい、合理化されたパッケージのセットで終わります。


1
これはありませんではないからパッケージを削除packages.configしていないプロジェクトから参照を削除しますか?
CodeCaster 2014年

1
@CodeCasterはダブルネガティブの解析が困難です。構成と参照から何も削除されません。ここでのアイデアは、参照されなくなったNuGetパッケージを削除することです
James L

1
正解です。TFSを使用している場合は、最初にソースカウントロールエクスプローラーの./packages内のすべてのコンテンツを削除して、ビルドマシンなどの他のクライアントでも冗長なアイテムが削除されるようにする必要があります。
アレクサンダーシュミット

4
@ sprinter252、パッケージの復元を使用している場合、最初にパッケージをソース管理にチェックインする必要はありません。これは、パッケージの復元を使用する主な利点の1つです。パッケージの復元への変換の一環として、「無視」ルールをパッケージフォルダーに配置する必要があります。
カールブセマ2014年

@CarlBussemaそうですね。新しいNuGetバージョン以降、Nugetはバイナリをサブフォルダーに追加しないため、これはそれほど重要ではありません。つまり、フォルダー構造しか取得できません。私のコメントは、TFSのデフォルトの動作(packages-folderを含む)に関連していました。TFS Anywhereでは、無視はしばしば無視されます;-)。Xamarinとの混合プロジェクトにとって重要です。
アレクサンダーシュミット

17

まず、パッケージマネージャーコンソールを開きます。次に、ドロップダウンリストからプロジェクトを選択します。また、次のコマンドを実行して、nugetパッケージをアンインストールします。

Get-Package

インストールしたすべてのパッケージを取得するため。

その後

Uninstall-Package PagedList.Mvc

--- PagedList.MVCという名前のパッケージをアンインストールします

メッセージ

PM> Uninstall-Package PagedList.Mvc
Successfully removed 'PagedList.Mvc 4.5.0.0' from MCEMRBPP.PIR.

この答えは私にとって完璧に機能しました。私の状況では、パッケージはダイアログの[更新]タブにしか表示されませんでした ...そして、[更新]をクリックすると、パッケージがインストールされているプロジェクトはありませんでした。そのため、更新または削除する方法がありませんでした。
azarc3 2015年

8

ソリューションの複数のプロジェクトに適用されているNugetパッケージを削除/アンインストールする場合は、次の場所に移動します。

  1. ツール-> Nugetパッケージマネージャー->ソリューションのNugetパッケージの管理

  2. 左側の列の[インストールされたパッケージ]で[すべて]を選択すると、インストールされたパッケージのリストとそれら全体の[管理]ボタンが表示されます。

  3. [管理]ボタンを選択すると、ポップアウトが表示され、プロジェクト名全体のチェックボックスをオフにして[OK]をクリックします

残りの作業はパッケージマネージャーが行います。


1
これは間違いなく私が探していた答えです、ありがとう!
2017

3

Uninstall-Packageユーティリティを使用してパッケージを削除し、ソリューションのパッケージディレクトリから目的のパッケージを削除した場合(それでもエラーが発生する場合)、コードエディターで* .csprojファイルを開き、タグを手動で削除します。たとえば、NugetパッケージXamarin.Forms.Aliasを削除したかったため、これらの行を* .csprojファイルから削除しました。

msbuildスクリプトからのnugetパッケージの削除

最後に、Visual Studioでプロンプトが表示されたら(プロジェクトファイルを変更した後)、プロジェクトをリロードすることを忘れないでください。Visual Studio 2015で試してみましたが、Visual Studio 2010以降でも動作するはずです。

お役に立てれば。


2

別の方法として、ソリューションのプロジェクトに削除したい未使用のパッケージをインストールします。その後、アンインストールするとNugetによって削除されます。

ここには適切なアンインストーラーが必要です。


再インストールせずに正しくアンインストールする方法はありますか?
Knox

2

解決策1

PowerShellパイプラインを使用してパッケージを取得し、このような単一のステートメントで削除します

Get-Package | Uninstall-Package

解決策2

選択したパッケージをアンインストールする場合は、次の手順に従ってください

  1. GetPackagesパッケージのリストを取得するために使用します
  2. Nimbleテキストソフトウェアをダウンロードする
  3. の出力をGetPackagesNimbleTextにコピーします(リストウィンドウの各行に対して)
  4. (必要に応じて列セパレーターをに設定します
  5. タイプUninstall-Package $0(パターンウィンドウを使用して置換)
  6. 結果をコピーしてPackage Manage Consoleに貼り付けます

それはすべての人々です。


1

1つのNuGetパッケージが別のNuGetパッケージを参照できます。そのため、パッケージ間の依存関係には十分注意してください。Googleマップパッケージをアンインストールしましたが、その後、Newtonsoft、Entity Frameworkなどの基になるパッケージがアンインストールされました。

したがって、パッケージフォルダーから特定のパッケージを手動で削除する方が安全です。


1

パッケージマネージャーのコンソールウィンドウから、パッケージのインストールに使用したコマンドを使用して、そのパッケージをアンインストールできることがよくあります。単にINSTALLコマンドをUNINSTALLに置き換えます。

たとえば、PowerTCPTelnetをインストールするには、コマンドは次のとおりです。

Install-Package PowerTCPTelnet -Version 4.4.9

同じものをアンインストールするには、コマンドは次のとおりです。

Uninstall-Package PowerTCPTelnet -Version 4.4.9


1

VS2019>ツール>オプション> Nugetパッケージマネージャー>一般>「すべてのNugerキャッシュをクリア」をクリックします


-2

他の方法、そして私にとって最も単純なのは:

  1. Soutionに移動し、これを右クリックします。

  2. 「ソリューションの管理されたNUgetsパッケージ」オプションを選択します。「設定」ボタンをクリックして、ポップアップウィンドウを開きます。これにより、他のポップアップウィンドウが開き、「パッケージマネージャー」で検索されます。

  3. オプション「Package Manager」の内部には、さらに2つのオプションがあります(I. General II。Packages Sources)。各オプションで、すべてのチェックボックスをオフにします。

この手順では、プロジェクトからNuGetを非アクティブ化します。

本当にお役に立てば幸いです。


-2

Visual Studioオプションを使用する場合は、以下のリンクを参照してください

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

ステップ1:Visual Studioで、Tools / NuGet Package Manager / Manage NuGet Packages for Solution…に移動します。

ステップ2:現在のソリューションからプロジェクトのチェックを外します

ステップ3:プロジェクトの選択を解除してOKを押す


2
リンクは将来失効する可能性があるため、リンクへのリンクを投稿するだけでなく、StackOverflowで回答を書き出すことをお勧めします。
アマデウスサンチェス2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.