Mengelola paket global, cache, dan folder sementara
Setiap kali Anda menginstal, memperbarui, atau memulihkan paket, NuGet mengelola paket dan informasi paket di beberapa folder di luar struktur proyek Anda:
Nama | Deskripsi dan Lokasi (per pengguna) |
---|---|
paket global | Folder paket global adalah tempat NuGet menginstal paket apa pun yang diunduh. Setiap paket sepenuhnya diperluas ke subfolder yang cocok dengan pengidentifikasi paket dan nomor versi. Proyek yang menggunakan format PackageReference selalu menggunakan paket langsung dari folder ini. Saat menggunakan packages.config, paket diinstal ke folder paket global, lalu disalin ke folder proyek packages .
|
http-cache | Manajer Paket Visual Studio (NuGet 3.x+) dan dotnet salinan penyimpanan alat paket yang diunduh dalam cache ini (disimpan sebagai .dat file), diatur ke dalam subfolder untuk setiap sumber paket. Paket tidak diperluas, dan cache memiliki waktu kedaluwarsa 30 menit.
|
temp | Folder tempat NuGet menyimpan file sementara selama berbagai operasinya.%temp%\NuGetScratch /tmp/NuGetScratch /tmp/NuGetScratch<username> |
plugins-cache 4.8+ | Folder tempat NuGet menyimpan hasil dari permintaan klaim operasi.
|
Catatan
NuGet 3.5 dan yang lebih lama menggunakan packages-cache alih-alih http-cache, yang terletak di %localappdata%\NuGet\Cache
.
Dengan menggunakan folder cache dan paket global, NuGet umumnya menghindari mengunduh paket yang sudah ada di komputer, meningkatkan performa operasi penginstalan, pembaruan, dan pemulihan. Saat menggunakan PackageReference, folder paket global juga menghindari menyimpan paket yang diunduh di dalam folder proyek, di mana folder tersebut mungkin secara tidak sengaja ditambahkan ke kontrol sumber, dan mengurangi dampak keseluruhan NuGet pada penyimpanan komputer.
Ketika diminta untuk mengambil paket, NuGet pertama-tama terlihat di folder paket global. Jika versi paket yang tepat tidak ada, NuGet memeriksa semua sumber paket non-HTTP. Jika paket masih belum ditemukan, NuGet mencari paket dalam http-cache kecuali Anda menentukan --no-http-cache
dengan dotnet.exe
perintah atau -NoHttpCache
dengan nuget.exe
perintah. Jika paket tidak ada di cache, atau cache tidak digunakan, NuGet kemudian mengambil paket melalui HTTP .
Untuk informasi selengkapnya, lihat Apa yang terjadi saat paket diinstal?.
Menampilkan lokasi folder
Anda dapat melihat lokasi menggunakan perintah nuget locals:
# Display locals for all folders: global-packages, http cache, temp and plugins cache
nuget locals all -list
Output umum (Windows; "user1" adalah nama pengguna saat ini):
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
digunakan dalam NuGet 2.x dan muncul dengan NuGet 3.5 dan yang lebih lama.)
Anda juga dapat melihat lokasi folder menggunakan perintah lokal nuget dotnet:
dotnet nuget locals all --list
Output umum (Mac; "user1" adalah nama pengguna saat ini):
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
Output umum (Linux; "user1" adalah nama pengguna saat ini):
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
Untuk menampilkan lokasi satu folder, gunakan http-cache
, , global-packages
temp
, atau plugins-cache
alih-alih all
.
Menghapus folder lokal
Jika Anda mengalami masalah penginstalan paket atau ingin memastikan bahwa Anda menginstal paket dari galeri jarak jauh, gunakan locals --clear
opsi (dotnet.exe) atau locals -clear
(nuget.exe), menentukan folder untuk dihapus, atau all
untuk menghapus semua folder:
# 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
Paket apa pun yang digunakan oleh proyek yang saat ini terbuka di Visual Studio tidak dibersihkan dari folder paket global.
Mulai dari Visual Studio 2017, gunakan perintah menu Pengaturan Manajer Paket Pengelola > Paket Alat > NuGet, lalu pilih Hapus Semua Singgahan NuGet. Mengelola cache saat ini tidak tersedia melalui Package Manager Console. Di Visual Studio 2015, gunakan perintah CLI sebagai gantinya.
Pemecahan Masalah Kesalahan
Kesalahan berikut dapat terjadi saat menggunakan nuget locals
atau dotnet nuget locals
:
Kesalahan: Proses tidak dapat mengakses paket> file <karena sedang digunakan oleh proses lain atau Penghapusan sumber daya lokal gagal: Tidak dapat menghapus satu atau beberapa file
Satu atau beberapa file dalam folder sedang digunakan oleh proses lain; misalnya, proyek Visual Studio terbuka yang mengacu pada paket di folder paket global. Tutup proses tersebut, lalu coba lagi.
Kesalahan: Akses ke jalur> ditolak < atau Direktori tidak kosong
Anda tidak memiliki izin untuk menghapus file di cache. Ubah izin folder, jika memungkinkan, dan coba lagi. Jika tidak, hubungi administrator sistem Anda.
Kesalahan: Jalur, nama file, atau keduanya yang ditentukan terlalu panjang. Nama file yang sepenuhnya memenuhi syarat harus kurang dari 260 karakter, dan nama direktori harus kurang dari 248 karakter.
Persingkat nama folder dan coba lagi.