Mengapa saya mendapatkan ikon peringatan ketika saya menambahkan referensi ke proyek plugin MEF?

321

Saya ingin menguji kelas inti dari sebuah plugin dengan secara langsung mereferensikan proyek plugin dan membuat instance kelas plugin. Ketika saya membuat proyek aplikasi Konsol uji dan menambahkan referensi proyek ke proyek plugin, saya mendapatkan ikon peringatan (segitiga kuning dengan tanda seru) di sebelah referensi dalam daftar Referensi.

Ketika saya malah menambahkan referensi ke dll, majelis membangun output dari plugin, saya tidak mendapat peringatan seperti itu. Apa yang bisa diceritakan oleh peringatan ini kepada saya?

ProfK
sumber
8
Sebagian besar waktu, segitiga peringatan akan memiliki tips alat atau (gagal itu) entri di jendela kesalahan. Di duga, kedua proyek memiliki dependensi yang tidak kompatibel.
Damien_The_Unbeliever
2
Adakah peringatan di konsol saat mencoba membangun?
Jite
231
Saya telah melihat ini dengan proyek-proyek yang menargetkan berbagai versi .net
framework
4
@OP Anda dapat memilih jawaban kad81 sebagai jawaban yang benar
Andy
5
Ini selalu membuat saya. Menambahkan proyek baru ke solusi .NET 4 dan standarnya adalah 4,5.
Robin French

Jawaban:

674

Seperti disebutkan dalam komentar pertanyaan, perbedaan versi .NET Framework antara proyek dapat menyebabkan ini. Periksa properti proyek baru Anda untuk memastikan bahwa versi default yang berbeda tidak digunakan.

kad81
sumber
13
Apa yang juga perlu saya ketahui adalah mengapa visual studio diterima menambahkan referensi itu?
Anders Lindén
16
Saya menggunakan VS 2015 dan masalahnya masih ada. Saya kehilangan setengah jam sampai saya datang ke sini.
Alisson
14
bahkan tidak ada teks melayang atau membangun kesalahan yang menjelaskan apa masalahnya
matao
6
Dapat mengkonfirmasi bahwa ini adalah akar masalah. Dapat juga mengonfirmasi bahwa Visual Studio 2017 dengan pembaruan 15.3 masih belum mengatasi masalah tidak benar-benar menampilkan pesan yang bermakna. Sangat menyebalkan.
Greg R Taylor
4
@matao Setuju! Menjengkelkan saya tidak bisa mendapatkan rincian tentang kesalahan ...
nterry
74

Mengalami masalah yang sama dengan Aplikasi Web ASP.Net dan dua proyek kelas perpustakaan yang perlu direferensikan dalam Aplikasi Web. Saya tidak memiliki informasi yang diberikan tentang mengapa pembangunan gagal dan referensi tidak valid.

Solusi adalah untuk memastikan semua proyek memiliki Kerangka Target yang sama:

Dalam Visual Studio 2015 - proyek Klik Kanan> Properti> Aplikasi> Kerangka Target

Simpan, Bersihkan, dan buat kembali solusi. Referensi proyek tidak lagi muncul sebagai peringatan kuning dan solusi akan dikompilasi.

Aplikasi Web saya menargetkan .Net 4.5 sedangkan dua proyek kelas perpustakaan dependen lainnya menargetkan .Net v4.5.2

kbarry
sumber
44

Untuk kedua (atau semua) proyek yang ingin Anda gunakan bersama:

Klik kanan pada proyek> Properti> Aplikasi> Target .NET framework

Pastikan bahwa kedua (atau semua) proyek Anda menggunakan versi .NET framework yang sama.

pengguna3578181
sumber
Sempurna, bekerja untukku! Saya punya proyek MVC dengan .NET Framework 4.5.2. Dan perpustakaan kelas saya yang mereferensikannya adalah .NET Framework 4.7.
Mike Upjohn
Orang akan berpikir bahwa proyek baru yang ditambahkan ke solusi yang ada akan cukup pintar untuk mengetahui versi apa, tetapi sayangnya tidak demikian.
Ron
39
  1. Pastikan semua versi sama untuk setiap proyek, klik setiap proyek dan lihat versi di sini Project> Properties> Application> Target .NET framework

  2. Sebuah. Pergi ke Alat-alat> Nuget Package Manager> Package Manager Jenis Konsol Update-Package -Reinstall (jika tidak berfungsi lanjutkan ke 2.b )

    b. INI KRITIS TAPI KEMUNGKINAN TERBESAR YANG AKAN BEKERJA . Hapus <Target> Mungkin dengan beberapa baris </ Target> biasanya ditemukan di bagian bawah .csproj.

  3. Simpan, muat, dan bangun solusinya.

Aljohn Yamaro
sumber
1
Terima kasih untuk itu, pesan kesalahan yang bagus di Visual Studio tentang versi .Net tidak akan tersesat di sini!
colmde
1
@colmde dengan menarik jika Anda membersihkan solusi, jendela keluaran menampilkan pesan berikut: 'Paket dipulihkan menggunakan .NetFramework XXX alih-alih kerangka kerja target .NetFramework XXX. Paket ini mungkin tidak sepenuhnya kompatibel dengan proyek Anda '
elszeus
1
Bagian 2.b yang tidak disebutkan dalam jawaban lain sangat penting bagi saya! 2.b Hapus <Target> Mungkin dengan beberapa baris </ Target> biasanya ditemukan di bagian bawah .csproj.
shelbypereira
1
Bagian 2.b benar-benar gila tetapi berhasil! terima kasih
Elo
1
Terima kasih 2.b melakukan trik untuk saya juga. Tidak akan pernah tahu ini sendiri.
Henrik Clausen
23

Instal ulang semua paket di semua proyek dari solusi saat ini:

Update-Package -Reinstall
Nitin Badole
sumber
2
Meskipun saran ini tidak secara langsung menyelesaikan masalah saya, saran itu mengarahkan saya ke arah yang tepat untuk skenario saya. Bagi mereka yang mungkin bisa membantu, saya sebenarnya harus mengubah sumber paket NuGet saya menjadi v3 untuk Pembaruan-Paket untuk menemukan versi yang tepat untuk diunduh: docs.nuget.org/consume/package-manager-dialog#package-sources
John Lee
1
Itu menghapus semua paket, menginstalnya dan segitiga kuning kembali.
Anders Lindén
8

Pastikan Anda memiliki proyek yang menargetkan versi kerangka kerja yang sama . Sebagian besar alasannya adalah bahwa proyek saat ini (di mana Anda menambahkan referensi proyek lain) menunjuk ke versi kerangka kerja .net yang berbeda dari yang lainnya .

pengguna274294
sumber
5

Periksa NETFramework dll yang dimaksud & Proyek tempat Anda menambahkan DLL. Mis: DLL ==> didukungRuntime versi = "v4.0" Proyek ==> didukungRuntime versi = "v3.0"

Anda akan mendapatkan ikon peringatan. Solusi: Buat konsistensi versi dll.

Sumit khare
sumber
5

Bagi saya, saya mengalami masalah ini ketika merujuk pustaka kelas .NET Standard 2.0 di aplikasi konsol .NET Framework 4.7.1. Ya, kerangka kerjanya berbeda, tetapi mereka kompatibel (.NET Standard seharusnya cocok dengan kedua .NET Core dan .NET Framework.) Saya mencoba membersihkan, membangun kembali, menghapus dan membaca referensi proyek, dll ... tanpa hasil . Akhirnya, berhenti dari Visual Studio dan membuka kembali menyelesaikan masalah.

Justin
sumber
4

Sudah lama sejak pertanyaan ini diajukan tetapi jika seseorang masih tertarik - Saya baru-baru ini bertemu dengan ikon yang sama. Saya sedang menyusun proyek C # .net menggunakan VS 2008. Saya menemukan VS tidak dapat menemukan rakitan untuk referensi tersebut. Ketika saya mengklik ganda VS menyegarkan referensi dan menghapus ikon pada beberapa [EDIT: yang SEKARANG bisa temukan]. Untuk referensi yang tersisa, saya harus mengkompilasi masing-masing majelis.

HappyTown
sumber
4

Menambahkan 2 sen saya ke jawaban @ kad81,

Pergi ke Visual Studio -> BUILD -> Configuration Manager

Di drop-down "Platform Solusi Aktif" di sudut kanan atas (milik saya adalah VS 2012), jika "Platform Campuran", ubah ke platform yang sesuai berdasarkan rakitan pihak ketiga referensi Anda.

Kemudian di setiap proyek dalam daftar, pastikan Anda memilih platform yang sama untuk semua proyek. (jika x86 tidak ada, maka pilih "", maka Anda dapat memilih "x86".)

Membangun kembali proyek perpustakaan terlebih dahulu dan kemudian merujuk proyek. Semoga ini membantu.

JenonD
sumber
4

Coba tutup dan buka VS.

Tampaknya konyol tetapi setelah 1 jam mengikuti di atas dan menemukan semuanya berbaris OK. Saya memulai kembali VS 2017 dan masalahnya hilang.

Alex Stephens
sumber
1
Bekerja untukku. Kadang-kadang konyol atau tidak, Visual Studio menjadi bingung dan cache-nya kacau. Terima kasih telah menyarankannya - benci melakukannya karena saya merasa bodoh berpikir itu akan berhasil tetapi apa "heck" - setelah satu jam hal-hal lain saya mungkin juga dan tada berhasil
Blake
2

Dalam inti Asp.net kadang-kadang menunjukkan peringatan jika Anda mengubah ruang nama proyek atau nama. Untuk menghapus peringatan semacam ini, Anda cukup Bongkar Proyek dan muat lagi. Jika masalah masih ada berarti Anda tidak dapat menemukan referensi Majelis Anda.

Tomcat0x4d2e47
sumber
1

Saya memiliki ikon-ikon ini untuk alasan yang berbeda. Kami memiliki satu solusi besar untuk semua proyek kami (hampir 100). Saya membuat subseleksi proyek yang saya minati dan membuat solusi baru. Namun referensi mana referensi proyek bukan referensi ke dll yang dikompilasi ....

Setelah beberapa penelitian saya menemukan tautan ini di GitHub yang menjelaskan ini adalah perilaku baru di VS2015.

Pada halaman GitHub mereka menjelaskan solusi untuk mengubah referensi proyek menjadi referensi biner.

Martijn
sumber
1

Untuk memperbaiki beberapa hal yang tidak berfungsi, sebaiknya hapus beberapa perpustakaan kadang-kadang, bagaimana tidak terdengar aneh.

Bagaimanapun, saya percaya masalahnya terlalu luas dan mungkin disebabkan oleh berbagai faktor , jadi ingin berbagi situasi / solusi saya.

Saya punya proyek (dibawa oleh pelanggan) dengan Xamarin Forms dan perpustakaan Telerik. Masalahnya secara umum terkait dengan komponen, perpustakaan mana yang tidak dimasukkan ke dalam folder paket, juga tidak tersedia melalui Nuget (yang berbayar).

Seluruh proyek Referensi adalah "kuning", tampak mengerikan dan menakutkan.

The solusi hanya untuk menghapus mereka Telerik referensi (termasuk beberapa kontrol dalam kode yang menggunakan itu). Tepat setelah itu semua referensi secara ajaib mendapatkan warna abu-abu normal yang umum dan kesalahan (kebanyakan) hilang.

"Sebagian besar" - karena pesan kesalahan "semua merah di sekitar" tentang "elemen tidak didefinisikan di mana saja" terkadang masih terjadi. Itu aneh, dan membawa ketidaknyamanan, tapi saya masih dapat mengkompilasi dan menjalankan proyek: hanya perlu membersihkan solusi, restart Visual Studio, berdoa sedikit, bersihkan lagi, hapus folder obj / bin, restart lagi, dan itu bekerja dengan baik.

Kuncinya adalah menghapus referensi perpustakaan tidak tersedia , karena pesan kesalahan mengatakan hal-hal lain. (Misalnya, sesuatu seperti "Xamarin.Build.Download.XamarinDownloadArchives tidak ditemukan atau tidak dapat menemukan sesuatu" dll, tetapi itu mungkin berarti Anda tidak memiliki beberapa referensi yang tersedia.

Kemudian hapus folder paket, muat ulang / buka kembali proyek / solusi, pergi ke "Kelola Paket Nuget" dan klik tombol "Kembalikan".

Agat
sumber
1

Menggunakan Visual Studio 2019 dengan semua proyek yang menargetkan Net Core 3.1 solusinya adalah:

  1. Bersihkan / Bangun / Bangun Kembali.
  2. Mulai ulang Visual Studio 2019
Riaan van Zyl
sumber
0

Saya juga menghadapi masalah yang sama tetapi kasus saya agak berbeda dengan yang di atas. Saya mencoba membuka proyek yang dibuat di komputer yang berbeda. Saya menemukan bahwa path ke folder paket tidak diperbarui ketika Anda menambahkan referensi sehingga restart VS, mengubah versi .NET, atau rekomendasi yang disebutkan tidak menyelesaikan masalah. Saya membuka file csproj di notepad ++ dan mengoreksi semua path relatif ke folder paket. Kemudian; semua peringatan hilang. Semoga ini bisa membantu.

ali
sumber
0

di VS 2017 Lakukan Bersih lalu Bangun

pengguna1684037
sumber
0

Terima kasih atas bantuannya. Ini adalah rincian bagaimana saya memperbaiki masalah saya:

Klik kanan pada proyek Anda> Properti

Di bawah Aplikasi, ubah Kerangka target. Dalam kasus saya, ImageSharp menggunakan .Net 4.6.1. Anda dapat menemukan ini di paket Anda. Config.

Buka referensi proyek Anda. Anda akan melihat SixLabors memiliki segitiga kuning. Anda harus memperbarui paket NuGet.

Klik kanan pada Referensi> Kelola Paket NuGet.

Perbarui SixLabors.

Anda mungkin memiliki sedikit pembaruan kode (lihat di bawah) tetapi ini memperbaiki masalah saya.

Ubah ImageSharp.Image menjadi ImageSharp.PixelFormats.Rgba32?

PhoenixWright
sumber
0

Dalam Visual Studio 2019, salah satu kerangka target proyek saya adalah .net core tetapi merujuk proyek lain yang kerangka kerja targetnya adalah standar .net. Saya mengubah semua proyek untuk referensi. Net standar dan ikon hilang. Untuk melihat apa proyek Anda, klik kanan dan klik properti dan lihat kerangka Target. Anda juga dapat mengklik normal proyek itu sendiri dan melihat tag <TargetFramework> di bawah <PropertyGroup>

di atas
sumber
0

Dalam solusi multi-proyek, Jika semuanya gagal ... Pada proyek startUp, periksa. Ketergantungan-> Majelis dan melihat apakah proyek referensi yang salah ada di sana. Hapus dan bangun kembali.

Babatunde Ahmed
sumber