Bagaimana saya bisa menghapus cache paket NuGet menggunakan baris perintah?

405

Saya dapat menghapus cache paket NuGet komputer saya menggunakan menu Visual Studio ToolsPilihanManajer Paket NuGetUmum : Clear Package Cachetombol.

Saya ingin melakukan ini di baris perintah. Sayangnya, saya tidak dapat menemukan saklar baris perintah terkait untuk nuget.exe.

Apakah saya melewatkan sesuatu?

g.pickardou
sumber
10
opsi ini tidak ada pada Versi VS 2015 2015
spankmaster79
1
ya itu hilang. Jadi saya menggunakan jawaban yang diterima.
g.pickardou

Jawaban:

634

Pertama, unduh alat baris perintah NuGet dari sini .

Selanjutnya, buka prompt perintah dan cdke direktori yang nuget.exediunduh.

Anda dapat membuat daftar cache lokal dengan perintah ini:

nuget locals all -list

Anda dapat menghapus semua cache dengan perintah ini:

nuget locals all -clear

Referensi: https://docs.nuget.org/consume/command-line-reference

rm8x
sumber
10
Bekerja dengan baik untuk 3.3 tetapi hanya untuk pengguna saat ini - Saya punya masalah dengan cache lokal yang rusak pada server build kami yang (sayangnya) berjalan di bawah Sistem Lokal, jadi cache tidak terdaftar - lokasi sebenarnya adalah `C: \ Windows \ SysWOW64 \ config \ systemprofile \ AppData \ Local \ NuGet \ Cache`
- Ben Duguid
1
Mungkin Anda harus menjalankan operasi yang jelas di bawah pengguna yang sama dengan operasi build. Baik dengan mengonfigurasi pengguna build khusus, atau menggunakan trik untuk menjalankan clear di bawah Sistem Lokal.
g.pickardou
2
Apakah ada kemungkinan menghapus NuGet tertentu dari cache? sebagai contoh: Saya ingin menghapus NuGet X dari cache dan saya tidak mengetahui lokasi cache NuGet, dalam situasi ini bagaimana menghapus "X" sendirian dari cache
user3610920
19
Saya harus menjalankan nuget update -selfuntuk memperbarui nuget.exe yang saya unduh dari tautan ini jika tidak saya mendapatkan kesalahanUnknown commmand: 'locals'
ajbeaven
1
pastikan Anda menutup VS karena devenv.exemungkin memblokir beberapa folder paket dan tidak akan dihapus.
Sharif
227

Di Visual Studio 2017, buka menu AlatManajer Paket NuGetPengaturan Manajer Paket . Anda mungkin menemukan sebuah tombol, Clear All NuGet Cache(s):

Masukkan deskripsi gambar di sini

Jika Anda menggunakan .NET Core, Anda dapat menghapus cache dengan perintah ini, yang seharusnya berfungsi pada .NET Core tools 1.0:

dotnet nuget locals all --clear
Ricky
sumber
7
Jadi sudah kembali! :-). Saya ingin tahu apakah itu akan dihapus lagi di VS 2019 :-)
g.pickardou
13
penggunaan baris perintah dotnet nuget locals all --clearsangat berguna, terima kasih
Boggin
1
Perintah dotnet nuget locals all --clearbekerja dengan sempurna. Saya tidak perlu menginstal alat cmd nuget tambahan. SSD saya bisa bernafas lagi!
Jiří Kuba
87

Utilitas nuget.exe tidak memiliki fitur ini, tetapi melihat bahwa cache NuGet hanyalah folder di komputer Anda, Anda dapat menghapus file secara manual. Cukup tambahkan ini ke file batch Anda:

del %LOCALAPPDATA%\NuGet\Cache\*.nupkg /q
Kiliman
sumber
5
Pada saat bertanya, ini adalah satu-satunya solusi, jadi itulah jawaban terbaik. Sekarang saya sudah tidak menandainya, dan mengkredit jawaban @ rmoore setelah mencobanya.
g.pickardou
27

Bagi saya, saya harus masuk ke sini:

%userprofile%\.nuget\packages
Bowofola
sumber
2
Ini adalah jalan yang benar di mana semua nuget diunduh dan disimpan
Alok Rajasukumaran
2
Dan, saya punya paket nuget 2,04 Gb: o
Alok Rajasukumaran
19
2.04GB hampir sama dengan node_modules untuk aplikasi simpul "hello world";)
tommed
20

Ini menambah jawaban rm8x .

Unduh dan instal alat baris perintah NuGet.

Daftar semua penduduk lokal kami:

$ nuget locals all -list
http-cache: C:\Users\MyUser\AppData\Local\NuGet\v3-cache
packages-cache: C:\Users\MyUser\AppData\Local\NuGet\Cache
global-packages: C:\Users\MyUser\.nuget\packages\

Kami sekarang dapat menghapus ini secara manual atau seperti yang disarankan rm8x , gunakan nuget locals all -clear.

Shaun Luttin
sumber
apa gunanya menghapus jika nuget akan menghasilkan semua itu dengan setiap build? mengapa nuget membuat begitu banyak folder?
batmaci
2
@batmaci karena dari waktu ke waktu paket diperbarui dan Anda akan berakhir dengan Batmaci 1.0, Batmaci 1.1, Batmaci 1.2di mana semua yang Anda perlu adalah yang terbaru
Simon_Weaver
Kami memiliki masalah sesekali di server build kami dengan tidak menemukan paket NuGet di cache. Kami menyelesaikannya dengan selalu membersihkan cache di awal build.
Steve Wright
14

Catatan yang dnxmemiliki cache berbeda untuk mengumpankan hasil HTTP:

Microsoft .NET Development Utility Clr-x86-1.0.0-rc1-16231
   CACHE https://www.nuget.org/api/v2/
   CACHE http://192.168.148.21/api/odata/

Yang bisa Anda jelaskan

dnu clear-http-cache

Sekarang kita hanya perlu mencari tahu apa perintahnya pada dotnetalat CLI baru .

... dan ini dia:

dotnet restore --no-cache
KCD
sumber
Saya akan pergi dengan pendekatan di atas dari Ruslan karena saya memiliki beberapa masalah dengan paket bahkan lewat --no-cache
Alexz
Menjalankan dotnet restore --no-cachebekerja untuk saya, tetapi saya harus melakukannya dari prompt Powershell yang menjalankan sebagai administrator
shanabus
10

dotnet nuget locals all --clear

Jika Anda menggunakan .NET Core.

Jim Aho
sumber
Saya sarankan melakukan ini sebelum Anda pergi makan siang.
Helzgate
5

Jika Anda perlu menghapus cache NuGet untuk server / agen build Anda, Anda dapat menemukan cache untuk paket NuGet di sini:

%windir%/ServiceProfiles/[account under build service runs]\AppData\Local\NuGet\Cache

Contoh:

C:\Windows\ServiceProfiles\NetworkService\AppData\Local\NuGet\Cache
khablander
sumber
1
Saya mengambil kebebasan menandai lintasan untuk membuatnya lebih mudah dibaca, dan mengganti [windows dir] dengan %windir%, yang secara otomatis akan menempatkan Anda di direktori yang benar ketika dimasukkan ke dalam misalnya windows explorer.
Kjartan
3

Anda dapat menggunakan PowerShell juga (sama seperti saya).

Sebagai contoh:

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg

Atau mode 'sunyi' (tanpa pesan kesalahan):

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg 2> $null
honzakuzel1989
sumber