Saya mendapat:
jenis atau nama namespace tidak dapat ditemukan
kesalahan untuk aplikasi C # WPF di VS2010. Area kode ini dikompilasi dengan baik, tetapi tiba-tiba saya mendapatkan kesalahan ini. Saya sudah mencoba menghapus Referensi Proyek dan using
pernyataan, menutup VS2010 dan memulai kembali, tetapi saya masih memiliki masalah ini.
Adakah ide mengapa ini mungkin terjadi, di mana sepertinya saya melakukan hal yang benar tentang referensi & using
pernyataan?
Saya juga mencatat dalam VS2010 bahwa intellisense untuk namespace bekerja ok, jadi sepertinya VS2010 memiliki referensi proyek dan melihat namespace di satu sisi, tetapi selama kompilasi tidak melihatnya?
Jawaban:
Ini bisa menjadi hasil dari ketidakcocokan versi .Net framework antara dua proyek.
Itu bisa terjadi dalam dua cara:
Misalnya itu akan terjadi ketika aplikasi diatur untuk menargetkan kerangka Profil Klien .Net 4, dan proyek itu referensi menargetkan kerangka penuh .Net 4.
Jadi untuk membuatnya lebih jelas:
Solusi dalam hal ini adalah dengan meningkatkan target kerangka kerja aplikasi (Proyek A), atau menurunkan target perakitan yang direferensikan (Proyek B). Tidak apa-apa untuk aplikasi kerangka penuh untuk referensi / mengkonsumsi perakitan kerangka profil klien, tetapi tidak sebaliknya (profil klien tidak dapat merujuk perakitan kerangka kerja ditargetkan penuh).
Perhatikan bahwa Anda juga bisa mendapatkan kesalahan ini saat membuat proyek baru di VS2012 atau VS2013 (yang menggunakan .Net 4.5 sebagai kerangka kerja default) dan:
proyek referensi menggunakan. Net 4.0 (ini biasa terjadi ketika Anda telah bermigrasi dari VS2010 ke VS2012 atau VS2013 dan Anda kemudian menambahkan proyek baru)
proyek yang direferensikan menggunakan versi yang lebih besar yaitu 4.5.1 atau 4.5.3 (Anda telah menargetkan ulang proyek yang ada ke versi terbaru, tetapi VS masih membuat proyek baru yang menargetkan v4.5, dan Anda kemudian merujuk proyek-proyek yang lebih tua dari proyek baru)
sumber
Menginstal ulang paket nuget membantu saya. Setelah saya mengubah versi .NET Framework agar disinkronkan untuk semua proyek, beberapa paket nuget (terutama Entity Framework) masih diinstal untuk versi sebelumnya. Perintah ini di Package Manager Console menginstal ulang paket untuk seluruh solusi:
sumber
Update-Package -reinstall
saya memiliki beberapa kesalahan dalam semua solusi, termasuk versi yang berbeda dari paket ini. Saya memperbarui semua kemudian akhirnya dijalankan. Itu diperbaiki juga referensi dalam file package.json 45-452, karena saya juga mengubah versi target waktu yang lalu.Saya tidak tahu mengapa ini berhasil, tetapi saya menghapus referensi proyek yang VS2015 katakan tidak dapat ditemukan, dan menambahkannya lagi. Memecahkan masalah. Saya sudah mencoba membersihkan, membangun dan memulai kembali VS tidak berhasil.
sumber
Ketika membangun solusi saya mendapatkan kesalahan yang sama (tipe atau namespace '' tidak dapat ditemukan). Di bawahnya saya melihat peringatan yang menyatakan bahwa "referensi tidak dapat diselesaikan" dan untuk memastikan "perakitan ada pada disk".
Saya sangat bingung, karena DLL saya sangat jelas di lokasi yang ditunjuk referensi. VS sepertinya tidak menyoroti kesalahan, sampai saya mencoba membangun solusinya.
Saya akhirnya menyadari masalahnya (atau setidaknya apa yang saya curigai adalah masalahnya). Saya sedang membangun file perpustakaan dalam solusi yang sama. Jadi meskipun ada pada disk, itu sedang dibangun kembali di lokasi itu (entah bagaimana dalam proses perpustakaan mendapatkan kembali proyek saya yang lain - dalam solusi yang sama - yang merujuk perpustakaan harus memutuskan bahwa perpustakaan tidak ada)
Ketika saya mengklik kanan pada proyek dan membangunnya saja, alih-alih seluruh solusi, saya tidak mendapatkan kesalahan.
Untuk memperbaiki masalah ini saya menambahkan perpustakaan sebagai ketergantungan pada proyek yang menggunakannya.
Untuk melakukan ini:
Ini memastikan bahwa proyek perpustakaan dibangun terlebih dahulu.
sumber
Pertama saya akan memverifikasi bahwa informasi yang dihasilkan proyek Anda tidak rusak. Lakukan pembersihan dan bangun kembali solusi Anda.
Jika itu tidak membantu, satu hal yang saya lihat berhasil di masa lalu untuk masalah perancang adalah membuka proyek bentuk windows, kemudian menutupnya lagi. Ini sedikit isi perut ayam, jadi, jangan menahan nafas.
sumber
Situasi rumit yang saya alami adalah: Proyek satu menargetkan kerangka kerja lengkap 4.0 dengan
Microsoft.Bcl.Async
paket yang diinstal. Proyek dua menargetkan kerangka kerja 4.0 lengkap tetapi tidak akan dikompilasi ketika merujuk kelas satu Proyek.Setelah saya menginstal paket Async NuGet pada proyek kedua itu dikompilasi dengan baik.
sumber
Dalam kasus saya, saya menemukan referensi di VisualStudio memiliki segitiga, dan tanda seru seperti gambar ini,
kemudian, saya klik kanan hapus saja, dan tambahkan referensi dll dengan benar lagi, masalahnya selesai.
sumber
Yang ini berhasil untuk saya. Di kelas Anda, di mana nama kelas didefinisikan, misalnya: Kelas publik ABC, hapus satu karakter dan tunggu sebentar. Daftar kesalahan Anda akan bertambah karena Anda telah mengubah namanya. Sekarang pasang kembali karakter yang telah Anda ketik. Ini berhasil bagi saya, mudah-mudahan itu akan berhasil juga untuk Anda. Semoga berhasil!!!
sumber
Saya memiliki masalah serupa: Kompiler tidak dapat mendeteksi folder di dalam proyek yang sama , jadi menggunakan arahan yang menghubungkan ke folder itu menghasilkan kesalahan. Dalam kasus saya, masalahnya berasal dari penggantian nama folder . Meskipun saya memperbarui namespace dari semua kelas di dalam folder itu, info proyek entah bagaimana gagal diperbarui. Saya mencoba segalanya: menghapus file .suo dan folder bin dan obj, membersihkan solusinya, memuat ulang proyek - tidak ada yang membantu. Saya menyelesaikan masalah dengan menghapus folder dan kelas-kelas di dalamnya, membuat folder baru dan membuat kelas-kelas baru di folder baru itu (hanya memindahkan kelas-kelas di dalam folder baru tidak membantu).
PS: Dalam kasus saya, saya sedang mengerjakan aplikasi web, tetapi masalah ini dapat terjadi pada berbagai jenis proyek.
sumber
[Facepalm] Masalah saya adalah saya menambahkan ketergantungan pada cara C ++ dalam melakukan sesuatu.
Buka proyek yang tidak dapat dibangun, buka folder 'Referensi' di Solution Explorer, dan lihat apakah ketergantungan Anda terdaftar.
Jika tidak, Anda dapat 'Tambah Referensi' dan memilih ketergantungan pada tab Proyek.
Boom Shankar.
sumber
Kami punya kasus aneh tentang hal ini yang baru saja saya perbaiki dalam sebuah solusi. Ada karakter tersembunyi / spasi putih di depan pernyataan "menggunakan" di proyek utama. Proyek itu akan dibangun dengan baik dan situs web berfungsi dengan baik, tetapi proyek unit test yang direferensikan tidak dapat dibangun.
sumber
Saya mengalami masalah ini ketika memutakhirkan proyek yang ada dari VS2008 ke VS2012. Saya menemukan bahwa dua proyek (hanya dua yang saya buat) menargetkan berbeda .Net Frameworks (3.5 dan 4.0). Saya menyelesaikan ini pada tab Aplikasi proyek dengan memastikan bahwa kedua proyek memiliki ".NET Framework 4" di kotak Target Framework.
sumber
Memiliki kesalahan yang sama, cerita saya mengikuti: setelah salah menggabungkan (via git) salah satu file .csproj saya telah menggandakan
compile
entri seperti:Jika Anda memiliki solusi besar dan lebih dari 300 pesan di jendela kesalahan, sulit untuk mendeteksi masalah ini. Jadi saya telah membuka file .csproj yang rusak melalui notepad dan menghapus entri yang digandakan. Bekerja dalam kasus saya.
sumber
Saya memiliki masalah yang sama seperti yang dibahas: VS 2017 menggarisbawahi kelas dalam proyek yang dirujuk sebagai kesalahan tetapi solusinya membangun ok dan bahkan karya intellisense.
Inilah cara saya mengatasi masalah ini:
sumber
Anda juga dapat mencoba menghilangkan kode yang Anda pikir mengalami masalah dengan dan melihat apakah itu mengkompilasi tanpa referensi ke kode itu. Jika tidak, perbaiki beberapa hal hingga kompilasi kembali, dan kemudian kerjakan kembali kode masalah yang Anda duga . Kadang-kadang saya mendapatkan kesalahan aneh tentang kelas atau metode yang saya tahu benar ketika kompiler tidak menyukai sesuatu yang lain. Setelah saya memperbaiki hal yang benar-benar digantung, kesalahan 'hantu' ini hilang.
sumber
Saya tahu ini menendang kuda mati, tetapi saya memiliki kesalahan ini dan kerangka di mana baik-baik saja. Masalah saya pada dasarnya menyatakan bahwa antarmuka tidak dapat ditemukan, namun itu membangun dan diakses dengan baik. Jadi saya berpikir: "Mengapa hanya antarmuka ini ketika orang lain bekerja dengan baik?"
Akhirnya saya benar-benar mengakses layanan menggunakan WCF dengan antarmuka titik akhir yang menggunakan Entity Version 6 dan sisa proyek menggunakan versi 5. Alih-alih menggunakan NuGet saya hanya menyalin paket nuget ke repositori lokal untuk digunakan kembali dan mendaftar secara berbeda.
misalnya EntityFramework6.dll versus EntityFramework.dll .
Saya kemudian menambahkan referensi ke proyek klien dan puf, kesalahan saya hilang. Saya menyadari ini adalah kasus tepi karena kebanyakan orang tidak akan mencampur versi Kerangka Entitas.
sumber
Menambahkan solusi saya ke dalam campuran karena itu sedikit berbeda dan butuh beberapa saat untuk mencari tahu.
Dalam kasus saya, saya menambahkan kelas baru ke satu proyek tetapi karena binding kontrol versi saya tidak diatur saya perlu membuat file dapat ditulis di luar Visual Studio (melalui VC). Saya telah membatalkan penyimpanan di Visual Studio tetapi setelah saya membuat file dapat ditulis di luar VS, saya kemudian menekan Simpan Semua lagi di VS. Ini secara tidak sengaja menyebabkan file kelas baru tidak disimpan dalam proyek..tetapi..Intellisense masih menunjukkannya sebagai warna biru dan valid dalam proyek referensi walaupun ketika saya mencoba untuk mengkompilasi ulang file tersebut tidak ditemukan dan mendapatkan ketik tidak ditemukan kesalahan. Menutup dan membuka Visual Studio masih menunjukkan masalah (tetapi jika saya perhatikan file kelas hilang setelah dibuka kembali).
Setelah saya menyadari ini, perbaikannya sederhana: dengan file proyek diatur ke dapat ditulisi, baca file yang hilang ke proyek. Semua membangun dengan baik sekarang.
sumber
Saya memiliki masalah yang sama. Suatu malam proyek saya akan dikompilasi keesokan harinya KESALAHAN !.
Saya akhirnya menemukan bahwa studio visual memutuskan untuk "mengubah" beberapa referensi saya dan menunjukkannya di tempat lain. sebagai contoh:
System.ComponentModel.ISupportInitialize entah bagaimana menjadi "blahblah.System.ComponentModel.ISupportInitialize"
Cukup kasar untuk dilakukan jika Anda sebagai saya
sumber
Peristiwa itu terjadi di Visual Studio 2017.
sumber
Kasus saya sama seperti yang dibahas di sini tetapi tidak ada yang menyelesaikannya sampai saya menghapusnya
System.Core
referensi dari daftar referensi (Semuanya bekerja dengan baik tanpa itu)Semoga ini bisa membantu seseorang karena masalah ini cukup membuat frustrasi
sumber
Untuk mengatasi masalah ini, dapat juga membantu untuk menghapus dan membuat ulang
*.sln.DotSettings
file dari solusi terkait.sumber
Dalam kasus saya, saya memiliki Kelas yang terdaftar di folder sumber yang tepat, tetapi tidak mendaftar di Solution Explorer. Saya harus melakukan klik kanan pada proyek> Tambah item yang ada dan secara manual pilih Kelas yang katanya hilang. Kemudian semuanya bekerja dengan baik!
sumber
Dalam kasus saya masalahnya adalah bahwa setelah mengubah namespace ke persis sama seperti di proyek lain (sengaja), nama majelis diubah juga oleh VS, jadi ada dua majelis dengan nama yang sama, satu menimpa yang lain
sumber
Dalam kasus saya, saya memiliki file yang dibangun oleh dependensi eksternal (xsd2code) dan entah bagaimana file designer.cs-nya tidak diproses oleh VS dengan benar. Membuat file baru di Visual Studio dan menempelkan kode di dalamnya melakukan trik untuk saya.
sumber
Bagi siapa pun yang mendapatkan kesalahan ini ketika mereka mencoba untuk mempublikasikan situs web mereka ke Azure, tidak ada solusi yang tampak menjanjikan di atas yang membantu saya. Saya berada di kapal yang sama - solusi saya dibangun dengan baik sendiri. Saya akhirnya harus
Agak menyakitkan tetapi merupakan satu-satunya cara saya bisa mempublikasikan situs web saya ke Azure.
sumber
Saya mendapat kesalahan ini mencoba membuat membangun dengan membangun Layanan Tim Visual Studio berjalan pada mesin lokal saya sebagai agen.
Ini bekerja di ruang kerja reguler saya dengan baik dan saya bisa membuka file SLN dalam folder agen secara lokal dan semuanya dikompilasi ok.
DLL yang dimaksud disimpan dalam proyek sebagai
Lib/MyDLL.DLL
dan referensi dengan ini di file csproj:Ternyata itu benar-benar tidak menemukan file meskipun jalur petunjuk. Saya pikir mungkin msbuild mencari relatif ke file SLN daripada file proyek.
Bagaimanapun jika pesan yang Anda dapatkan adalah
Could not resolve this reference. Could not locate the assembly
kemudian pastikan bahwa DLL berada di lokasi yang dapat diakses oleh msbuild.Saya agak curang dan menemukan pesan yang mengatakan
Considered "Reference\bin\xxx.dll"
dan hanya menyalin dll ke sana.sumber
Dalam kasus saya, menambahkan dll sebagai referensi memberi
type or namespace name could not be found
kesalahan. Namun, menyalin dan menempelkan file dll langsung di folder bin menyelesaikan kesalahan.Tidak tahu mengapa ini berhasil.
sumber
Saya tahu utas ini sudah lama tetapi bagaimanapun juga saya berbagi, saya harus menginstal semua dependensi bagian ketiga dari rakitan yang diimpor - karena rakitan yang diimpor tidak dimasukkan sebagai paket Nuget sehingga ketergantungannya tidak ada.
Berharap bantuan ini :)
sumber
Dalam kasus saya, saya memiliki dua proyek dalam solusi, saya menambahkan sub-namespace ke dalam proyek yang direferensikan, tetapi ketika membangun, saya tidak melihat bahwa membangun proyek yang direferensikan gagal dan menggunakan versi yang berhasil dibangun terakhir yang tidak memiliki namespace baru ini, jadi kesalahannya benar, sehingga tidak dapat ditemukan, karena tidak ada. Solusi ini jelas untuk memperbaiki kesalahan dalam proyek yang dirujuk.
sumber
Saya sedang mengerjakan edisi komunitas VS 2017 dan memiliki masalah yang sama dengan paket nuget CefSharp.
Paket diunduh dan dipulihkan dengan sukses, proyek dapat dibangun dan dijalankan dengan sukses - hanya markup yang menunjukkan bahwa ruang nama tidak dikenali.
Yang harus saya lakukan adalah membuka
References
bagian itu dan mengklik salah satu tanda seru kuning.Setelah beberapa detik, kesalahan markup hilang.
sumber