Bagikan melalui


Pemecahan masalah kesalahan pemulihan paket

Artikel ini berfokus pada kesalahan umum saat memulihkan paket dan langkah-langkah untuk mengatasinya.

Pemulihan Paket mencoba menginstal semua dependensi paket ke status yang benar yang cocok dengan referensi paket dalam file proyek Anda (.csproj) atau file packages.config Anda. (Dalam Visual Studio, referensi muncul di Penjelajah Solusi di bawah dependensi \ NuGet atau node Referensi.) Untuk mengikuti langkah-langkah yang diperlukan untuk memulihkan paket, lihat Memulihkan paket. Jika referensi paket dalam file proyek Anda (.csproj) atau file packages.config Anda salah (tidak cocok dengan status yang Anda inginkan setelah Pemulihan Paket), maka Anda perlu menginstal atau memperbarui paket alih-alih menggunakan Pemulihan Paket.

Jika instruksi di sini tidak berfungsi untuk Anda, silakan ajukan masalah pada GitHub sehingga kami dapat memeriksa skenario Anda dengan lebih hati-hati. Jangan gunakan kontrol "Apakah halaman ini bermanfaat?" yang mungkin muncul di halaman ini karena tidak memberi kami kemampuan untuk menghubungi Anda untuk informasi lebih lanjut.

Solusi cepat untuk pengguna Visual Studio

Jika Anda menggunakan Visual Studio, aktifkan pemulihan paket terlebih dahulu sebagai berikut. Jika tidak, lanjutkan ke bagian berikut.

  1. Pilih perintah menu Pengaturan Pengelola Paket Manajer > Paket NuGet Alat>.
  2. Atur kedua opsi di bawah Pemulihan Paket.
  3. PilihOK.
  4. Bangun kembali proyek Anda.

Enable NuGet package restore in Tool/Options

Pengaturan ini juga dapat diubah dalam file Anda NuGet.Config ; lihat bagian persetujuan . Jika proyek Anda adalah proyek lama yang menggunakan pemulihan paket terintegrasi MSBuild, Anda mungkin perlu bermigrasi ke pemulihan paket otomatis.

Proyek ini mereferensikan paket NuGet yang hilang pada komputer ini

Pesan kesalahan lengkap:

This project references NuGet package(s) that are missing on this computer.
Use NuGet Package Restore to download them. The missing file is {name}.

Kesalahan ini terjadi ketika Anda mencoba membangun proyek yang berisi referensi ke satu atau beberapa paket NuGet, tetapi paket tersebut saat ini tidak diinstal pada komputer atau dalam proyek.

  • Saat menggunakan format manajemen PackageReference , kesalahan ini mungkin merupakan sisa dari packages.config ke migrasi PackageReference dan perlu dihapus secara manual dari file proyek.
  • Saat menggunakan packages.config, kesalahan berarti bahwa paket tidak diinstal di packages folder di akar solusi.

Situasi ini biasanya terjadi ketika Anda mendapatkan kode sumber proyek dari kontrol sumber atau unduhan lain. Paket biasanya dihilangkan dari kontrol sumber atau unduhan karena dapat dipulihkan dari umpan paket seperti nuget.org (lihat Paket dan kontrol sumber). Menyertakannya jika tidak akan mengaburkan repositori atau membuat file .zip yang tidak perlu besar.

Kesalahan juga dapat terjadi jika file proyek Anda berisi jalur absolut ke lokasi paket, dan Anda memindahkan proyek.

Gunakan salah satu metode berikut untuk memulihkan paket:

Setelah pemulihan berhasil, paket harus ada di folder paket global . Untuk proyek yang menggunakan PackageReference, pemulihan harus membuat obj/project.assets.json ulang file; untuk proyek yang menggunakan packages.config, paket akan muncul di folder proyek packages . Proyek sekarang harus berhasil dibangun. Jika tidak, ajukan masalah pada GitHub sehingga kami dapat menindaklanjutinya dengan Anda.

File aset project.assets.json tidak ditemukan

Pesan kesalahan lengkap:

Assets file '<path>\project.assets.json' not found. Run a NuGet package restore to generate this file.

File project.assets.json mempertahankan grafik dependensi proyek saat menggunakan format manajemen PackageReference, yang digunakan untuk memastikan bahwa semua paket yang diperlukan diinstal di komputer. Karena file ini dihasilkan secara dinamis melalui pemulihan paket, biasanya tidak ditambahkan ke kontrol sumber. Akibatnya, kesalahan ini terjadi saat membangun proyek dengan alat seperti msbuild yang tidak secara otomatis memulihkan paket.

Dalam hal ini, jalankan msbuild -t:restore diikuti oleh msbuild, atau gunakan dotnet build (yang memulihkan paket secara otomatis). Anda juga dapat menggunakan salah satu metode pemulihan paket di bagian sebelumnya.

Pesan kesalahan lengkap:

One or more NuGet packages need to be restored but couldn't be because consent has
not been granted. To give consent, open the Visual Studio Options dialog, click on
the NuGet Package Manager node and check 'Allow NuGet to download missing packages
during build.' You can also give consent by setting the environment variable
'EnableNuGetPackageRestore' to 'true'. Missing packages: {name}

Kesalahan ini menunjukkan bahwa pemulihan paket dinonaktifkan dalam konfigurasi NuGet Anda.

Anda dapat mengubah pengaturan yang berlaku di Visual Studio seperti yang dijelaskan sebelumnya di bawah Solusi cepat untuk pengguna Visual Studio.

Anda juga dapat mengedit pengaturan ini langsung dalam file yang berlaku nuget.config (biasanya %AppData%\NuGet\NuGet.Config di Windows dan ~/.nuget/NuGet/NuGet.Config di Mac/Linux). Pastikan kunci dan automatic di enabled bawah packageRestore diatur ke True:

<!-- Package restore is enabled -->
<configuration>
    <packageRestore>
        <add key="enabled" value="True" />
        <add key="automatic" value="True" />
    </packageRestore>
</configuration>

Penting

Jika Anda mengedit packageRestore pengaturan langsung di nuget.config, mulai ulang Visual Studio sehingga kotak dialog opsi memperlihatkan nilai saat ini.

Kondisi potensial lainnya

  • Anda mungkin mengalami kesalahan build karena file yang hilang, dengan pesan yang mengatakan untuk menggunakan pemulihan NuGet untuk mengunduhnya. Namun, menjalankan pemulihan mungkin mengatakan, "Semua paket sudah diinstal dan tidak ada yang perlu dipulihkan." Dalam hal ini, hapus packages folder (saat menggunakan packages.config) atau obj/project.assets.json file (saat menggunakan PackageReference) dan jalankan pemulihan lagi. Jika kesalahan masih berlanjut, gunakan nuget locals all -clear atau dotnet nuget locals all --clear dari baris perintah untuk menghapus folder global-packages dan cache seperti yang dijelaskan pada Mengelola paket global dan folder cache.

  • Saat mendapatkan proyek dari kontrol sumber, folder proyek Anda dapat diatur ke baca-saja. Ubah izin folder dan coba kembali memulihkan paket.

  • Anda mungkin menggunakan NuGet versi lama. Periksa nuget.org/downloads untuk versi terbaru yang direkomendasikan. Untuk Visual Studio 2015, kami merekomendasikan 3.6.0.

Jika Anda mengalami masalah lain, ajukan masalah pada GitHub sehingga kami bisa mendapatkan detail selengkapnya dari Anda.