ไม่มีประเภทหรือชื่อเนมสเปซ [ปิด]


318

ฉันมีโครงการบริการข้อมูล WCF ที่สร้างขึ้นด้วย Visual Studio 2010 ซึ่งทำงานได้ดี ทันใดนั้นมันก็ไม่ได้รวบรวมอีกต่อไป มันทำให้ฉันมีข้อความเช่น:

ข้อผิดพลาด 7 ประเภทหรือชื่อเนมสเปซ 'บริการ' ไม่มีอยู่ในเนมสเปซ 'System.Data' (คุณขาดการอ้างอิงแอสเซมบลีหรือไม่) C: \ U ... s \ Visual Studio 2010 \ Projects ... \ DataService cs ...

ข้อผิดพลาด 8 ชื่อประเภทหรือชื่อเนมสเปซ 'Linq' ไม่มีอยู่ในเนมสเปซ 'ระบบ' (คุณขาดการอ้างอิงแอสเซมบลีหรือไม่) DependencyResolver.cs 3 14

ข้อผิดพลาด 10 ประเภทหรือชื่อเนมสเปซ 'เว็บ' ไม่มีอยู่ในเนมสเปซ 'System.ServiceModel' (คุณขาดการอ้างอิงแอสเซมบลีหรือไม่)

ข้อผิดพลาด 12 ไม่พบประเภทหรือชื่อเนมสเปซ 'DataService' (คุณพลาดการใช้คำสั่งหรือการอ้างอิงแอสเซมบลีหรือไม่)

ฉันจะแก้ไขได้อย่างไร


4
แม้หลังจากเพิ่มข้อความแสดงข้อผิดพลาดยังคงอยู่
Attilah

18
สิ่งนี้มีประโยชน์สำหรับฉัน ฉันไม่รู้ว่าทำไมมันถึงปิด
ผู้ใช้ gmail

2
คิดว่าเป็นเพราะถึงแม้ว่าคำตอบจะเป็นประโยชน์ แต่คำถามดั้งเดิมนั้นเปิดกว้างมากและไม่เกี่ยวข้องกับใครแม้ว่าคำตอบจะทำได้
WongKongPhooey

48
เฮ้ดูสิ! คำถามที่มีประโยชน์เกี่ยวกับ SO โอ้รออยู่นอกหัวข้อแล้ว แต่มันมี upvotes จำนวนมากและคำตอบที่มี upvotes มากยิ่งขึ้น มีบางอย่าง "ปิด" ที่นี่ แต่ไม่ใช่คำถามนี้
Jagd

3
พวกที่ลงคะแนนให้ปิดข้อผิดพลาดเฉพาะอย่างยิ่งในคำถามนี้ได้อย่างไร ("ประเภทหรือชื่อเนมสเปซไม่มีอยู่ในเนมสเปซ") ฉันมีปัญหาที่คล้ายกันและ Googled ข้อความแสดงข้อผิดพลาดนั้นและคำถามนี้เป็นผลลัพธ์สูงสุด ดังนั้นคำถามจึงไม่คลุมเครือเลย
Simon Tewsi

คำตอบ:


619

ฉันมีปัญหาเดียวกันและฉันต้องกำหนด "กรอบงานเป้าหมาย" ของโครงการทั้งหมดให้เหมือนกัน จากนั้นมันก็สร้างขึ้นได้ดี บนเมนูโครงการคลิกคุณสมบัติชื่อโครงการ คลิกการคอมไพล์แท็บ คลิกตัวเลือกการคอมไพล์ขั้นสูง ใน Target Framework เลือกกรอบงานที่คุณต้องการ


13
ฉันตั้งค่า "กรอบงานเป้าหมาย" โดยคลิกขวาที่โครงการในตัวสำรวจโซลูชันและเลือกคุณสมบัติ กรอบเป้าหมายควรปรากฏในแท็บแอปพลิเคชันเริ่มต้น
Cookie

4
@jaminator นี่เป็นวิธีแก้ปัญหาในบางกรณี อย่างน้อยก็ในเหมือง ด้วยเหตุผลบางอย่างโครงการของฉันปฏิเสธที่จะยอมรับเนมสเปซที่มีอยู่จากโซลูชันเดียวกัน ปัญหาคือแอปพลิเคชันคอนโซลกำลังกำหนดเป้าหมายโปรไฟล์ลูกค้า
Amadiere

3
ทำงานให้ฉันด้วย เกิดขึ้นเมื่อฉันเพิ่มโครงการ WPF (. NET 4 ไคลเอนต์โปรไฟล์) และการอ้างอิงโครงการไลบรารีคลาส (. NET 4) ขอบคุณมัด !!
Tamas Ionut

58
+1 ถึงสิ่งนี้ ข้อความแสดงข้อผิดพลาดที่ทำให้เข้าใจผิดอย่างร้ายแรง อาจช่วยฉันชั่วโมงที่พยายามคิดออก สวัสดี Microsoft ทราบว่า "ไม่สามารถนำเข้าเนมสเปซ BLAH เนื่องจาก BLAH เป็นรุ่นที่เข้ากันไม่ได้" แต่แล้วฉันคิดว่าน่าจะปล้นนาธานที่มีผู้ลงคะแนน 184 คน
Gerald Davis

3
มีวิธีแก้ปัญหาสำหรับกรณีที่เราไม่สามารถเปลี่ยนกรอบงานเป้าหมายของโครงการได้หรือไม่?
Raj123

43

ฉันมีปัญหากับSystem.Linqไม่ได้รับการยอมรับ usingคำสั่งได้สีแดงไก่เขี่ย ฯลฯ วิธีที่ฉันจะแก้ไขมันก็จะเปลี่ยนเว็บไซต์ของฉันเพื่อเป้าหมาย dotnet 3.5 แล้วเปลี่ยนกลับไปใช้กรอบเป้าหมายเดิม (4.0 ในกรณีของฉัน)


2
ทำงานให้ฉันด้วย! แต่ฉันต้องทำมันสองครั้ง ... ไปเถอะ!
nicholeous

หลังจากการผสานไฟล์ web.config บางตัวของเฟรมเวิร์กเป้าหมายที่แตกต่างกันสำหรับแอพเดียวกันด้วยตนเอง web.config หยุดทำงานและฉันได้รับ 500 Internal Server Error หลังจากรีเซ็ตตามที่อธิบายไว้การตั้งค่าเก่าบางอย่างจะถูกลบโดย Visual Studio 2012 โดยอัตโนมัติจาก web.config จากนั้นแอปทำงานอีกครั้ง
humbads

มีปัญหาที่คล้ายกันฉันคิดว่าเฟรมเวิร์กบางรุ่นไม่รู้จักSystem.Linqว่าเป็น
ไลบรารี่ที่

3
ขอบคุณ. มันไร้สาระหัวข้อนี้ถูกปิดเพราะสิ่งนี้ช่วยฉันด้วยหลังจากเสียเวลาหนึ่งชั่วโมงในการคิดออกว่าเหตุใดหน้าที่และการอ้างอิงของฉันจึงหยุดทำงานในทันใด การอ้างอิงที่ล้มเหลวสำหรับฉันคือ system.management.automation.dll
Bbb

นั่นคือเวทมนตร์อย่างแท้จริง เช่นเดียวกับ Mobile Honor 8X ใหม่ซึ่งบางครั้งการเปลี่ยนการตั้งค่าจะไม่มีผลทันที เพื่อให้มันทำงานอย่างถูกต้องฉันต้องสลับไปมาหลายครั้ง
Harish NInge Gowda

28

ฉันพบว่าสิ่งนี้เกิดจากฉันที่มีชื่อเนมสเปซเดียวกันกับชื่อคลาส ( MyWorld.MyWorld = Namespace.ClassName)

เปลี่ยนเนมสเปซของคุณเป็นชื่อที่ไม่เหมือนกับชื่อคลาสของคุณและสิ่งนี้จะคอมไพล์

แหล่ง


6
เพื่อแก้ปัญหานั้นเพียงแค่นำหน้าWindows.Whateverด้วยglobal::
joshcomley

20

ผมประสบปัญหาเดียวกันกับASP.NET MVCเว็บไซต์เมื่อฉันพยายามที่จะใช้LINQ กับ SQL ฉันแก้ไขปัญหาโดย:

Solution Explorer -> การอ้างอิง -> คลิกขวาที่ System.Data.Linq -> Copy Local (True)


17

ตรวจสอบเพื่อดูว่ากรอบงานเป้าหมายของคุณมี. NET รุ่นเดียวกัน ฉันมีปัญหาเดียวกันและ class .NET ของฉันคือ 3.5 และโซลูชันเว็บมี 4.5 ฉันทำข้อมูลให้ตรงกันแล้วมันใช้งานได้ :)


16
นี้เป็นเพียงจุดซ้ำทำและอธิบายในคำตอบก่อนที่ถูกโพสต์เมื่อหลายเดือนก่อนนี้
ริ้น

12

ฉันมีปัญหาเดียวกันและลองทั้งหมดข้างต้นโดยไม่ประสบความสำเร็จจากนั้นฉันก็พบว่ามันคืออะไร:

ฉันสร้างโฟลเดอร์ที่ชื่อว่า "System" ในโปรเจคหนึ่งของฉันจากนั้นสร้างคลาสขึ้นมา ปัญหาดูเหมือนจะเกิดจากการมีเนมสเปซที่เรียกว่า "ระบบ" เมื่อไฟล์. cs ถูกสร้างขึ้นแม้ว่าจะอยู่ในเนมสเปซของ "MyProject.System"

มองย้อนกลับไปฉันสามารถเข้าใจว่าทำไมสิ่งนี้จึงทำให้เกิดปัญหา มันทำให้ฉันงงจริงๆในตอนแรกเนื่องจากข้อความแสดงข้อผิดพลาดดูเหมือนจะไม่เกี่ยวข้องกับปัญหาในตอนแรก


1
ฉันมีปัญหานี้เช่นกันสำหรับการอ้างอิง มันจะดีถ้ามีข้อความแสดงข้อผิดพลาดอธิบายเพิ่มเติมในเครื่องมือ แต่ก็ดี
Nick

3
ฉันโพสต์บางสิ่งลงบน MSDN อัปยศ แต่ MS บอกว่าไม่ใช่ข้อผิดพลาด ฉันจะไม่เถียง แต่ฉันหวังว่าพวกเขาจะเข้าใจว่ามันจะทำให้เกิดปัญหาได้อย่างไร
GrandMasterFlush

1
นั่นเป็นเรื่องหลอกลวง ...
Jitka Darbie Hübnerová

12

ฉันประสบปัญหาเดียวกันกับ System.Data.SQLite สาเหตุของปัญหาคือdll ที่คุณใช้ควรมี. NET รุ่นเดียวกันกับโครงการของคุณ

ตัวอย่างเช่นถ้าคุณใช้ (ในกรณีของฉัน) SQLite สำหรับ. NET 4.5 เป้าหมายแพลตฟอร์มของคุณควรเป็น. NET 4.5 เช่นกัน

คุณสามารถค้นหาเป้าหมายแพลตฟอร์มโดย: โครงการ> (ชื่อโครงการ) คุณสมบัติ> สร้าง


1
สิ่งนี้แก้ปัญหาที่ฉันเพิ่งมี ข้อความแสดงข้อผิดพลาดไม่ได้มีประโยชน์มากไปกว่าบอกคุณว่า DLL เป็นปัญหา
PointlessSpike

7

ในกรณีของฉันปัญหาเกิดขึ้นเนื่องจากคลาสที่ฉันสร้างมีเนมสเปซที่รบกวนคลาสที่มีอยู่ คลาสใหม่ A มีเนมสเปซ zz.yy.xx (โดยไม่ตั้งใจ) การอ้างอิงถึงวัตถุในเนมสเปซอื่น yy.xx ไม่ได้รวบรวมในคลาส A หรือคลาสอื่นที่เนมสเปซคือ zz

ฉันเปลี่ยนเนมสเปซของคลาส A เป็น yy.xx ซึ่งควรเป็นและเริ่มทำงาน


5

สำหรับทุกคนที่มีไฟล์เชื่อมโยง: ฉันมีปัญหานี้และใช้ Silverlight และไฟล์ที่ละเมิดข้อผิดพลาดซึ่งเป็นข้อผิดพลาดนี้เป็นไฟล์ที่เชื่อมโยง

ข้อผิดพลาดจากคอมไพเลอร์บอกฉันว่ามีข้อผิดพลาดเกิดขึ้นในโครงการที่ไฟล์อาศัยอยู่มันลงเอยว่าข้อผิดพลาดไม่ได้อยู่ในโครงการนั้นมันเกิดขึ้นในโครงการที่มีไฟล์ที่เชื่อมโยงอยู่ โครงการนั้นไม่มีข้อมูลอ้างอิง


ฉันมีปัญหานี้กับโครงการ. NET 4 ที่ใช้ System.Management.Automation เมื่อทดสอบโครงการด้วย Visual Studio 2013 ใน Windows 10 การอัปเกรดโครงการเป็น. NET 4.5.1 ปัญหาที่แก้ไขแล้ว
Malcolm McCaffery

2

ฉันพบปัญหานี้ขณะใช้Gitของ Visual Studioรวมเพื่อจัดการโครงการ ด้วยเหตุผลบางอย่างโครงการ Windows Phone 8 จะคอมไพล์ได้ดีเมื่อกำหนดเป้าหมายที่ x86 แต่เมื่อฉันตั้งค่าเป็น ARM เป้าหมายมันจะล้มเหลวในการคอมไพล์ด้วยข้อผิดพลาดที่ระบุว่า "โฆษณา" ไม่มีอยู่ในเนมสเปซของ Microsoft

ฉันลงเอยด้วยการแก้ไขปัญหาโดยลบ Microsoft.Advertising. *. อ้างอิง dll และเพิ่มอีกครั้ง


1

ในกรณีของฉันไม่มีการเปลี่ยนแปลงในโครงการมันเพิ่งหยุดการคอมไพล์และด้วย "ประเภทหรือชื่อเนมสเปซ XXX ไม่มีอยู่" และในคลาสที่บ่นตัวเอง intellisense สำหรับเนมสเปซ / คลาส XXX นั้นทำงานได้ดี ปัญหาอยู่ในการอ้างอิงแน่นอน!

ขั้นตอนในการทำซ้ำ:

  1. โซลูชันมี ProjectA, ProjectB อ้างอิง Projecta เพื่อ log4net Copy local: trueบุคคลที่สามและจะมีการทำเครื่องหมาย ProjectB อ้างอิง ProjectA และไม่มีการอ้างอิงถึง log4net รวบรวมโซลูชั่นที่ดี

  2. การเปลี่ยนแปลงใน Projecta: คุณสมบัติอ้างอิงสำหรับ log4net Copy local: falseไป

  3. ล้างโฟลเดอร์ bin และ obj
  4. เมื่อคุณคอมไพล์ ProjectA คอมไพล์ แต่ ProjectB บ่นเกี่ยวกับการค้นหาเนมสเปซ ProjectA

This is because ProjectB โฟลเดอร์ bin หายไปจากห้องสมุดบุคคลที่สาม (log4net in my case)!

ในกรณีนี้การแก้ปัญหาจะเป็น -

  1. ตรวจสอบให้แน่ใจว่ามีการตั้งค่าการอ้างอิงไลบรารีของบุคคลที่สามเป็นCopy local: true หรือ
  2. เพิ่มเส้นทางไปยังห้องสมุดดังกล่าวในคุณสมบัติโครงการภายใต้เส้นทางอ้างอิง

1

ฉันกำลังอ้างอิง Microsoft.CommerceServer.Runtime.Orders และพบข้อผิดพลาดนี้ โครงการนี้เก่าและมีกรอบงานเป้าหมาย. NET 2.0 ในผลลัพธ์ฉันมีข้อผิดพลาดนี้:

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"

ฉันเพิ่งเปลี่ยนกรอบงานเป้าหมายเป็น. NET 4 และตอนนี้มันสร้างขึ้น


1

และหากสิ่งอื่นทั้งหมดล้มเหลวเช่นการทำให้แน่ใจว่ากรอบงานเป้าหมายเหมือนกันและคุณกำลังจัดการกับไลบรารีคลาส WPF ใน VS2010 เพียงแค่รีสตาร์ท Visual Studio นั่นทำเพื่อฉัน


ในกรณีของฉัน vs2010 การอ้างอิง dll มีข้อผิดพลาดฉันอ่านการอ้างอิง dll และดูเหมือนว่าดี แต่หลังจากการสร้าง type namespace errorเกิดขึ้น และฉันเริ่มต้น visual Studio หลังจากที่ฉันเริ่มใหม่ข้อผิดพลาด dll ต้นฉบับแสดงอีกครั้งและฉันอ่านมันอีกครั้งและสร้างอีกครั้งสำเร็จ
yu yang Jian

0

ฉันพบข้อผิดพลาดเดียวกัน หลังจากที่ฉันค้นพบโปรเจ็กต์ของฉันมีชื่อแอสเซมบลีที่ไม่ถูกต้อง (ฉันคัดลอกไฟล์จากโปรเจ็กต์อื่นและเนมสเปซสับสนเล็กน้อย) และเปลี่ยนมันกลับมาโครงการคอมไพล์อย่างดี


ลงคะแนนแล้วแม้ว่ามันจะเป็นปัญหาของฉัน! ขอบคุณ
SteveCav

0

ฉันได้รับข้อความแสดงข้อผิดพลาดที่คล้ายกันมากซึ่งเกิดจากการทำชั้นเรียนซ้ำโดยไม่ตั้งใจในโครงการอื่นของโซลูชันของฉัน การลบสิ่งที่ซ้ำกันสามารถแก้ไขปัญหาได้


0

ฉันเพิ่งจะต้องทำการกู้คืนระบบและทำให้ไฟล์หลายไฟล์ของฉันเปลี่ยน / หายไปซึ่งฉันได้ทำงานมาตั้งแต่การกู้คืน บางส่วนเป็นไฟล์ DLL ฉันใช้การควบคุมแหล่งที่มาเพื่อดึงโครงการทั้งหมด แต่ฉันยังคงมีปัญหาที่คล้ายกันดังกล่าวข้างต้น ฉันพบคำตอบนี้ที่อธิบายคุณอาจต้องลบ DLL และอ่านเพื่อแก้ไขข้อผิดพลาด นี่เป็นกรณีในสถานการณ์ของฉัน

การถอดWebMatrix.WebDataและ readding มันเช่นเดียวกับการเพิ่มในการแก้ไขข้อผิดพลาดของฉันWebMatrix.DataThe type or namespace name 'Data' does not exist in the namespace 'WebMatrix' ...


-3

ลบไฟล์ .refresh.dll หากคุณอยู่ภายใต้การควบคุมของแหล่งที่มา จากนั้นสร้างใหม่ มันควรจะทำงาน สิ่งนี้ใช้ได้สำหรับฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.