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?


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


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

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

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

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.


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

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.


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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.