shuhelohelo’s blog

Xamarin.Forms多めです.

Nugetパッケージのキャッシュをクリアする

2020.07.30追記

Visual StudioTool > optionsからキャッシュをクリアできるとのこと.

qiita.com

このClear All Nuget Cachesというボタン.

f:id:shuhelohelo:20200730011718p:plain

本文

rksoftware.hatenablog.com

docs.microsoft.com

ふと気づくとローカルストレージの容量が心もとなくなっていました.

f:id:shuhelohelo:20200627151239p:plain

Visual Studioを始めとした開発環境のサイズが大きいのはわかるのですが,それにしても空きが少なすぎる,と思いました.いったい何がそんなに容量食っているのかと.

DiskInfoというフリーソフトでストレージの使用状況を確認してみたところ,どうやらNugetパッケージのキャッシュがかなりのサイズになっていることがわかりました.

f:id:shuhelohelo:20200627152726p:plain

20GB,パッケージ数にして918...

普段,色々な人たちのリポジトリからcloneしてローカル環境で実行したり,新しいパッケージを見つけたらそれを試してみるためにプロジェクトを作ってNugetでパッケージをインストールしたりを頻繁に行っているためです.

キャッシュはよく使うものであればとても有用ですが,私の場合は普段の使い方の性質上,一度しか使っていないパッケージが大量にキャッシュされたままになっています.

これは一度大掃除が必要だなと思いました.

冒頭の2つの記事を参考にキャッシュをクリアする手順をメモとして残します.

キャッシュの保存場所を確認する

キャッシュの保存場所は以下のコマンドで確認します.

dotnet nuget locals all --list

出力:

http-cache: C:\Users\hoge\AppData\Local\NuGet\v3-cache
global-packages: C:\Users\hoge\.nuget\packages\
temp: C:\Users\hoge\AppData\Local\Temp\NuGetScratch
plugins-cache: C:\Users\hoge\AppData\Local\NuGet\plugins-cache

4つのディレクトリが表示されました.

.nugetだけじゃないんかい.

それぞれのサイズを確認すると以下のとおりでした.24GB...

サイズ(GB)
http-cache 4.38
global-packages 20.01
temp 0
plugins-cache 0
Total 24.39

キャッシュを削除する

rksoftwareさんの記事によると,エクスプローラから削除しても大丈夫のようです.が,記事内でも書かれているようにこれは自己責任で.

公式の方法としてはdotnet nugetコマンドで削除します.これは上記4箇所のキャッシュを個別にクリアすることもできるし,まとめてクリアすることもできるとのことです.

# Clear the 3.x+ cache (use either command)
dotnet nuget locals http-cache --clear
nuget locals http-cache -clear

# Clear the 2.x cache (NuGet CLI 3.5 and earlier only)
nuget locals packages-cache -clear

# Clear the global packages folder (use either command)
dotnet nuget locals global-packages --clear
nuget locals global-packages -clear

# Clear the temporary cache (use either command)
dotnet nuget locals temp --clear
nuget locals temp -clear

# Clear the plugins cache (use either command)
dotnet nuget locals plugins-cache --clear
nuget locals plugins-cache -clear

# Clear all caches (use either command)
dotnet nuget locals all --clear
nuget locals all -clear

なるほど.

ではさっそくまとめて削除します.

dotnet nuget locals all --clear

出力:

Clearing NuGet HTTP cache: C:\Users\hoge\AppData\Local\NuGet\v3-cache
Clearing NuGet global packages folder: C:\Users\hoge\.nuget\packages\
Clearing NuGet Temp cache: C:\Users\hoge\AppData\Local\Temp\NuGetScratch
Clearing NuGet plugins cache: C:\Users\hoge\AppData\Local\NuGet\plugins-cache

結果

素晴らしい.

f:id:shuhelohelo:20200627154759p:plain