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 .
  • Windows: %userprofile%\.nuget\packages
  • Mac/Linux: ~/.nuget/packages
  • Ambil alih menggunakan variabel lingkungan NUGET_PACKAGES, globalPackagesFolder pengaturan konfigurasi ataurepositoryPath (saat menggunakan PackageReference dan packages.config, masing-masing), atau RestorePackagesPath properti MSBuild (hanya MSBuild). Variabel lingkungan lebih diutamakan daripada pengaturan konfigurasi.
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.
  • Windows: %localappdata%\NuGet\v3-cache
  • Mac/Linux: ~/.local/share/NuGet/v3-cache
  • Ambil alih menggunakan variabel lingkungan NUGET_HTTP_CACHE_PATH.
temp Folder tempat NuGet menyimpan file sementara selama berbagai operasinya.
  • Windows: %temp%\NuGetScratch
  • Mac: /tmp/NuGetScratch
  • Linux: /tmp/NuGetScratch<username>
  • Ambil alih menggunakan variabel lingkungan NUGET_SCRATCH.
  • plugins-cache 4.8+ Folder tempat NuGet menyimpan hasil dari permintaan klaim operasi.
    • Windows: %localappdata%\NuGet\plugins-cache
    • Mac/Linux: ~/.local/share/NuGet/plugins-cache
    • Ambil alih menggunakan variabel lingkungan NUGET_PLUGINS_CACHE_PATH.

    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-packagestemp, 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 Pengelola Paket Manajer > Paket NuGet Alat>, lalu pilih Hapus Semua Cache NuGet. Mengelola cache saat ini tidak tersedia melalui Package Manager Console. Di Visual Studio 2015, gunakan perintah CLI sebagai gantinya.

    NuGet option command for clearing caches

    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.