Genel paketleri, önbelleği ve geçici klasörleri yönetme
Bir paketi yüklediğinizde, güncelleştirdiğinizde veya geri yüklediğinizde NuGet, proje yapınızın dışındaki birkaç klasördeki paketleri ve paket bilgilerini yönetir:
Veri Akışı Adı | Açıklama ve Konum (kullanıcı başına) |
---|---|
genel paketler | Genel paketler klasörü, NuGet'in indirilen tüm paketleri yüklediği yerdir. Her paket, paket tanımlayıcısı ve sürüm numarasıyla eşleşen bir alt klasöre tamamen genişletilir. PackageReference biçimini kullanan projeler her zaman doğrudan bu klasörden paketleri kullanır. packages.config kullanılırken paketler global-packages klasörüne yüklenir ve ardından projenin packages klasörüne kopyalanır.
|
http-cache | Visual Studio Paket Yöneticisi (NuGet 3.x+) ve dotnet araç, indirilen paketlerin kopyalarını bu önbellekte (dosya olarak .dat kaydedilen) depolar ve her paket kaynağı için alt klasörler halinde düzenlenir. Paketler genişletilmemiştir ve önbelleğin son kullanma süresi 30 dakikadır.
|
temp | NuGet'in çeşitli işlemleri sırasında geçici dosyaları depoladığı bir klasör.%temp%\NuGetScratch /tmp/NuGetScratch /tmp/NuGetScratch<username> |
plugins-cache 4.8+ | NuGet'in işlem talep isteğinden elde ettiği sonuçları depoladığı klasör.
|
Not
NuGet 3.5 ve öncesi, içinde %localappdata%\NuGet\Cache
bulunan http-cache yerine packages-cache kullanır.
NuGet, önbellek ve genel paketler klasörlerini kullanarak genellikle bilgisayarda zaten var olan paketlerin indirilmesini önleyerek yükleme, güncelleştirme ve geri yükleme işlemlerinin performansını artırır. PackageReference kullanılırken genel paketler klasörü, indirilen paketlerin yanlışlıkla kaynak denetimine eklenebileceği proje klasörleri içinde tutulmasını önler ve NuGet'in bilgisayar depolaması üzerindeki genel etkisini azaltır.
Bir paketin alınması istendiğinde NuGet ilk olarak genel paketler klasörüne bakar. Paketin tam sürümü orada değilse, NuGet HTTP olmayan tüm paket kaynaklarını denetler. Paket hala bulunamazsa, komutlarla veya -NoHttpCache
komutlarla dotnet.exe
nuget.exe
belirtmediğiniz --no-http-cache
sürece NuGet paketi http önbelleğinde arar. Paket önbellekte değilse veya önbellek kullanılmıyorsa NuGet paketi HTTP üzerinden alır.
Daha fazla bilgi için bkz . Paket yüklendiğinde ne olur?.
Klasör konumlarını görüntüleme
nuget locals komutunu kullanarak konumları görüntüleyebilirsiniz:
# Display locals for all folders: global-packages, http cache, temp and plugins cache
nuget locals all -list
Tipik çıkış (Windows; "user1" geçerli kullanıcı adıdır:
http-cache: C:\Users\user1\AppData\Local\NuGet\v3-cache
global-packages: C:\Users\user1\.nuget\packages\
temp: C:\Users\user1\AppData\Local\Temp\NuGetScratch
plugins-cache: C:\Users\user1\AppData\Local\NuGet\plugins-cache
(package-cache
NuGet 2.x'te kullanılır ve NuGet 3.5 ve önceki sürümlerle birlikte görünür.)
Klasör konumlarını dotnet nuget locals komutunu kullanarak da görüntüleyebilirsiniz:
dotnet nuget locals all --list
Tipik çıkış (Mac; "user1" geçerli kullanıcı adıdır:
info : http-cache: /home/user1/.local/share/NuGet/v3-cache
info : global-packages: /home/user1/.nuget/packages/
info : temp: /tmp/NuGetScratch
info : plugins-cache: /home/user1/.local/share/NuGet/plugins-cache
Tipik çıkış (Linux; "user1" geçerli kullanıcı adıdır:
info : http-cache: /home/user1/.local/share/NuGet/v3-cache
info : global-packages: /home/user1/.nuget/packages/
info : temp: /tmp/NuGetScratchuser1
info : plugins-cache: /home/user1/.local/share/NuGet/plugins-cache
Tek bir klasörün konumunu görüntülemek için yerine , global-packages
, temp
veya plugins-cache
all
kullanınhttp-cache
.
Yerel klasörleri temizleme
Paket yükleme sorunlarıyla karşılaşıyorsanız veya uzak bir galeriden paketleri yüklediğinizden emin olmak istiyorsanız, temizleneceğini veya tüm klasörleri temizlemek için klasörü belirtme (dotnet.exe) veya locals -clear
all
(nuget.exe) seçeneğini kullanınlocals --clear
:
# 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
Visual Studio'da açık olan projeler tarafından kullanılan paketler genel paketler klasöründen temizlenmez.
Visual Studio 2017'den başlayarak Araçlar NuGet Paket Yöneticisi > Paket Yöneticisi Ayarlar menü komutunu kullanın ve ardından Tüm NuGet Önbelleklerini Temizle'yi seçin.> Önbelleği yönetme özelliği şu anda Paket Yöneticisi Konsolu üzerinden sağlanmamaktadır. Visual Studio 2015'te bunun yerine CLI komutlarını kullanın.
Hataları giderme
veya dotnet nuget locals
kullanılırken nuget locals
aşağıdaki hatalar oluşabilir:
Hata: Başka bir işlem tarafından kullanıldığından veya Yerel kaynaklar temizlenemediğinden işlem dosya <paketine> erişemiyor: Bir veya daha fazla dosya silinemiyor
Klasördeki bir veya daha fazla dosya başka bir işlem tarafından kullanılıyor; örneğin, genel paketler klasöründeki paketlere başvuran bir Visual Studio projesi açıktır. Bu işlemleri kapatın ve yeniden deneyin.
Hata: Yol <yoluna> erişim reddedildi veya Dizin boş değil
Önbellekteki dosyaları silme izniniz yok. Mümkünse klasör izinlerini değiştirin ve yeniden deneyin. Aksi takdirde sistem yöneticinize başvurun.
Hata: Belirtilen yol, dosya adı veya her ikisi de çok uzun. Tam dosya adı 260 karakterden az ve dizin adı 248 karakterden az olmalıdır.
Klasör adlarını kısaltın ve yeniden deneyin.