Saya memeriksa sebuah proyek di satu komputer, memeriksa yang lain, dan menemukan bahwa binari yang diinstal oleh NuGet hilang. Saya bisa memeriksanya di kontrol sumber juga, tetapi sepertinya ada solusi yang lebih baik:
http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
Saya mengikuti instruksi itu, sekarang memiliki .nuget
folder di mana orang seharusnya, memiliki entri berikut di file .csproj saya:
<RestorePackages>true</RestorePackages>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
namun ketika saya membangun kembali solusi saya, paket yang hilang tidak dikembalikan.
Apa yang saya lewatkan? Bagaimana saya bisa mendiagnosis masalah ini?
Jawaban:
Catatan Anda dapat memaksa pemulihan paket untuk dijalankan dengan menjalankan perintah berikut di konsol manajer paket nuget
Memaksa instalasi ulang semua yang ada dalam solusi.
Pasukan instalasi ulang semua dalam proyek myProj.
Catatan : Ini adalah opsi nuklir. Saat menggunakan perintah ini, Anda mungkin tidak mendapatkan versi yang sama dari paket yang telah Anda instal dan itu dapat menyebabkan masalah. Ini lebih kecil kemungkinannya terjadi pada tingkat proyek dibandingkan dengan tingkat solusi.
Anda dapat menggunakan
-safe
opsi parameter commandline untuk membatasi upgrade ke versi yang lebih baru dengan komponen versi Major dan Minor yang sama. Opsi ini ditambahkan kemudian dan menyelesaikan beberapa masalah yang disebutkan dalam komentar.sumber
Untuk orang lain yang menemukan posting ini, baca ini.
NuGet 2.7+ memperkenalkan kami ke Pemulihan Paket Otomatis . Ini dianggap sebagai pendekatan yang jauh lebih baik untuk sebagian besar aplikasi karena tidak merusak proses MSBuild. Kurang sakit kepala.
Beberapa tautan untuk Anda mulai:
sumber
Anda harus memilih salah satu cara berikut ini:
Menginstal ulang paket dengan namanya di semua proyek solusi:
Menginstal ulang paket dengan namanya dan mengabaikan dependensinya dalam semua proyek solusi:
Menginstal ulang paket dengan namanya di proyek:
Instal ulang semua paket dalam proyek tertentu:
Menginstal ulang semua paket dalam solusi:
sumber
Apakah Anda mengaktifkan mode pemulihan paket di proyek yang memiliki paket / binari yang hilang? Ada masalah yang diketahui yang mengharuskan paket diinstal dengan benar saat mengaktifkan mode pengembalian:
http://nuget.codeplex.com/workitem/1879
Tautan asli sudah mati; ini mungkin pengganti: https://github.com/NuGet/Home/issues/1968
sumber
VS 2017
Alat> Manajer Paket NuGet> Pengaturan Manajer Paket> Umum Klik pada "Kosongkan Semua Cache NuGet"
sumber
Saya telah mengalami masalah ini dalam dua skenario.
Pertama, ketika saya mencoba membangun solusi dari baris perintah menggunakan msbuild.exe. Kedua, ketika saya mencoba untuk membangun SLN dan proyek-proyek yang mengandung pada server build saya menggunakan TFS dan CI.
Saya mendapatkan kesalahan dengan mengklaim bahwa referensi tidak ada. Ketika memeriksa direktori build lokal saya dan server TFS, saya melihat bahwa folder / paket tidak dibuat, dan paket nuget tidak disalin. Mengikuti instruksi yang tercantum dalam jawaban Alexandre http://nuget.codeplex.com/workitem/1879 juga tidak bekerja untuk saya.
Saya telah mengaktifkan Paket Pemulihan melalui VS2010 dan saya telah melihat build hanya bekerja dari dalam VS2010. Sekali lagi, menggunakan msbuild gagal. Solusi saya mungkin benar-benar tidak valid, tetapi untuk lingkungan saya ini semua bekerja dari membangun baris perintah secara lokal, serta dari CI membangun di TFS.
Saya masuk ke. \ Nuget dan mengubah baris ini di file .nuget \ NuGet.targets:
dari:
ke: (perhatikan, tanpa tanda kutip di sekitar variabel)
Saya mengerti bahwa jika direktori saya memiliki ruang di dalamnya, ini akan gagal, tetapi saya tidak memiliki ruang di direktori saya dan jadi solusi ini membuat bangunan saya berhasil diselesaikan ... untuk saat ini.
Saya akan mengatakan bahwa menyalakan log level diagnostik dalam build Anda akan membantu menunjukkan perintah apa yang sedang dijalankan oleh msbuild. Inilah yang membuat saya meretas file target sementara.
sumber
Jika hal lain tidak berhasil, coba:
Bekerja untuk saya dan mudah untuk dicoba.
sumber
Jika tidak ada jawaban lain yang cocok untuk Anda, cobalah yang berikut ini yang merupakan satu-satunya hal yang berhasil bagi saya:
Temukan
.csproj
file Anda dan edit dalam editor teks.Temukan
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
tag di.csproj
file Anda dan hapus seluruh blok.Instal ulang semua paket dalam solusi:
Setelah ini paket nuget Anda harus dikembalikan, saya pikir ini mungkin kasus pinggiran yang hanya terjadi ketika Anda memindahkan proyek Anda ke lokasi yang berbeda.
sumber
Hanya untuk orang lain yang mungkin mengalami masalah ini, saya dapat menyelesaikan masalah dengan menutup Visual Studio dan membuka kembali proyek. Ketika proyek dimuat, paket dipulihkan selama fase inisialisasi.
sumber
Bagi saya, saya punya tag kosong NuGetPackageImportStamp di .csproj
Idealnya harus berisi beberapa GUID yang valid.
Menghapus tag di atas dan kemudian "Restore Nugets" bekerja untuk saya.
sumber
Terkadang sesuatu yang aneh terjadi dan menggunakan Visual Studio untuk secara otomatis mengembalikan tidak berfungsi. Jika demikian, Anda dapat menggunakan Konsol Manajer Paket NuGet. Itu dibuka di dalam Visual Studio dari Alat -> NuGet Package Manager -> Package Manager Console . Perintah di dalam konsol itu sederhana. Dan untuk mendapatkan bantuan konteks saat mengetik perintah cukup tekan tombol dan itu akan memberi Anda semua opsi yang dimulai dengan huruf yang Anda ketikkan. Jadi jika paket tidak diinstal, misalnya log4net, ketikkan perintah berikut:
Instal-Paket log4net
Anda dapat melakukan lebih banyak lagi, seperti menentukan versi untuk menginstal, memperbarui paket, menghapus paket, dll.
Saya harus menggunakan konsol untuk membantu saya ketika Visual Studio bertindak seperti orang aneh.
sumber
Pemulihan Paket Otomatis akan gagal karena salah satu dari alasan berikut:
Artikel berikut menguraikan secara lebih rinci bagaimana caranya tentang poin 1-3: https://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore
sumber
Saya memiliki paket NuGet yang rusak setelah saya melakukan Pemulihan Sistem pada sistem saya, mencadangkannya sekitar dua hari. (Paket NuGet telah diinstal untuk sementara waktu.) Untuk memperbaikinya, saya harus pergi ke folder .nuget \ paket di profil pengguna saya, temukan paket-paket itu, dan hapus. Hanya kemudian Visual Studio akan menarik paket ke bawah dan menambahkannya dengan benar sebagai referensi.
sumber
Solusi terbaik yang saya temukan membuat Proyek baru dari awal, lalu mengimpor semua file sumber dengan kode. Proyek saya tidak begitu rumit sehingga saya tidak punya masalah dari sana.
sumber
Tidak ada solusi lain yang berfungsi dalam situasi saya:
Ketergantungan AspNetCore telah diinstal / dihapus dan sedang di-cache. 'AspNetCore.All' akan menolak untuk memperbarui / menginstal ulang / menghapus dengan benar. Dan terlepas dari apa yang saya lakukan, itu akan menggunakan dependensi cache (bahwa itu tidak kompatibel dengan), karena mereka adalah versi yang lebih tinggi.
PackageReference
bin
,obj
folderTools > Nuget Package Manager > Package Manager Settings
danClear all Nuget caches
. Periksa konsol karena mungkin gagal menghapus beberapa item - salin jalur folder dan keluar dari studio visual.Jika itu masih tidak berhasil, ulangi tetapi juga cari drive Anda di windows explorer untuk
nuget
dan menghapus apa pun yang tampak cachey.sumber
vs2015 tidak mengaktifkan masalah nuget restore. Solusi saya:
tambahkan folder .nuget, tambahkan file NuGet.Config dan NuGet.targets di Direktori .nuget
setiap file proyek tambahkan: build
sumber
Jika kesalahan yang Anda hadapi adalah "tidak dapat terhubung ke server jauh" seperti milik saya, maka akan bermanfaat bagi Anda untuk memiliki cek ini di samping cek yang diberikan dalam komentar di atas.
Saya melihat bahwa ada 2 Sumber Paket NUGET dari mana paket-paket itu dapat diunduh (dalam Tools-> Nuget Package Manager-> Pengaturan Packager Manager). Salah satu Sumber Paket tidak berfungsi dan Nuget mencoba mengunduh dari sumber itu saja.
Banyak hal yang terjadi setelah saya mengubah sumber paket untuk diunduh dari: https://www.nuget.org/api/v2/ EXPLICTLY dalam pengaturan
sumber
Dalam kasus saya, upaya pemulihan Nuget yang dibatalkan telah merusak salah satu
packages.config
file dalam solusi. Saya tidak menemukan ini sebelum memeriksa pohon kerja git saya. Setelah mengembalikan perubahan dalam file, pemulihan Nuget kembali berfungsi.sumber
Ada jalan pintas untuk membuat Nuget restore berfungsi, 1. Pastikan koneksi internet atau url Nuget tepat di menu opsi VS Tools 2. Lihat .nuget atau folder nuget dalam solusinya, selain itu - salin dari sembarang untuk mendapatkan nuget.exe
HAPUS paket folder, jika ada
Buka konsol Package manager, jalankan perintah ini
sumber
Di VS2017, klik kanan pada solusi => Buka CommandLine => Baris Perintah Pengembang.
Setelah terbuka, ketikkan (dan tekan enter setelah)
Itu akan mengembalikan semua paket, dan Anda mendapatkan output konsol yang bagus dari apa yang telah dilakukan ...
sumber