Bagikan melalui


Menginstal ulang dan memperbarui paket NuGet di Visual Studio

Terkadang referensi paket dapat terputus dalam proyek Visual Studio. Menghapus instalan dan menginstal ulang versi paket yang sama sering memulihkan referensi ke urutan kerja. Memperbarui paket, yang menginstal versi yang diperbarui, juga dapat mengatasi masalah tersebut. Artikel ini menjelaskan cara menginstal ulang dan memperbarui paket NuGet untuk mengatasi referensi paket yang rusak dan proyek yang rusak.

Catatan

Panduan dalam artikel ini hanya berlaku untuk proyek yang menggunakan format manajemen packages.config . Untuk proyek PackageReference , operasi pemulihan secara otomatis memperbaiki referensi yang rusak.

Skenario umum

Berikut adalah beberapa skenario umum di mana Anda mungkin menemukan referensi paket yang rusak di proyek Visual Studio Anda.

Skenario Deskripsi Resolusi
Referensi rusak setelah pemulihan paket Anda membuka proyek Visual Studio dan memulihkan paket NuGet, tetapi referensi paket yang rusak tetap ada. Untuk memperbaiki referensi, coba instal ulang setiap paket secara terpisah.
Proyek rusak karena file yang dihapus File paket yang dihapus (hilang) menyebabkan proyek Anda rusak. NuGet tidak mencegah penghapusan item yang Anda tambahkan dari paket. Mungkin mudah untuk secara tidak sengaja memodifikasi konten yang diinstal dari paket dan merusak proyek Anda. Untuk memulihkan proyek Anda, coba instal ulang paket yang terpengaruh.
Proyek rusak setelah pembaruan paket Pembaruan paket merusak proyek Anda. Pembaruan pendamping untuk paket dependensi umumnya menyebabkan jenis kegagalan ini. Untuk memulihkan status dependensi ke urutan kerja sebelumnya, coba instal ulang paket dependen tertentu.
Referensi rusak setelah penargetan ulang atau peningkatan proyek Proses penargetan ulang atau peningkatan proyek menyebabkan referensi paket rusak. Setelah Anda menargetkan ulang proyek, NuGet menampilkan kesalahan build. Buat paket daftar peringatan yang mungkin perlu diinstal ulang. Atau, setelah Anda meningkatkan proyek, NuGet menunjukkan kesalahan dalam log peningkatan proyek. File log mencantumkan paket yang mungkin perlu diinstal ulang. Untuk mengatasi masalah karena perubahan kerangka kerja target, coba instal ulang satu atau beberapa paket.
Perubahan paket sedang dikembangkan Penulis paket sering kali perlu menginstal ulang versi paket yang sama yang saat ini mereka kembangkan untuk menguji perubahannya. Konsol Manajer Paket NuGet di Visual Studio menyediakan opsi fleksibel untuk memperbarui dan menginstal ulang paket. Untuk menginstal ulang paket yang sedang dikembangkan, Anda dapat menggunakan Update-Package -reinstall perintah .

Opsi implementasi

Anda memiliki beberapa pilihan tentang cara memperbarui dan menginstal ulang paket NuGet. Metode umum termasuk opsi antarmuka pengguna NuGet Package Manager, NuGet Package Manager Console, dan NuGet (Command Line Interface) CLI.

UI Manajer Paket

Selain antarmuka Konsol, antarmuka pengguna Package Manager juga menyediakan opsi menu untuk menginstal, memperbarui, dan menghapus instalan paket.

  • Untuk memperbarui paket, buka tab Pembaruan , pilih satu atau beberapa paket, lalu pilih Perbarui.

  • Untuk menginstal ulang paket, pertama-tama hapus instalan paket lalu instal lagi. Buka tab Terinstal , pilih paket dan rekam namanya, lalu pilih Hapus instalan. Beralih ke tab Telusuri dan cari nama paket, pilih paket, lalu pilih Instal.

Konsol Manajer Paket

Anda dapat mengakses Konsol Manajer Paket di bawah Alat>NuGet Package Manager>Package Manager Console.

  • Untuk memperbarui paket, Konsol Manajer Paket menyediakan Update-Package perintah .

  • Untuk menginstal ulang paket, Anda dapat menggunakan perintah yang sama dengan -reinstall parameter . Pendekatan ini adalah opsi termampu, jika kompatibel dengan konfigurasi Anda.

Untuk informasi selengkapnya, lihat bagian perintah Perbarui Paket dan Pertimbangan penginstalan ulang Paket.

NuGet CLI

NuGet CLI, nuget.exe, adalah utilitas baris perintah untuk Windows yang menyediakan semua kemampuan NuGet.

  • Untuk memperbarui paket yang diinstal, jalankan nuget update perintah .

  • Untuk menginstal ulang semua paket NuGet, hapus folder paket lalu jalankan nuget install perintah .

  • Untuk menginstal ulang satu paket, hapus folder paket lalu jalankan nuget install <id> perintah, di mana <id> argumen adalah ID paket tertentu.

Catatan

Untuk CLI dotnet, prosedur yang setara tidak diperlukan. Saat Anda menjalankan dotnet restore perintah, dotnet CLI menggunakan NuGet untuk menentukan dependensi dan mengunduh paket NuGet yang diperlukan. Untuk informasi selengkapnya, lihat Memulihkan paket NuGet dengan CLI dotnet.

Batasan pada versi peningkatan

Secara default, menginstal ulang atau memperbarui paket selalu menginstal versi terbaru yang tersedia dari sumber paket. Namun, proyek yang menggunakan packages.config format manajemen dapat secara khusus membatasi rentang versi paket NuGet yang diizinkan.

Misalkan aplikasi Anda hanya berfungsi dengan paket versi 1.x, tetapi tidak dengan versi 2.0 atau yang lebih baru, karena perubahan besar dalam API paket. Untuk memastikan aplikasi Anda berfungsi seperti yang diharapkan, Anda ingin membatasi peningkatan paket NuGet ke versi 1.x saja. Batasan ini membantu mencegah pembaruan yang tidak disengaja yang mungkin merusak aplikasi Anda.

Untuk mengatur batasan, buka packages.config file di editor teks. Temukan dependensi yang ingin Anda batasi, dan tambahkan allowedVersions atribut dengan rentang versi yang Anda inginkan.

Contoh berikut menunjukkan cara membatasi pembaruan ke versi 1.x dengan mengatur allowedVersions atribut ke [1,2):

<?xml version="1.0" encoding="utf-8"?>
<packages>
    <package id="ExamplePackage" version="1.1.0" allowedVersions="[1,2)" />

    <!-- ... -->
</packages>

Dalam semua kasus, gunakan notasi yang dijelaskan dalam Penerapan versi paket.

Perintah Perbarui Paket

Perintah Perbarui Paket di Konsol Manajer Paket adalah cara term mudah untuk menginstal ulang paket dan mengatasi referensi yang rusak. Namun, pendekatan ini tidak dapat digunakan dalam semua skenario. Anda dapat menggunakan perintah untuk memperbarui paket yang diinstal, tetapi tidak melakukan penginstalan awal. Jika Anda mencoba memperbarui atau menginstal ulang paket yang belum diinstal dalam konfigurasi, perintah mengembalikan kesalahan. Pastikan untuk meninjau bagian Pertimbangan penginstalan ulang Paket sebelum bekerja dengan perintah .

Memperbarui paket dalam proyek atau solusi dengan menggunakan PackageReference selalu diperbarui ke versi terbaru paket (tidak termasuk paket prarilis). Proyek yang menggunakan packages.config format manajemen dapat membatasi versi peningkatan seperti yang dijelaskan dalam Batasan pada versi peningkatan.

Bagian berikut ini menyediakan contoh untuk bekerja dengan perintah .

Instal ulang opsi paket

Berikut adalah penggunaan dasar perintah untuk melakukan instalasi ulang. Untuk mengidentifikasi paket NuGet tertentu, Anda dapat menggunakan parameter opsional -Id .

# Reinstall the package named <package_name>
Update-Package -Id <package_name> –reinstall

Update-Package Menggunakan perintah lebih mudah daripada menghapus paket dan kemudian mencoba menemukan paket yang sama di galeri NuGet dengan versi yang sama.

Perbarui opsi paket

Perintah yang sama tanpa -reinstall parameter memperbarui paket ke versi yang lebih baru, jika berlaku. Perintah mengembalikan kesalahan jika paket yang ditentukan belum diinstal dalam proyek.

# Update the package named <package_name>
Update-Package <package_name>

Opsi proyek dan solusi

Secara default, Update-Package perintah memengaruhi semua proyek dalam solusi. Untuk membatasi tindakan ke proyek tertentu, gunakan -ProjectName parameter . Berikan nama proyek seperti yang muncul di Visual Studio Penjelajah Solusi.

Perintah berikut menginstal ulang paket NuGet untuk proyek tertentu dalam solusi Anda. Nama paket NuGet tertentu untuk dipasang ulang disediakan dalam <package_name> parameter .

# Reinstall the package named <package_name> in MyProject only
Update-Package <package_name> -ProjectName MyProject -reinstall

Jika Anda ingin menginstal ulang semua paket dalam proyek Anda, gunakan -ProjectName parameter dengan tidak menentukan paket tertentu. Anda dapat mengikuti pendekatan yang sama ini untuk memperbarui paket dalam proyek Anda, seperti yang ditunjukkan dalam contoh ini:

# Update all packages in MyProject only
Update-Package -ProjectName MyProject

Untuk memperbarui semua paket dalam solusi, cukup gunakan perintah dengan sendirinya Update-Package tanpa argumen atau parameter lain.

Penting

Pastikan untuk menggunakan bentuk perintah berikut dengan hati-hati. Proses perintah dapat memakan waktu yang cukup lama untuk melakukan semua pembaruan.

# Update all packages in all projects in the solution
Update-Package 

Pertimbangan penginstalan ulang paket

Jika Anda ingin menggunakan Update-Package perintah untuk menginstal ulang paket, tinjau pertimbangan berikut untuk memastikan kompatibilitas dengan skenario konfigurasi Anda.

  • Paket dan dependensinya mungkin tidak mendukung kerangka kerja target proyek yang ditargetkan ulang.
  • requireReinstallation Saat atribut diatur ke true, Visual Studio mengeluarkan peringatan build untuk paket yang terpengaruh.
  • Penginstalan ulang batasan paket dan versi dapat memperkenalkan masalah kompatibilitas versi dependensi.
  • Pemasangan ulang paket tertentu dapat menyebabkan paket dependen rusak.

Paket tidak mendukung kerangka kerja target proyek

Jika Anda menargetkan ulang kerangka kerja target proyek, satu atau beberapa paket mungkin tidak mendukung konfigurasi target baru.

Biasanya, menginstal ulang paket dengan Update-Package –reinstall <package_name> perintah berfungsi. Paket yang diinstal terhadap kerangka kerja target lama dihapus instalasinya dan paket yang sama diinstal terhadap kerangka kerja target baru proyek.

Dalam beberapa kasus, paket mungkin tidak mendukung kerangka kerja target baru. Berikut adalah beberapa masalah yang mungkin Anda temui:

  • Jika paket mendukung pustaka kelas portabel (PCL), dan Anda menargetkan ulang proyek ke kombinasi platform yang tidak lagi didukung oleh paket, referensi ke paket dapat hilang setelah menginstal ulang.

  • Masalah ini dapat muncul untuk paket yang Anda gunakan secara langsung atau untuk paket yang diinstal sebagai dependensi. Paket apa pun yang Anda gunakan secara langsung mungkin mendukung kerangka kerja target baru saat dependensinya tidak.

  • Jika menginstal ulang paket setelah penargetan ulang aplikasi Anda menghasilkan kesalahan build atau runtime, Anda mungkin perlu mengembalikan kerangka kerja target Anda atau mencari paket alternatif yang mendukung kerangka kerja target baru Anda dengan benar.

atribut requireReinstallation diatur ke true

Setelah Anda menargetkan ulang kerangka kerja target proyek atau meningkatkan paket NuGet, NuGet mungkin menambahkan requireReinstallation atribut ke packages.config file untuk proyek Anda. Jika NuGet mendeteksi paket yang terpengaruh selama proses penargetan ulang atau peningkatan, NuGet menambahkan requireReinstallation="true" atribut ke packages.config file untuk semua referensi paket yang terpengaruh. Akibatnya, setiap build berikutnya dari proyek Anda di Visual Studio menimbulkan peringatan build untuk paket tersebut. Peringatan disajikan sebagai pengingat untuk menginstal ulang paket yang terpengaruh.

Ketidaksesuaian versi dependensi paket

Perintah Update-Package –reinstall menginstal ulang versi yang sama dari paket yang diinstal dan versi terbaru dari dependensi apa pun. Untuk mengatasi masalah ketidaksesuaian versi, Anda dapat mengatur batasan rentang versi untuk mengontrol konfigurasi. NuGet mematuhi batasan dan memperbarui dependensi paket ke versi yang lebih baru hanya sebagaimana diperlukan untuk memperbaiki masalah.

  • Jika pengaturan batasan Anda menyebabkan dependensi kembali ke versi yang lebih lama selama penginstalan ulang paket, Anda dapat mengatasi masalah dengan Update-Package <dependency_name> perintah . Perintah ini menginstal ulang dependensi yang ditentukan tanpa memengaruhi paket dependen.

  • Anda juga dapat menggunakan perintah Update-Package –reinstall <packageName> -ignoreDependencies. Opsi ini menginstal ulang versi paket asli yang sama, tetapi tidak menginstal ulang dependensi. Gunakan pendekatan ini saat memperbarui dependensi paket dapat mengakibatkan status konfigurasi yang rusak.

Paket dependen rusak

Saat Anda menginstal ulang paket tertentu, paket apa pun yang diinstal yang bergantung pada paket yang diinstal ulang tidak diperbarui. Versi paket lain yang diinstal ini tetap sama. Akibatnya, menginstal ulang dependensi dapat merusak paket dependen.