Saya punya solusi & proyek di Visual Studio 2012.
Proyek memiliki file packages.config
di root proyek.
Untuk keperluan pertanyaan ini, anggaplah saya secara tidak sengaja menghapus perpustakaan ini dari References
bagian proyek saya.
Saat masuk ke manajer paket NuGet, antarmuka masih melaporkan tanda centang di sebelah paket-paket ini, menunjukkan mereka diinstal.
Satu-satunya cara saya dapat melihat cara memperbaiki situasi ini adalah dengan menghapus semua entri dari packages.config
, yang akan memperbaiki masalah antarmuka NuGet yang melaporkannya sebagai terinstal, dan menambahkan kembali masing-masing.
Apakah ada cara yang lebih pintar? Saya berharap mengaktifkan 'enable nuget untuk mengembalikan paket yang hilang' akan menyelesaikan masalah ini, tetapi sepertinya tidak melakukan apa-apa.
Anda perlu Mengaktifkan pengembalian paket NuGet di tingkat solusi VS agar paket pemulihan yang hilang dapat berfungsi.
sumber
Dalam hal ini membantu seseorang, bagi saya, tidak ada yang di atas cukup. Saya masih tidak bisa membangun, VS masih tidak dapat menemukan referensi. Kuncinya adalah hanya menutup dan membuka kembali solusi setelah mengembalikan paket.
Berikut skenarionya (menggunakan Visual Studio 2012):
Anda membuka Solusi yang memiliki paket yang hilang. Referensi menunjukkan bahwa VS tidak dapat menemukannya. Ada banyak cara untuk mengembalikan paket yang hilang, termasuk
nuget restore
jika Anda memiliki nuget baris perintah yang diinstalNamun apa pun pendekatannya, referensi tersebut tetap akan ditampilkan sebagai hilang. Dan ketika Anda membangunnya akan gagal. Mendesah. Namun jika Anda menutup solusinya dan membukanya kembali, sekarang VS memeriksa lagi barang-barang bagus
<HintPath>
itu, menemukan bahwa paket-paket tersebut sudah kembali ke tempatnya semula, dan semuanya baik-baik saja dengan dunia.Memperbarui
Apakah Visual Studio masih tidak melihat bahwa Anda memiliki paket? Masih menunjukkan referensi yang tidak bisa diselesaikan? Pastikan bahwa versi paket yang Anda pulihkan sama persis dengan
<HintPath>
di file .csproj Anda. Bahkan nomor perbaikan bug minor (mis. 1.10.1 hingga 1.10.2) akan menyebabkan referensi gagal. Anda dapat memperbaikinya dengan secara langsung mengedit csproj xml Anda, atau dengan menghapus referensi dan membuat yang baru menunjuk pada versi yang baru dipulihkan pada direktori paket.sumber
.csproj
file untuk memastikan nomor versi yang cocok berfungsi untuk saya. Terima kasih!Sementara solusi yang disediakan oleh @jmfenoll berfungsi, ia memperbarui ke paket terbaru. Dalam kasus saya, setelah menginstal beta2 (prerelease) ia memperbarui semua libs ke RC1 (yang memiliki bug). Dengan demikian solusi di atas hanya melakukan setengah dari pekerjaan.
Jika Anda berada dalam situasi yang sama dengan saya dan Anda ingin menyinkronkan proyek Anda dengan versi persis dari paket NuGet yang Anda miliki / atau tentukan di
packages.config
, maka, skrip ini mungkin dapat membantu Anda. Cukup salin & tempel ke Konsol Pengelola Paket AndaDan kemudian jalankan baik dengan nama paket sepific seperti
atau untuk semua paket suka
Kredit pergi ke Dan Haywood dan posting blog-nya .
sumber
Skrip berikut dapat dijalankan di jendela Package Manger Console, dan akan menghapus semua paket dari setiap proyek dalam solusi Anda sebelum menginstalnya kembali.
Ini akan menjalankan skrip instalasi setiap paket lagi, yang seharusnya mengembalikan referensi perakitan yang hilang. Sayangnya, semua hal lain yang dapat dilakukan skrip instalasi - seperti membuat file dan memodifikasi konfigurasi - juga akan terjadi lagi. Anda mungkin ingin memulai dengan copy pekerjaan yang bersih, dan menggunakan alat SCM Anda untuk memilih dan memilih perubahan apa yang harus disimpan dalam proyek Anda dan yang harus diabaikan.
sumber
Saya menambahkan DLL secara manual. Klik kanan pada Referensi dalam proyek, pilih Tambah Referensi dan kemudian dalam dialog tekan tombol Browse. DLL NuGet di mana dalam direktori paket solusi. Untuk mendapatkan nama mereka, Anda dapat mengklik kanan pada referensi di proyek lain yang berfungsi dengan baik dan pilih properti dan lihat di path path.
sumber
Dalam Visual Studio 2015 (Soulution berada di bawah kendali sumber, MVC-Project), csano
Update-Package -Reinstall -ProjectName Your.Project.Name
bekerja, tetapi itu kacau dengan beberapa kunci tulis.Saya harus menghapus "paket" -Folder secara manual sebelumnya. (Tampaknya dikunci karena kontrol sumber).
Juga, saya harus menginstal ulang Paket MVC dari Manajer Paket NuGet.
sumber
Script ini akan menginstal ulang semua paket suatu proyek tanpa mengacaukan dependensi atau menginstal dependensi yang mungkin telah dihapus secara intrutlyz. (Lebih banyak untuk pengembang paket bagian mereka.)
sumber
Kalau-kalau itu membantu seseorang - Dalam skenario saya, saya memiliki beberapa perpustakaan bersama (Yang memiliki proyek / solusi TFS mereka sendiri) semua digabungkan menjadi satu solusi.
Nuget akan berhasil memulihkan proyek, tetapi DLL akan hilang.
Masalah mendasar adalah bahwa, sementara solusi Anda memiliki folder paket sendiri dan telah mengembalikannya dengan benar ke folder itu, file proyek (misalnya .csproj) merujuk pada proyek lain yang mungkin tidak memiliki paket yang diunduh. Buka file dalam editor teks untuk melihat dari mana referensi Anda berasal.
Ini dapat terjadi ketika mengelola paket pada berbagai solusi bersama yang saling terkait - karena Anda mungkin ingin memastikan semua DLL berada pada level yang sama Anda dapat mengatur ini di tingkat atas. Ini berarti bahwa kadang-kadang akan mencari solusi yang sama sekali berbeda untuk DLL direferensikan dan jadi jika Anda tidak memiliki semua proyek / solusi yang diunduh dan terbaru maka Anda mungkin mendapatkan masalah di atas.
sumber
Saya harus setuju dengan @Juri bahwa jawaban yang sangat populer oleh jmfenoll tidak lengkap. Dalam kasus referensi yang rusak, saya menyerahkan bahwa sebagian besar waktu Anda tidak ingin memperbarui ke paket terbaru , tetapi hanya memperbaiki referensi Anda ke versi saat ini yang kebetulan Anda gunakan. Dan Juri menyediakan fungsi praktis
Sync-References
untuk melakukan hal itu.Tetapi kita bisa melangkah sedikit lebih jauh, memungkinkan fleksibilitas untuk memfilter menurut proyek dan juga paket:
sumber
Saya memiliki masalah yang sama dengan referensi yang hilang. Di bawah skenario saya:
Semua nomor versi dalam proyek dan paket cocok, melakukan pengembalian nuget (dengan segala cara) tidak bekerja.
Bagaimana saya memperbaikinya: cukup hapus folder paket di root solusi dan jalankan nuget restore. Pada titik ini, dll telah diunduh dengan benar dan dapat ditambahkan untuk referensi yang hilang.
sumber
Saya menderita masalah ini terlalu banyak, dalam kasus saya Mengunduh NuGet yang hilang diperiksa (tetapi tidak memulihkannya) dan saya tidak dapat menghapus & menginstal ulang karena saya memodifikasi beberapa paket yang diinstal ... jadi:
Saya baru saja membersihkan cache dan membangun kembali dan itu berhasil. (Manajer Alat-Opsi-Nuget - Umum)
juga tautan ini membantu https://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore .
sumber
Hapus semua paket dan hapus depances
Kosongkan folder paket di root proyek
Salin paket.config yang dimodifikasi ke folder root situs web
Jalankan kode ini untuk memulihkan proyek
sumber