Memulihkan paket menggunakan Pemulihan Paket
Untuk mempromosikan lingkungan pengembangan yang lebih bersih dan untuk mengurangi ukuran repositori, Pemulihan Paket NuGet menginstal semua dependensi proyek yang tercantum dalam file proyek atau packages.config. .NET Core 2.0+ dotnet build dan dotnet run perintah melakukan pemulihan paket otomatis. Visual Studio dapat memulihkan paket secara otomatis saat membangun proyek, dan Anda dapat memulihkan paket kapan saja melalui Visual Studio, nuget restore, dotnet restore, dan xbuild pada Mono.
Pemulihan Paket memastikan bahwa semua dependensi proyek tersedia, tanpa harus menyimpannya di kontrol sumber. Untuk mengonfigurasi repositori kontrol sumber Anda untuk mengecualikan biner paket, lihat Paket dan kontrol sumber.
Gambaran umum Pemulihan Paket
Pemulihan Paket terlebih dahulu menginstal dependensi langsung proyek sesuai kebutuhan, lalu menginstal dependensi apa pun dari paket tersebut di seluruh grafik dependensi.
Jika paket belum diinstal, NuGet terlebih dahulu mencoba mengambilnya dari cache. Jika paket tidak ada dalam cache, NuGet mencoba mengunduh paket dari semua sumber yang diaktifkan dalam daftar di Opsi Alat>Sumber>PaketNuGet Package Manager> di Visual Studio. Selama pemulihan, NuGet mengabaikan urutan sumber paket, dan menggunakan paket dari sumber mana pun yang pertama kali merespons permintaan. Untuk informasi selengkapnya tentang perilaku NuGet, lihat Konfigurasi NuGet umum.
Catatan
NuGet tidak menunjukkan kegagalan untuk memulihkan paket hingga semua sumber telah diperiksa. Pada saat itu, NuGet melaporkan kegagalan hanya untuk sumber terakhir dalam daftar. Kesalahan menyiratkan bahwa paket tidak ada di salah satu sumber lain, meskipun kesalahan tidak ditampilkan untuk masing-masing sumber tersebut satu per satu.
Pulihkan paket
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.)
Jika referensi paket dalam file proyek Anda benar, gunakan alat pilihan Anda untuk memulihkan paket.
- Visual Studio (pemulihan otomatis atau pemulihan manual)
- dotnet CLI
- CLInuget.exe
- MSBuild
- Azure Pipelines
- Azure DevOps Server
Jika paket mereferensikan 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 sebagai gantinya.
Untuk proyek yang menggunakan PackageReference, setelah pemulihan berhasil, paket harus ada di folder paket global dan
obj/project.assets.jsonfile dibuat ulang. Untuk proyek yang menggunakanpackages.config, paket akan muncul di folder proyekpackages. Proyek sekarang harus berhasil dibangun.Setelah menjalankan Pemulihan Paket, jika Anda masih mengalami paket yang hilang atau kesalahan terkait paket (seperti ikon kesalahan di Penjelajah Solusi di Visual Studio), Anda mungkin perlu mengikuti instruksi yang dijelaskan dalam Memecahkan Masalah kesalahan Pemulihan Paket atau, atau, menginstal ulang dan memperbarui paket.
Dalam Visual Studio, Package Manager Console menyediakan beberapa opsi fleksibel untuk menginstal ulang paket. Lihat Menggunakan Pembaruan Paket.
Memulihkan menggunakan Visual Studio
Dalam Visual Studio di Windows, baik:
Pulihkan paket secara otomatis, atau
Memulihkan paket secara manual
Memulihkan paket secara otomatis menggunakan Visual Studio
Pemulihan Paket terjadi secara otomatis saat Anda membuat proyek dari templat atau membangun proyek, tunduk pada opsi di Mengaktifkan dan menonaktifkan pemulihan paket. Di NuGet 4.0+, pemulihan juga terjadi secara otomatis ketika Anda membuat perubahan pada proyek gaya SDK (biasanya proyek .NET Core atau .NET Standard).
Aktifkan pemulihan paket otomatis dengan memilihOpsi>Alat>Pengelola Paket NuGet, lalu pilih Periksa paket yang hilang secara otomatis selama build di Visual Studio di bawah Pemulihan Paket.
Untuk proyek gaya non-SDK, Pertama-tama Anda harus memilih Izinkan NuGet mengunduh paket yang hilang untuk mengaktifkan opsi pemulihan otomatis.
Bangun proyek.
Jika satu atau beberapa paket individual masih belum diinstal dengan benar, Penjelajah Solusi menampilkan ikon kesalahan. Klik kanan dan pilih Kelola Paket NuGet, dan gunakan Pengelola Paket untuk menghapus instalan dan menginstal ulang paket yang terpengaruh. Untuk informasi selengkapnya, lihat Menginstal ulang dan memperbarui paket
Jika Anda melihat kesalahan "Proyek ini mereferensikan paket NuGet yang hilang di komputer ini," atau "Satu atau beberapa paket NuGet perlu dipulihkan tetapi tidak bisa karena persetujuan belum diberikan," aktifkan pemulihan otomatis. Untuk proyek yang lebih lama, lihat Juga Migrasi ke pemulihan paket otomatis. Lihat juga pemecahan masalah Pemulihan Paket.
Memulihkan paket secara manual menggunakan Visual Studio
Aktifkan pemulihan paket dengan memilihOpsi>Alat>Pengelola Paket NuGet. Di bawah Opsi Pemulihan Paket , pilih Izinkan NuGet mengunduh paket yang hilang.
Di Penjelajah Solusi, klik kanan solusi dan pilih Pulihkan Paket NuGet.
Jika satu atau beberapa paket individual masih belum diinstal dengan benar, Penjelajah Solusi menampilkan ikon kesalahan. Klik kanan dan pilih Kelola Paket NuGet, lalu gunakan Pengelola Paket untuk menghapus instalan dan menginstal ulang paket yang terpengaruh. Untuk informasi selengkapnya, lihat Menginstal ulang dan memperbarui paket
Jika Anda melihat kesalahan "Proyek ini mereferensikan paket NuGet yang hilang di komputer ini," atau "Satu atau beberapa paket NuGet perlu dipulihkan tetapi tidak bisa karena persetujuan belum diberikan," aktifkan pemulihan otomatis. Untuk proyek yang lebih lama, lihat Juga Migrasi ke pemulihan paket otomatis. Lihat juga pemecahan masalah Pemulihan Paket.
Mengaktifkan dan menonaktifkan pemulihan paket di Visual Studio
Dalam Visual Studio, Anda mengontrol Pemulihan Paket terutama melaluiOpsi>Alat>Manajer Paket NuGet:

Izinkan NuGet mengunduh paket yang hilang mengontrol semua bentuk pemulihan paket dengan mengubah
packageRestore/enabledpengaturan di bagianNuGet.ConfigpackageRestore file, di%AppData%\NuGet\Windows, atau~/.nuget/NuGet/di Mac/Linux. Pengaturan ini juga memungkinkan perintah Pulihkan Paket NuGet pada menu konteks solusi di Visual Studio, .<configuration> <packageRestore> <!-- The 'enabled' key is True when the "Allow NuGet to download missing packages" checkbox is set. Clearing the box sets this to False, disabling command-line, automatic, and MSBuild-integrated restore. --> <add key="enabled" value="True" /> </packageRestore> </configuration>Catatan
Untuk mengganti
packageRestore/enabledpengaturan secara global, atur variabel lingkungan EnableNuGetPackageRestore dengan nilai True atau False sebelum meluncurkan Visual Studio atau memulai build.Periksa paket yang hilang secara otomatis selama build di Visual Studio mengontrol pemulihan otomatis dengan mengubah
packageRestore/automaticpengaturan di bagian packageRestore fileNuGet.Config. Ketika opsi ini diatur ke True, menjalankan build dari Visual Studio secara otomatis memulihkan paket yang hilang. Pengaturan ini tidak memengaruhi build yang dijalankan dari baris perintah MSBuild.... <configuration> <packageRestore> <!-- The 'automatic' key is set to True when the "Automatically check for missing packages during build in Visual Studio" checkbox is set. Clearing the box sets this to False and disables automatic restore. --> <add key="automatic" value="True" /> </packageRestore> </configuration>
Untuk mengaktifkan atau menonaktifkan Pemulihan Paket untuk semua pengguna di komputer, pengembang atau perusahaan dapat menambahkan pengaturan konfigurasi ke file global nuget.config . Global nuget.config berada dalam Windows di %ProgramData%\NuGet\Config, kadang-kadang di bawah folder Visual Studio tertentu \{IDE}\{Version}\{SKU}\ , atau di Mac/Linux di ~/.local/share. Pengguna individual kemudian dapat secara selektif mengaktifkan pemulihan sesuai kebutuhan pada tingkat proyek. Untuk detail selengkapnya tentang cara NuGet memprioritaskan beberapa file konfigurasi, lihat Konfigurasi NuGet umum.
Penting
Jika Anda mengedit packageRestore pengaturan secara langsung di nuget.config, mulai ulang Visual Studio, sehingga kotak dialog Opsi memperlihatkan nilai saat ini.
Pilih format manajemen paket default

NuGet memiliki dua format di mana proyek dapat menggunakan paket: PackageReference dan packages.config. Format default dapat dipilih dari menu drop-down di bawah judul Manajemen Paket . Opsi untuk diminta ketika paket pertama diinstal dalam proyek juga tersedia.
Catatan
Jika proyek tidak mendukung kedua format manajemen paket, format manajemen paket yang digunakan akan menjadi yang kompatibel dengan proyek, dan oleh karena itu mungkin bukan default yang diatur dalam opsi. Selain itu, NuGet tidak akan meminta pemilihan pada penginstalan paket pertama, bahkan jika opsi dipilih di jendela opsi.
Jika Package Manager Console digunakan untuk menginstal paket pertama dalam proyek, NuGet tidak akan meminta pemilihan format, bahkan jika opsi dipilih di jendela opsi.
Memulihkan menggunakan CLI dotnet
Gunakan perintah pemulihan dotnet , yang memulihkan paket yang tercantum dalam file proyek (lihat PackageReference). Dengan .NET Core 2.0 dan yang lebih baru, pemulihan dilakukan secara otomatis dengan dotnet build dan dotnet run. Pada NuGet 4.0, ini menjalankan kode yang sama dengan nuget restore.
Seperti halnya perintah CLI lainnya dotnet , pertama-tama buka baris perintah dan beralih ke direktori yang berisi file proyek Anda.
Untuk memulihkan paket menggunakan dotnet restore:
dotnet restore
Penting
Untuk menambahkan referensi paket yang hilang ke file proyek, gunakan dotnet add package, yang juga menjalankan restore perintah .
Memulihkan menggunakan CLI nuget.exe
Gunakan perintah pemulihan , yang mengunduh dan menginstal paket apa pun yang hilang dari folder paket .
Untuk proyek yang dimigrasikan ke PackageReference, gunakan msbuild -t:restore untuk memulihkan paket sebagai gantinya.
restore hanya menambahkan paket ke disk tetapi tidak mengubah dependensi proyek. Untuk memulihkan dependensi proyek, ubah packages.config, lalu gunakan restore perintah .
Seperti halnya perintah CLI lainnya nuget.exe , pertama-tama buka baris perintah dan beralih ke direktori yang berisi file proyek Anda.
Untuk memulihkan paket menggunakan restore:
nuget restore MySolution.sln
Penting
Perintah restore tidak mengubah file proyek atau packages.config. Untuk menambahkan dependensi, tambahkan paket melalui UI Pengelola Paket atau Konsol di Visual Studio, atau ubah packages.config lalu jalankan atau installrestore.
Memulihkan menggunakan MSBuild
Gunakan perintah msbuild -t:restore untuk memulihkan paket yang tercantum dalam file proyek (lihat PackageReference) dan dimulai dengan proyek MSBuild 16.5+. packages.config
Perintah ini hanya tersedia di NuGet 4.x+ dan MSBuild 15.1+, yang disertakan dengan Visual Studio 2017 dan versi yang lebih tinggi.
Dimulai dengan MSBuild 16.5+, perintah ini juga dapat memulihkan packages.config proyek berbasis saat dijalankan dengan -p:RestorePackagesConfig=true.
Buka perintah Pengembang (Di kotak Pencarian , ketik perintah Pengembang).
Anda biasanya ingin memulai Perintah Pengembang untuk Visual Studio dari menu Mulai, karena akan dikonfigurasi dengan semua jalur yang diperlukan untuk MSBuild.
Beralih ke folder yang berisi file proyek dan ketik perintah berikut.
# Uses the project file in the current folder by default msbuild -t:restoreKetik perintah berikut untuk membangun kembali proyek.
msbuildPastikan bahwa output MSBuild menunjukkan bahwa build berhasil diselesaikan.
Catatan
msbuild memiliki -restore sakelar yang akan menjalankan Restore, memuat ulang proyek, lalu membangun. Lihat Memulihkan dan membangun dengan satu perintah MSBuild.
# Will restore the project, then build, since build is the default target.
msbuild -restore
Memulihkan menggunakan Azure Pipelines
Saat Anda membuat definisi build di Azure Pipelines, sertakan tugas pemulihan NuGet atau pemulihan .NET Core dalam definisi sebelum tugas build apa pun. Beberapa templat build menyertakan tugas pemulihan secara default.
Memulihkan menggunakan Azure DevOps Server
Azure DevOps Server dan TFS 2013 dan yang lebih baru secara otomatis memulihkan paket selama build, jika Anda menggunakan templat Team Build TFS 2013 atau yang lebih baru. Untuk versi TFS sebelumnya, Anda dapat menyertakan langkah build untuk menjalankan opsi pemulihan baris perintah, atau secara opsional memigrasikan templat build ke versi yang lebih baru. Untuk informasi selengkapnya, lihat Menyiapkan pemulihan paket dengan Team Foundation Build.
Membatasi versi paket dengan pemulihan
Ketika NuGet memulihkan paket melalui metode apa pun, NuGet mematuhi batasan apa pun yang Anda tentukan dalam packages.config atau file proyek:
Di
packages.config, Anda dapat menentukan rentang versi diallowedVersionproperti dependensi. Lihat Membatasi versi peningkatan untuk informasi selengkapnya. Contohnya:<package id="Newtonsoft.json" version="6.0.4" allowedVersions="[6,7)" />Dalam file proyek, Anda dapat menggunakan PackageReference untuk menentukan rentang dependensi secara langsung. Contohnya:
<PackageReference Include="Newtonsoft.json" Version="[6, 7)" />
Dalam semua kasus, gunakan notasi yang dijelaskan dalam Penerapan versi paket.
Memaksa pemulihan dari sumber paket
Secara default, operasi pemulihan NuGet menggunakan paket dari folder paket global dan http-cache , yang dijelaskan dalam Mengelola paket global dan folder cache.
Untuk menghindari penggunaan folder paket global , lakukan salah satu hal berikut ini:
- Hapus folder menggunakan
nuget locals global-packages -clearataudotnet nuget locals global-packages --clear. - Ubah sementara lokasi folder paket global sebelum operasi pemulihan, menggunakan salah satu metode berikut:
- Atur variabel lingkungan NUGET_PACKAGES ke folder lain.
- Buat
NuGet.Configfile yang mengaturglobalPackagesFolder(jika menggunakan PackageReference) ataurepositoryPath(jika menggunakanpackages.config) ke folder lain. Untuk informasi selengkapnya, lihat pengaturan konfigurasi. - Hanya MSBuild: Tentukan folder lain dengan
RestorePackagesPathproperti .
Untuk menghindari penggunaan cache untuk sumber HTTP, lakukan salah satu hal berikut ini:
-NoCacheGunakan opsi dengannuget restore, atau--no-cacheopsi dengandotnet restore. Opsi ini tidak memengaruhi operasi pemulihan melalui Pengelola Paket atau konsol Visual Studio.- Hapus cache menggunakan
nuget locals http-cache -clearataudotnet nuget locals http-cache --clear. - Atur variabel lingkungan NUGET_HTTP_CACHE_PATH untuk sementara ke folder lain.
Migrasi ke pemulihan paket otomatis (Visual Studio)
Untuk NuGet 2.6 dan yang lebih lama, pemulihan paket terintegrasi MSBuild sebelumnya didukung tetapi itu tidak lagi benar. (Biasanya diaktifkan dengan mengklik kanan solusi di Visual Studio dan memilih Aktifkan Pemulihan Paket NuGet). Jika proyek Anda menggunakan pemulihan paket terintegrasi MSBuild yang tidak digunakan lagi, silakan migrasikan ke pemulihan paket otomatis.
Proyek yang menggunakan pemulihan paket MSBuild-Integrated biasanya berisi folder .nuget dengan tiga file: NuGet.config, nuget.exe, dan NuGet.targets. Kehadiran file NuGet.targets menentukan apakah NuGet akan terus menggunakan pendekatan terintegrasi MSBuild, sehingga file ini harus dihapus selama migrasi.
Untuk bermigrasi ke pemulihan paket otomatis:
- Tutup Visual Studio.
- Hapus .nuget/nuget.exe dan .nuget/NuGet.targets.
- Untuk setiap file proyek, hapus
<RestorePackages>elemen dan hapus referensi apa pun ke NuGet.targets.
Untuk menguji pemulihan paket otomatis:
Hapus folder paket dari solusi.
Buka solusi di Visual Studio dan mulai build.
Pemulihan paket otomatis harus mengunduh dan menginstal setiap paket dependensi, tanpa menambahkannya ke kontrol sumber.