NuGet paket önbelleğini komut satırını kullanarak nasıl temizleyebilirim?


405

Geliştirme bilgisayarımın NuGet paket önbelleğini Visual Studio menüsü AraçlarSeçeneklerNuGet Paket YöneticisiGenel : Clear Package Cachedüğmesini kullanarak temizleyebilirim .

Bunu komut satırında yapmak istiyorum. Ne yazık ki, nuget.exe ile ilgili bir komut satırı anahtarı bulamıyorum.

Bir şey mi kaçırdım?


10
2015 VS
Sürümümde

1
evet eksik. Bu yüzden kabul edilen cevabı kullanıyorum.
g.pickardou

Yanıtlar:


633

İlk olarak, NuGet komut satırı aracını buradan indirin .

Ardından, bir komut istemi ve indirilen cddizine açın nuget.exe.

Yerel önbellekleri bu komutla listeleyebilirsiniz:

nuget locals all -list

Bu komutla tüm önbellekleri temizleyebilirsiniz:

nuget locals all -clear

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


10
3.3 için güzel çalışıyor, ancak sadece geçerli kullanıcı için - Yerel sunucu altında çalışan (ne yazık ki) yerel bir önbellek sorunu vardı, bu yüzden önbellek listelenmedi - gerçek konum `C: \ Windows \ SysWOW64 \ config \ systemprofile \ AppData \ Local \ NuGet \ Cache`
Zhaph - Ben Duguid

1
Belki de açık işlemi derleme işlemi ile aynı kullanıcı altında çalıştırmalısınız. Özel bir yapı kullanıcısı yapılandırmakla veya Yerel Sistem altında temizlemeyi çalıştırmak için bir hile kullanarak.
g.pickardou

2
Belirli NuGet'leri önbellekten kaldırma olasılığı var mı? Örneğin: NuGet X'i önbellekten kaldırmak istiyorum ve NuGet önbellek konumunun farkında değilim, bu durumda "X" tek başına önbellekten nasıl kaldırılır
user3610920

19
Bu bağlantıdan indirdiğim nuget.exe dosyasınınuget update -self güncellemek için çalıştırmak zorunda kaldım aksi halde hatayı aldımUnknown commmand: 'locals'
ajbeaven

1
VS'nizi kapattığınızdan emin olun, çünkü devenv.exebazı paket klasörlerini engelliyor olabilir ve bunlar temizlenmez.
Şerif

227

Visual Studio 2017'de AraçlarNuGet Paket YöneticisiPaket Yöneticisi Ayarları menüsüne gidin . Bir düğme bulabilirsiniz Clear All NuGet Cache(s):

Resim açıklamasını buraya girin

.NET Core kullanıyorsanız, .NET Core tools 1.0'dan itibaren çalışması gereken bu komutla önbelleği temizleyebilirsiniz:

dotnet nuget locals all --clear

7
Yani geri döndü! :-). VS 2019'da tekrar kaldırılıp kaldırılmayacağını merak ediyorum :-)
g.pickardou

13
komut satırı kullanımı dotnet nuget locals all --clearçok yararlı, teşekkürler
Boggin

1
Komuta dotnet nuget locals all --clearmükemmel çalıştı. Herhangi bir ekstra nuget cmd aracı yüklemek zorunda kalmadım. SSD'm tekrar nefes alabilir!
Jiří Kuba

87

Nuget.exe yardımcı programı bu özelliğe sahip değildir, ancak NuGet önbelleğinin yalnızca bilgisayarınızdaki bir klasör olduğunu görünce dosyaları el ile silebilirsiniz. Bunu toplu iş dosyanıza eklemeniz yeterlidir:

del %LOCALAPPDATA%\NuGet\Cache\*.nupkg /q

5
Bunun tek çözüm olduğunu sorduğunuzda, en iyi cevap da buydu. Şimdi işaretini kaldırdım ve denedikten sonra @ rmoore'un cevabını kredilendirdim.
g.pickardou

27

Benim için buraya girmek zorunda kaldım:

%userprofile%\.nuget\packages

2
Bu, tüm külçelerin indirilip saklandığı doğru yoldur
Alok Rajasukumaran

2
Ve, 2.04 Gb nuget paketlerim vardı: o
Alok Rajasukumaran

19
2.04GB "merhaba dünya" düğüm uygulaması için node_modules ile aynıdır;)
9'da

20

Bu rm8x'in cevabına katkıda bulunur .

NuGet komut satırı aracını indirin ve yükleyin.

Tüm yerlilerimizi listeleyin:

$ 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\

Şimdi bunları manuel olarak veya rm8x'in önerdiği gibi kullanabiliriz nuget locals all -clear.


nuget her derlemede hepsini üretecekse, silmenin anlamı nedir? nuget neden bu kadar çok klasör oluşturuyor?
batmaci

2
zamanla paketler güncellenmeyen ve ile bitireceğiz @batmaci çünkü Batmaci 1.0, Batmaci 1.1, Batmaci 1.2ihtiyacınız olan tüm son biridir nerede
Simon_Weaver

Derleme sunucumuzda, önbellekte NuGet paketleri bulamadığımız için sorun yaşadık. Yapının başlangıcında önbelleği her zaman temizleyerek çözdük.
Steve Wright

14

dnxHTTP sonuçlarını beslemek için farklı bir önbellek bulunduğunu unutmayın :

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/

Hangi ile temizleyebilirsiniz

dnu clear-http-cache

Şimdi sadece yeni dotnetCLI aracında komutun ne olacağını bulmamız gerekiyor .

... ve işte burada:

dotnet restore --no-cache

Ruslan'dan yukarıdaki yaklaşımla devam edecektim, hatta paketleri geçerken bazı sorunlar yaşıyorum
Alexz

Koşmak dotnet restore --no-cachebenim için çalıştı, ama bunu yönetici olarak çalışan bir Powershell isteminden yapmak zorunda kaldım
shanabus

10

dotnet nuget locals all --clear

.NET Core kullanıyorsanız.


Öğle yemeğine gitmeden önce bunu yapmanızı öneririm.
Helzgate

5

Yapı sunucunuz / ajanınız için NuGet önbelleğini temizlemeniz gerekiyorsa, NuGet paketleri için önbelleği burada bulabilirsiniz:

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

Misal:

C:\Windows\ServiceProfiles\NetworkService\AppData\Local\NuGet\Cache

1
Daha okunaklı hale getirmek için yolu işaretleme ve [windows dir] ile değiştirmenin özgürlüğünü aldım, %windir%örneğin Windows Gezgini'ne girdiğinizde sizi otomatik olarak doğru dizine koyacağım.
Kjartan

3

PowerShell'i de kullanabilirsiniz (benimle aynı).

Örneğin:

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

Veya 'sessiz' mod (hata mesajları olmadan):

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg 2> $null
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.