Tipe atau nama namespace tidak ada [ditutup]

318

Saya memiliki proyek Layanan Data WCF yang dibangun dengan Visual Studio 2010, yang berfungsi dengan baik. Tiba-tiba, itu tidak dikompilasi lagi. Itu memberi saya pesan seperti:

Kesalahan 7 Tipe atau nama namespace 'Layanan' tidak ada di namespace 'System.Data' (apakah Anda kehilangan referensi perakitan?) C: \ U ... s \ Visual Studio 2010 \ Proyek ... \ DataService. cs ...

Kesalahan 8 Tipe atau nama namespace 'Linq' tidak ada di namespace 'Sistem' (apakah Anda kehilangan referensi perakitan?) DependencyResolver.cs 3 14

Kesalahan 10 Tipe atau nama namespace 'Web' tidak ada di namespace 'System.ServiceModel' (apakah Anda melewatkan referensi perakitan?)

Kesalahan 12 Tipe atau nama namespace 'DataService' tidak dapat ditemukan (apakah Anda melewatkan arahan menggunakan atau referensi perakitan?)

Bagaimana saya bisa memperbaikinya?

Attilah
sumber
4
bahkan setelah menambahkannya, pesan kesalahan masih tetap ada
Attilah
18
Ini berguna bagi saya. Saya tidak tahu mengapa ditutup.
pengguna gmail
2
Pikirkan itu karena walaupun jawabannya telah berguna, pertanyaan aslinya sangat terbuka dan tidak mungkin berhubungan dengan orang lain, meskipun jawabannya memang
WongKongPhooey
48
Hei lihat! Sebuah pertanyaan berguna tentang SO. Oh, tunggu, itu di luar topik. Tetapi memiliki sejumlah besar upvotes dan jawaban dengan lebih banyak upvotes. Sesuatu memang "tidak aktif" di sini, tetapi bukan pertanyaan ini.
Jagd
3
Bagaimana orang-orang yang memilih untuk menutup ini melewatkan kesalahan yang sangat spesifik dalam pertanyaan ("Tipe atau nama namespace tidak ada di namespace")? Saya memiliki masalah yang sama dan meng-Google-kan pesan kesalahan itu dan pertanyaan ini adalah hasil teratas. Jadi pertanyaannya tidak kabur sama sekali.
Simon Tewsi

Jawaban:

619

Saya memiliki masalah yang sama, dan saya harus menetapkan "Kerangka Target" dari semua proyek menjadi sama. Kemudian dibangun dengan baik. Pada menu Proyek, klik Properti ProjectName. Klik tab kompilasi. Klik Opsi Kompilasi Lanjut. Dalam Kerangka Target, pilih kerangka kerja yang Anda inginkan.

Nathan Koop
sumber
13
Saya menetapkan "Kerangka Target" dengan mengklik kanan proyek di solusi explorer, dan memilih properti. Kerangka Target harus terlihat di tab Aplikasi default.
Cookie
4
@jaminator Ini adalah solusi dalam beberapa kasus. Setidaknya di tanganku. Untuk beberapa alasan, proyek saya menolak untuk menerima namespace dari solusi yang sama. Masalahnya adalah aplikasi konsol itu menargetkan profil klien.
Amadiere
3
Bekerja untuk saya juga. Terjadi ketika saya menambahkan referensi proyek WPF (Profil Klien .NET 4) dan proyek perpustakaan kelas (.NET 4). Terima kasih banyak !!
Tamas Ionut
58
Beri +1 pada ini. Pesan kesalahan yang sangat menyesatkan. Mungkin menyelamatkan saya berjam-jam mencoba mencari tahu. Hai Microsoft bagaimana jika "tidak dapat mengimpor namespace BLAH karena BLAH adalah versi yang tidak kompatibel" tapi kemudian saya kira itu akan merampok Nathan dari 184 suara positif.
Gerald Davis
3
Apakah ada solusi untuk kasus-kasus di mana kita tidak dapat mengubah Kerangka-Sasaran proyek?
Raj123
43

Saya memiliki masalah dengan System.Linq tidak dikenali. The usingpernyataan telah menjadi merah berlekuk-lekuk, dll Cara saya dipecahkan itu untuk mengubah website saya dengan target dotnet 3.5, kemudian beralih kembali ke kerangka ditargetkan asli (4.0 dalam kasus saya).

john barat
sumber
2
Bekerja untuk saya juga! Tapi aku harus melakukannya dua kali ... pikirkanlah!
nicholeous
Setelah menggabungkan beberapa file web.config secara manual dari kerangka kerja target yang berbeda untuk aplikasi yang sama, web.config berhenti bekerja dan saya mendapat 500 Server Internal Error. Setelah mengatur ulang seperti yang dijelaskan, beberapa pengaturan lama dihapus oleh Visual Studio 2012 secara otomatis dari web.config, dan kemudian aplikasi bekerja kembali.
humbads
Punya masalah serupa, saya pikir versi kerangka kerja tertentu tidak mengenali System.Linqsebagai perpustakaan yang valid
Callat
3
Terima kasih. Sungguh konyol topik ini ditutup karena ini membantu saya juga setelah membuang waktu satu jam untuk mencari tahu mengapa fungsi dan referensi saya berhenti bekerja tiba-tiba. Referensi yang gagal bagi saya adalah system.management.automation.dll
Bbb
Itu benar-benar ajaib. Sama seperti Mobile Honor 8X saya yang baru, yang terkadang mengubah pengaturan tidak segera berlaku. Agar berfungsi dengan baik, saya harus bolak-balik beberapa kali.
Harish NInge Gowda
28

Saya menemukan bahwa ini disebabkan oleh saya memiliki nama namespace yang sama dengan nama kelas ( MyWorld.MyWorld = Namespace.ClassName).

Ubah namespace Anda menjadi nama yang tidak sama dengan kelas Anda dan ini akan dikompilasi.

Sumber

KiwiNige
sumber
6
Untuk mengatasinyaWindows.Whateverglobal::
awali
20

Saya menghadapi masalah yang sama dengan situs ASP.NET MVC ketika saya mencoba menggunakan LINQ untuk SQL . Saya memperbaiki masalahnya dengan:

Solution Explorer -> Referensi -> Klik kanan pada System.Data.Linq -> Salin Lokal (Benar)

ModChowdhury
sumber
17

Periksa untuk melihat bahwa kerangka kerja target Anda memiliki versi .NET yang sama. Saya memiliki masalah yang sama dan kelas saya. NET 3.5 dan solusi web 4,5. Saya menyinkronkannya, dan kemudian berhasil :)

Gorglar
sumber
16
ini hanya mengulangi poin yang dibuat dan dijelaskan dalam jawaban sebelumnya yang telah diposting beberapa bulan sebelum yang satu ini
gnat
12

Saya memiliki masalah yang sama dan mencoba semua hal di atas tanpa hasil, kemudian saya mengetahui apa itu:

Saya telah membuat folder bernama "Sistem" di salah satu proyek saya dan kemudian membuat kelas di dalamnya. Masalahnya tampaknya berasal dari memiliki namespace yang disebut "Sistem" ketika file .cs dibuat, bahkan jika itu dalam namespace "MyProject.System".

Menengok ke belakang saya bisa mengerti mengapa ini akan menyebabkan masalah. Itu benar-benar mengejutkan saya pada awalnya karena pesan kesalahan pada awalnya tampaknya tidak berhubungan dengan masalah.

GrandMasterFlush
sumber
1
Saya punya masalah ini juga, untuk referensi. Akan lebih baik jika ada pesan kesalahan yang lebih jelas di alat, tapi oh well.
Nick
3
Saya memposting sesuatu di MSDN, tetapi MS mengatakan itu bukan bug. Saya tidak akan berdebat dengan itu tetapi saya berharap mereka akan mengerti bagaimana hal itu dapat menyebabkan masalah.
GrandMasterFlush
1
Itu tipu daya ...
Jitka Darbie Hübnerová
12

Saya pernah mengalami masalah yang sama dengan System.Data.SQLite. Sumber masalahnya adalah dll yang Anda gunakan harus memiliki versi .NET yang sama dengan proyek Anda.

Sebagai contoh jika Anda telah menggunakan (dalam kasus saya) SQLite untuk .NET 4.5, target platform Anda juga harus .NET 4.5.

Anda dapat menemukan target platform dengan: Project> (nama proyek) Properties> Build.

hakanali_md
sumber
1
Ini memecahkan masalah yang baru saja saya alami. Pesan kesalahan tidak terlalu membantu selain memberi tahu Anda mana DLL masalahnya.
PointlessSpike
7

Dalam kasus saya, masalahnya terjadi karena kelas yang saya buat memiliki namespace yang mengganggu kelas yang ada. Kelas A baru memiliki namespace zz.yy.xx (karena kesalahan). Referensi ke objek di namespace lain yy.xx tidak dikompilasi di kelas A atau kelas lain yang namespace-nya adalah zz.

Saya mengubah namespace kelas A menjadi yy.xx, yang seharusnya, dan mulai bekerja.

zDan
sumber
5

UNTUK SIAPA PUN DENGAN FILTER TERKAIT: Saya mengalami masalah ini dan menggunakan silverlight dan file yang menyinggung yang membuang kesalahan ini adalah file yang ditautkan.

Kesalahan dari kompiler memberi tahu saya bahwa kesalahan terjadi di proyek tempat file itu hidup. Akhirnya kesalahan itu BUKAN dalam proyek itu, itu terjadi di proyek yang berisi file yang ditautkan. Proyek itu tidak memiliki referensi.

Mario
sumber
Saya punya masalah dengan proyek .NET 4 ini menggunakan System.Management.Automation ketika menguji proyek dengan Visual Studio 2013 pada Windows 10. Proyek upgrade ke .NET 4.5.1 memperbaiki masalah.
Malcolm McCaffery
2

Saya mengalami masalah ini saat menggunakan integrasi Visual Studio Git untuk mengelola proyek. Untuk beberapa alasan proyek Windows Phone 8 akan dikompilasi dengan baik ketika menargetkan x86, tetapi ketika saya mengaturnya untuk menargetkan ARM, itu akan gagal dikompilasi dengan kesalahan yang menunjukkan bahwa "Iklan" tidak ada di ruang nama Microsoft.

Saya akhirnya menyelesaikan masalah dengan menghapus referensi Microsoft.Advertising. *. Dll dan menambahkannya lagi.

Tom Stu
sumber
1

Dalam kasus saya tidak ada perubahan dalam proyek, itu hanya berhenti untuk mengkompilasi dan dengan "ketik atau nama namespace XXX tidak ada" dan dalam kelas mengeluh itu sendiri intellisense untuk XXX namespace / kelas berfungsi dengan baik. Masalahnya memang dalam referensi!

Langkah-langkah mereproduksi:

  1. Solusi memiliki ProjectA, ProjectB. Referensi ProjectA ke log4net pihak ketiga dan ditandai Copy local: true. Referensi ProjectB ProjectA dan tidak memiliki referensi ke log4net. Solusi mengkompilasi dengan baik.

  2. Ubah ProjectA: properti referensi untuk log4net menjadi Copy local: false.

  3. Bersihkan folder bin dan objek.
  4. Ketika Anda mengkompilasi, ProjectA mengkompilasi tetapi ProjectB mengeluh tentang tidak menemukan namespace ProjectA.

This is because ProjectB folder bin tidak ada perpustakaan pihak ketiga (log4net in my case)!

Dalam hal ini solusinya adalah -

  1. pastikan bahwa referensi perpustakaan pihak ketiga diatur ke Copy local: true atau
  2. tambahkan path ke pustaka tersebut di properti proyek di bawah jalur referensi.
Sasha Bond
sumber
1

Saya mereferensikan Microsoft.CommerceServer.Runtime.Orders dan mengalami kesalahan ini. Proyek ini sudah lama dan memiliki kerangka kerja Target .NET 2.0. Dalam output, saya mengalami kesalahan ini:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3268: The primary reference "Microsoft.CommerceServer.Runtime" could not be resolved because it has an indirect dependency on the framework assembly "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "Microsoft.CommerceServer.Runtime" or retarget your application to a framework version which contains "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

Saya hanya mengubah kerangka kerja target menjadi .NET 4 dan sekarang ini dibangun.

Skychan
sumber
1

Dan jika semuanya gagal, seperti memastikan bahwa kerangka kerja target adalah sama, dan Anda berurusan dengan perpustakaan kelas WPF di VS2010, cukup restart Visual Studio. Itu berhasil untuk saya.

Klaus Nji
sumber
dalam kasus saya vs2010, referensi dll memiliki kesalahan, saya membaca referensi dll dan tampaknya hebat, tetapi setelah membangun type namespace errorterjadi. Dan saya restart visual studio, setelah saya restart, kesalahan dll asli muncul lagi, dan saya membacanya lagi, dan membangun lagi, sukses.
yu yang Jian
0

Saya mengalami kesalahan yang sama. Setelah saya menemukan proyek saya memiliki nama Majelis yang salah (saya menyalin file dari proyek yang berbeda dan ruang nama jadi sedikit bingung), dan mengubahnya kembali, proyek dikompilasi dengan baik.

Fred
sumber
Meski kalah, ini masalah saya! Terima kasih.
SteveCav
0

Saya mendapat pesan kesalahan yang sangat mirip yang disebabkan oleh tidak sengaja membuat duplikat kelas di proyek solusi saya yang lain. Menghapus duplikat memperbaiki masalah

Chris Halcrow
sumber
0

Saya baru-baru ini perlu melakukan Pemulihan Sistem dan itu menyebabkan beberapa file saya berubah / hilang yang telah saya kerjakan sejak pemulihan. Beberapa di antaranya adalah file DLL. Saya menggunakan Kontrol Sumber untuk mengambil seluruh proyek tetapi saya masih memiliki masalah yang sama seperti di atas. Saya menemukan jawaban ini yang menjelaskan Anda mungkin perlu menghapus DLL dan membacanya untuk memperbaiki kesalahan Anda. Ini adalah kasus dalam skenario saya.

Menghapus WebMatrix.WebDatadan membacanya serta menambahkan WebMatrix.Datakesalahan saya diperbaiki The type or namespace name 'Data' does not exist in the namespace 'WebMatrix' ....

JabberwockyDecompiler
sumber
-3

Hapus file .refresh.dll jika Anda berada di bawah kendali sumber. Kemudian bangun kembali. Itu harus bekerja. Ini berhasil untuk saya

sajad
sumber