ไม่มีชื่อนี้ในข้อผิดพลาดเนมสเปซใน XAML


126

ใช้ VS2012 กับแอปพลิเคชัน VB.NET WPF ฉันมีแอพสอน MusicPlayer ง่ายๆที่ฉันใช้เพื่อเรียนรู้ WPF ฉันกำลังแปลงบทช่วยสอนเวอร์ชัน C # เป็น VB.NET ทีละขั้นตอน

มี 2 ​​คลาสในแอพที่ทั้งสองอยู่ภายใต้เนมสเปซเดียวกัน ฉันสามารถอ้างอิงเนมสเปซใน XAML ได้ แต่เมื่อฉันพยายามอ้างอิงคลาสออบเจ็กต์ใน XAML ฉันได้รับข้อผิดพลาดและฉันไม่สามารถคอมไพล์ได้

สิ่งที่แปลกคือ IntelliSense ทำงานได้ดีกับทั้งการอ้างอิงเนมสเปซผ่านแท็ก xmlns: c = และเมื่อพิมพ์คลาสออบเจ็กต์โดยใช้ <c: แต่อ็อบเจ็กต์ถูกขีดเส้นใต้และเกิดข้อผิดพลาดขณะพยายามสร้างหรือทำงานในตัวออกแบบ

ไฟล์คลาส. vb อยู่ในโฟลเดอร์ชื่อ \ Controls Namespace รูทโปรเจ็กต์หลักถูกปล่อยว่างไว้โดยเจตนา คลาสเขียนโค้ดแบบนี้ ...

Namespace MusicPlayer.Controls
    Public Class UpdatingMediaElement
       .... code here
    End Public
End Namespace

xaml จะเป็นแบบนี้

(เนมสเปซที่กำหนดไว้ใน<Window >แท็ก

xmlns:c="clr-namespace:MusicPlayer.Controls"

(วัตถุที่กำหนดใน a <Grid>)

  <c:UpdatingMediaElement Name="MyMediaElement" />

(แสดงข้อผิดพลาด) ไม่มีชื่อ "UpdatingMediaElement" ในเนมสเปซ "clr-namespace: MusicPlayer.Controls"

ไม่แน่ใจว่ามีอะไรผิดพลาดหรือต้องแก้ไขอย่างไร


13
การรีสตาร์ทวิชวลใช้ได้ผลสำหรับฉัน (อย่าประมาทพลังของการเริ่มต้นใหม่)
Falaque

1
ความช่วยเหลือเล็กน้อยสำหรับผู้ที่มีปัญหานี้: ตรวจสอบให้แน่ใจว่าชั้นเรียนของคุณเป็นแบบสาธารณะ
Borzh

คำตอบ:


234

เมื่อคุณเขียนโค้ด wpf และ VS ให้บอกว่า "ชื่อ ABCDE ไม่มีอยู่ในเนมสเปซ clr-namespace: ABC" แต่คุณสามารถสร้างโครงการของคุณได้สำเร็จมีเพียงความไม่สะดวกเล็กน้อยเนื่องจากคุณไม่เห็นการออกแบบ UI (หรือเพียงแค่ต้องการล้างโค้ด)

ลองทำสิ่งเหล่านี้:

  • ใน VS คลิกขวาที่โซลูชันของคุณ -> คุณสมบัติ -> คุณสมบัติการกำหนดค่า

  • กล่องโต้ตอบใหม่ถูกเปิดขึ้นลองเปลี่ยนการกำหนดค่าโครงการจาก Debug เป็น Release หรือในทางกลับกัน

หลังจากนั้นสร้างโซลูชันของคุณใหม่ สามารถแก้ปัญหาของคุณได้


4
สิ่งนี้ยังคงเกิดขึ้นใน Visual Studio 2015 Update 1 โซลูชันของคุณใช้งานได้ - ขอบคุณ!
Simon Smith

4
อาจจะไม่ใช่ แต่ฉันพบว่าการสลับระหว่างโหมด Debug และ Release บนแถบเครื่องมือนั้นใช้งานได้โดยไม่คำนึงถึง
ketura

35
ได้รับการยืนยันใน VS 2017 เวอร์ชัน 15.2 (26430.15) ในเดือนกรกฎาคม 2017 เพียงแค่เปลี่ยนในดรอปดาวน์จาก Debug เป็น Release คอมไพล์แล้วและข้อผิดพลาดหายไปเปลี่ยนกลับและคอมไพล์แล้วและข้อผิดพลาดยังคงหายไป
Tedd Hansen

7
ดูเหมือนว่า VS17 จะดื้อรั้นเป็นพิเศษ - พยายามเปลี่ยน Rel / Dbg เปลี่ยน x64 / x86 ลบโฟลเดอร์ ShadowCache, ComponentCache, Bin / Obj แล้วยังมี "ข้อผิดพลาด" และตัวออกแบบไม่ทำงานกับแอปขนาดเล็กมาก (แอปอื่น ๆ ที่มี เช่น 50 มุมมอง WPF ทำงานได้ดี) เกิดขึ้นอย่างกะทันหันและไม่สามารถหายไปได้ มีพร็อบนี้มาก่อนหลายครั้ง แต่เป็นครั้งแรกใน VS17 และไม่สามารถแก้ไขได้ในขณะนี้ ยังคงเป็นคำตอบที่ดีที่สุดเนื่องจากเคยทำงานหลายครั้งก่อนหน้านี้
bokibeg

7
ฉันชอบที่ฉันกลับมาหาคำตอบนี้และฉันได้โหวตแล้ว ... 2.5 ปีที่แล้ว
Mathieu Guindon

51

หากแอสเซมบลีแตกต่างจากเนมสเปซที่มีคลาสของคุณคุณจะต้องระบุอย่างชัดเจน

เช่น: -

xmlns:Local="clr-namespace:MusicPlayer.Controls;assembly=MusicPlayer"

1
แม้ว่าจะแก้ไขปัญหาของฉันได้ในตอนแรก แต่ก็ยังแสดงข้อผิดพลาดเดิม อย่างไรก็ตามตอนนี้ฉันยังไม่สามารถสร้างโซลูชันได้อีกต่อไป
Bouke

6
@bouke ทำความสะอาดน้ำยาและสร้างใหม่
Vasanth Sriram

ยอดเยี่ยมขอบคุณมาก นั่นช่วยได้จริงๆ
Keith

สิ่งนี้ทำเพื่อฉัน สิ่งที่แปลกคือตัวแปลงอยู่ในแอสเซมบลีเดียวกับไฟล์ xaml .... แต่มันอยู่ในเนมสเปซที่แตกต่างกัน
Jonathan Alfaro

ขอบคุณชุดประกอบหายไป
Teroneko

31

ฉันเห็นว่าปัญหานี้หายไปโดยการล้าง Xaml Design Shadow Cache ฉันมีปัญหากับ Visual Studio 2015 Update 1

ใน Visual Studio 2015 แคชจะอยู่ที่นี่:

%localappdata%\Microsoft\VisualStudio\14.0\Designer\ShadowCache

กระบวนการ:

  1. คลิกขวาที่โซลูชันใน Solution Explorer และเลือก "Clean Solution"
  2. ปิด Visual Studio
  3. ลบโฟลเดอร์ ShadowCache
  4. เปิดโครงการ Visual Studio อีกครั้ง
  5. สร้างโซลูชันใหม่

และ voila ไม่มีข้อผิดพลาดเนมสเปซอีกต่อไป


7
น่าเศร้าที่ฉันไม่ได้เปลี่ยนแปลงอะไรเลย ยังคงรับมือกับสิ่งที่น่ารำคาญนี้หลังจากเกือบทั้งปี : /
Khale_Kitha

3
ขอบคุณ! จบลงด้วยการทำงานสำหรับฉัน เป็นเรื่องน่าเศร้าที่ต้องเห็นเทคนิคนี้ใน VS15
Ocab19

4
คุณสามารถใช้% localappdata% \ Microsoft \ VisualStudio \ 14.0 \ Designer \ เพื่อไปยังโฟลเดอร์ที่ถูกต้องได้ทันที
Maxence

1
การมีนักออกแบบที่ใช้ได้ผลก็ต่อเมื่อคุณสร้างโซลูชันนั้นแย่มาก ลองนึกภาพบอกให้นักออกแบบรถสร้างรถทั้งคันก่อนที่จะเห็นการออกแบบ
Paul McCarthy

26

ในกรณีของฉันมันเป็นเพราะการรวบรวมข้อผิดพลาดอื่นเมื่อข้อผิดพลาดอื่น ๆ ได้รับการแก้ไขข้อผิดพลาดที่ดูเหมือนจะเกี่ยวข้องนี้ก็ถูกลบออกจากรายการด้วย โดยเฉพาะข้อผิดพลาดที่ด้านล่างของรายการข้อผิดพลาดและในหน้าที่คุณเพิ่งเปลี่ยนแปลง

ดังนั้นอย่าใส่ใจกับข้อผิดพลาดนี้โดยตรงและให้ความสำคัญกับข้อผิดพลาดอื่น ๆในตอนแรก


2
โปรดทราบว่าการสร้าง / คอมไพล์ช่วยแก้ปัญหานี้ให้ฉันได้แม้ว่าฉันจะไม่มีข้อผิดพลาดในการคอมไพล์อื่น ๆ ที่ไม่เกี่ยวข้องก็ตาม ดูเหมือนว่าหน้าต่าง XAML จะไม่รู้จักคลาสใหม่ ๆ จนกว่าคุณจะคอมไพล์เสร็จ
HK1

1
นี่เป็นคำแนะนำที่ดีที่สุดสำหรับฉัน แต่เนื่องจาก @ HK1 บางครั้งไม่มีรายการอื่นในรายการข้อผิดพลาดของคอมไพเลอร์ ... ไม่มีข้อผิดพลาดในรายการ แต่มีข้อผิดพลาดอื่น ๆ หากต้องการดูแสดงความคิดเห็นหรือลบบรรทัดที่มีเครื่องหมายข้อผิดพลาดเนมสเปซคอมไพล์อีกครั้งจากนั้นคุณจะเห็นข้อผิดพลาดของคอมไพเลอร์อื่น ๆ แก้ไขและบรรทัดก่อนทำเครื่องหมายด้วยข้อผิดพลาดเนมสเปซจะใช้ได้เมื่อคุณกู้คืน
SERWare

ฉันได้ลบเมธอดในโค้ดที่อยู่เบื้องหลังซึ่งยังคงอ้างอิงใน XAML เมื่อฉันลบข้อมูลอ้างอิงข้อผิดพลาดนี้ก็หายไป
YarsRevenge13

23

ลองเปลี่ยนแพลตฟอร์มเป้าหมายการสร้างเป็น x86 และสร้างโครงการ

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


ฉันเคยเกิดเหตุการณ์นี้ขึ้นมาใหม่และฉันสามารถยืนยันได้ว่าสิ่งนี้ช่วยแก้ปัญหาให้ฉันได้ คุณสามารถเปลี่ยนกลับเป็น x64 ได้หลังจากสร้างใน x86
teynon

สิ่งนี้ใช้ได้ผลกับฉันเช่นกันใน VS 2012 ... หลังจากพยายามหาเหตุผลมาหลายชั่วโมง ขอบคุณทอม!
Bryan Greenway

การเปลี่ยนเป็น x86 และกลับไปเป็น x64 ช่วยแก้ปัญหาได้ที่นี่ดังนั้นขอบคุณที่เป็นแรงบันดาลใจให้ฉันลองทำ ฉันได้ปิด VS ลบ bin และ obj แล้วและสร้างใหม่พร้อมกับคำแนะนำอื่น ๆ และไม่มีอะไรช่วยได้จนถึงตอนนี้
Grault

ใช่สิ่งนี้ใช้ได้กับฉันในการอัปเดต VS2015 2 อย่างไรก็ตามฉันจำเป็นต้องโหลดไฟล์ dll ภายนอกของฉันใหม่และสร้างใหม่ด้วย
SezMe

ด้วย VS2015U2 ฉันยังคงได้รับปัญหานี้ใน x64 ทำงานได้ดีใน CPU ใด ๆ การสลับไปมาไม่ได้ผลสำหรับฉัน
DaleyKD

7

Dunno ถ้าสิ่งนี้จะช่วยใครได้อีก

ฉันยังใหม่กับ WPF และยังเป็นมือใหม่กับ VB.net - ดังนั้นฉันจึงคิดว่าการได้รับข้อผิดพลาดนี้เกิดจากการที่ฉันทำเรื่องโง่ ๆ ในการประชุมสุดยอด ........ สมมติว่าฉันเป็นจริงๆ! ฉันสามารถกำจัดมันได้โดยย้ายโปรเจ็กต์ของฉันจากไดรฟ์ที่แชร์ไปยังไดรฟ์ในเครื่องของฉัน ข้อผิดพลาดหายไปโครงการรวบรวมได้อย่างสมบูรณ์ไม่มีปัญหาเพิ่มเติม - ยัง ดูเหมือน VS2015 ยังคงมีปัญหากับโครงการที่จัดขึ้นในไดรฟ์ที่แชร์


2
นี่เป็นกรณีของฉันฉันย้ายไปที่ vm ของฉัน (ที่ฉันพัฒนา) และไม่มีปัญหา ขอบคุณ!
Mario Tacke

นี่เป็นกรณีสำหรับฉันเช่นกันที่ปรากฏ การย้ายไปอยู่ในไดรฟ์ภายในเครื่อง (แทนที่จะเป็นการแชร์เครือข่าย - ตามที่ Parallels ตั้งค่าไว้เพื่อเชื่อมต่อทั้งระบบไฟล์ Mac และ Windows เล็กน้อย) แก้ไขปัญหาได้
ckittel

7

อาจเป็นวิธีแก้ปัญหาอื่นเมื่อโครงการรวบรวม แต่ข้อผิดพลาด XAML กำลังแสดง:

  1. ในโซลูชันสำรวจบนโหนดโครงการที่มี xaml
  2. คลิกขวาที่โครงการและเลือก 'ยกเลิกการโหลดโครงการ'
  3. คลิกขวาที่โปรเจ็กต์แล้วเลือก 'โหลดโปรเจ็กต์ใหม่' ตรวจสอบให้แน่ใจว่าโปรเจ็กต์ของคุณยังคงถูกเลือกเป็น "โปรเจ็กต์เริ่มต้น" ถ้าไม่ :
  4. คลิกขวาที่โครงการและเลือก 'ตั้งเป็นโครงการเริ่มต้น'

ไม่จำเป็นต้องสร้างใหม่หรือปิดสตูดิโอภาพ


6

พระเยซู ... นี่ยังคงเป็นปัญหาในอีกห้าปีต่อมาใน Visual Studio 2017 เนื่องจากฉันเพิ่งเริ่มใช้ WPF ฉันมั่นใจว่าปัญหานี้เป็นของฉัน แต่ไม่ทุกอย่างรวบรวมและทำงานได้อย่างถูกต้อง

ฉันลองสร้างใหม่ล้างและสร้างใหม่สลับระหว่างเอาต์พุต x86 / x64 รีบูต Windows ทำความสะอาดโฟลเดอร์ ShadowCache เพิ่ม "; assembly = {my main assembly name}" ในการประกาศเนมสเปซ XML ไม่มีอะไรได้ผล! สิ่งเดียวที่ทำได้:

ใส่คลาสคำสั่งแบบคงที่ของฉัน (ในกรณีของฉันข้อตกลงเกี่ยวกับการทำให้การออกแบบค้นพบคำสั่ง WPF ของฉัน) ในแอสเซมบลีแยกต่างหากและเปลี่ยนชื่อแอสเซมบลีเป็นชื่อนั้นแทน


2

ฉันมีปัญหาเดียวกันและในกรณีของฉันมุมมองออกแบบมาร์กอัปขอให้ฉันสร้างโซลูชันใหม่และไม่แสดงเค้าโครงฟอร์มพร้อมข้อความนี้: Design view is unavailable for x64 and ARM target platforms, หรือBuild the Project to update Design view.

ไม่ได้รับการแก้ไขโดยการสร้างโซลูชันขึ้นมาใหม่ (ไม่มีทั้งมุมมองการออกแบบหรือข้อผิดพลาด "ไม่มีชื่อในเนมสเปซ")

ฉันคิดว่าเป็นเพราะฉันเล่นโดยใช้การตั้งค่าในโซลูชัน -> คุณสมบัติ> คุณสมบัติการกำหนดค่า

ในที่สุดฉันก็แก้ไขปัญหา 2 งาน:

  1. การทำเครื่องหมายในช่องทำเครื่องหมายทั้งหมดในคอลัมน์สร้างของหน้า: โซลูชัน -> คุณสมบัติ -> คุณสมบัติการกำหนดค่า
  2. การเปลี่ยนการกำหนดค่าโซลูชันจากDebugเป็นReleaseหรือในทางกลับกัน

ฉันคิดว่ามันเป็นบั๊กใน Visual Studio2012 Update 2


2

ปัญหาเดียวกันนี้ทำให้เกิดภัยพิบัติ Visual Studios 2013, Service Pack 4 ฉันได้ลองใช้ Visual Studios 2015 Preview ด้วยผลลัพธ์เดียวกัน

เป็นเพียงข้อ จำกัด ของโปรแกรมสร้างภาพ WPF ซึ่งทีม Visual Studios ยังไม่ได้แก้ไข เพื่อเป็นการพิสูจน์การสร้างในโหมด x86 ทำให้ Visualizer และการสร้างในโหมด x64 ปิดใช้งาน

Intellisense พอทำงานได้อย่างแปลกประหลาดสำหรับ Visual Studios 2013, Service Pack 4


2

ฉันมีปัญหานี้เมื่อเร็ว ๆ นี้โดยใช้ VS 2015 Update 3 สำหรับโปรเจ็กต์ WPF ของฉันใน. NET 4.6.2 สำเนาโครงการของฉันอยู่ในโฟลเดอร์เครือข่ายฉันย้ายไปในเครื่องและช่วยแก้ปัญหาได้

วิธีนี้อาจแก้ปัญหาประเภทอื่น ๆ ได้เนื่องจาก VS 2015 ไม่ชอบเส้นทางเครือข่าย อีกปัญหาหนึ่งที่เป็นปัญหาใหญ่สำหรับพวกเขาคือการซิงค์ที่เก็บ git หากโปรเจ็กต์ของฉันอยู่ในเส้นทางเครือข่ายแก้ไขได้โดยการย้ายในเครื่อง


1

ดูเหมือนว่าปัญหานี้อาจแก้ไขได้ด้วย "กลเม็ด" ต่างๆ

ในกรณีของฉันฉันได้สร้าง / สร้างใหม่ / ทำความสะอาดโซลูชันทั้งหมดแทนที่จะเป็นเพียงโครงการที่ฉันกำลังดำเนินการอยู่ภายในโซลูชัน เมื่อฉันคลิก "สร้าง [โครงการของฉัน]" ข้อความแสดงข้อผิดพลาดก็หายไป


1

ลองตรวจสอบการอ้างอิงการประกอบของคุณ หากคุณมีเครื่องหมายอัศเจรีย์สีเหลืองในการอ้างอิงโครงการแสดงว่ามีปัญหาเกิดขึ้นและคุณจะได้รับข้อผิดพลาดทุกประเภท

หากคุณทราบว่าการอ้างอิงโครงการถูกต้องให้ตรวจสอบกรอบเป้าหมาย ตัวอย่างเช่นการมีโครงการโดยใช้กรอบงาน 4.5 อ้างอิงโครงการที่มีกรอบงาน 4.5.2 ไม่ใช่การผสมผสานที่ดี


กล่าวอีกนัยหนึ่งคือ. NET Framework เวอร์ชันของโปรเจ็กต์ต้องไม่เก่ากว่า. NET Framework เวอร์ชันอ้างอิงของโปรเจ็กต์
icernos

1

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

  1. คลิกขวาที่ไฟล์ DLL ใน Windows Explorer และเลือก Properties
  2. ที่ด้านล่างของแท็บทั่วไปให้คลิกปุ่ม "เลิกบล็อก" หรือช่องทำเครื่องหมาย

หมายเหตุ: ปลดบล็อกเฉพาะ DLL เท่านั้นหากคุณมั่นใจว่าปลอดภัย


สิ่งนี้ใช้ได้ผลสำหรับฉัน - ฉันดาวน์โหลดโครงการจากดรอปบ็อกซ์และได้รับข้อผิดพลาด ฉันต้องลบ ShadowCache ด้วย
geometrikal

1

ในกรณีของฉันการควบคุมผู้ใช้ถูกเพิ่มเข้าไปในโครงการหลัก ฉันลองใช้วิธีแก้ปัญหาต่างๆข้างต้นแล้ว แต่ก็ไม่มีประโยชน์ ไม่ว่าฉันจะได้รับมาร์กอัปที่ไม่ถูกต้อง แต่โซลูชันจะคอมไพล์และใช้งานได้หรือฉันจะเพิ่ม xmlns: c = "clr-namespace: MyProject; assembly = MyProject" จากนั้นมาร์กอัปจะปรากฏขึ้น แต่ฉันจะได้รับข้อผิดพลาดในการคอมไพล์ที่ ไม่มีแท็กในเนมสเปซ XML

สุดท้ายฉันได้เพิ่มโปรเจ็กต์ WPF User Control Library ใหม่ลงในโซลูชันและย้ายการควบคุมผู้ใช้ของฉันจากโปรเจ็กต์หลักไปยังโปรเจ็กต์นั้น เพิ่มการอ้างอิงและเปลี่ยนแอสเซมบลีให้ชี้ไปที่ไลบรารีใหม่และในที่สุดมาร์กอัปก็ทำงานและคอมไพล์โครงการโดยไม่มีข้อผิดพลาด


1

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

ในกรณีของฉันโซลูชันมีสองโครงการโครงการหนึ่งมีโมเดล (กล่าวว่าโครงการและชื่อแอสเซมบลีคือโมเดล ) และอีกอันที่มีมุมมองและโมเดลมุมมอง (ตามแบบแผนของเรา: โปรเจ็กต์ชื่อแอสเซมบลีและเนมสเปซเริ่มต้นคือโมเดลตรวจสอบ ) . โมเดลตรวจสอบโครงการโมเดลที่อ้างถึง

ในโปรเจ็กต์ Models.Monitor หนึ่งใน xaml ฉันรวมเนมสเปซต่อไปนี้: xmlns: monitor = "clr-namespace: Models.Monitor"

ฉันสงสัยว่าMSBUILD และ Visual Studio แล้วถูก erroring ออกขณะที่พวกเขาพยายามที่จะหาชนิด 'ตรวจสอบ' ในการชุมนุม 'รุ่น' ในการแก้ไขฉันได้ลองทำสิ่งต่อไปนี้:

  1. xmlns: monitor = "clr-namespace: Models.Monitor; assembly =" - ซึ่งใช้ได้ถ้าเนมสเปซอยู่ในแอสเซมบลีเดียวกันตามhttps://msdn.microsoft.com/en-us/library/ms747086(v=vs 0.110) .aspx
  2. ยังลองใช้การประกาศเนมสเปซอย่างชัดเจน: xmlns: monitor = "clr-namespace: Models.Monitor; assembly = Models.Monitor"

ทั้งสองข้อข้างต้นไม่ได้ผล

ในที่สุดผมก็ให้ขึ้นและเป็นงานรอบย้าย UserControl ผมพยายามที่จะใช้ใน namespace อื่น: 'ModelsMonitor' ฉันสามารถเรียบเรียงได้ดีหลังจากนั้น


1

ในกรณีของฉันฉันมีเนมสเปซและคลาสที่สะกดเหมือนกันทุกประการตัวอย่างเช่นหนึ่งในเนมสเปซของฉันคือ

firstDepth.secondDepth.Fubar

ซึ่งมีคลาสของตัวเอง (เช่น firstDepth.secondDepth.Fubar.someclass)

แต่ฉันก็มีคลาส ' Fubar ' ในเนมสเปซด้วย

firstDepth.secondDepth

ซึ่งแก้ไขข้อความให้เหมือนกับเนมสเปซ Fubar ด้านบน

อย่าทำแบบนี้


1

ในกรณีของฉันปัญหาเกิดจากไฟล์ phantom บางไฟล์ภายใต้ไดเรกทอรี obj ของโครงการ ต่อไปนี้แก้ไขปัญหาให้ฉัน:

  • โครงการสะอาด
  • ออกจาก VS
  • rm -rf / obj / *
  • เรียกใช้ VS และสร้างใหม่

1

ฉันมีปัญหากับเรื่องนี้มากเช่นกัน! Intellisense ช่วยฉันกรอกเนมสเปซและทุกอย่าง แต่คอมไพเลอร์ร้องไห้ ฉันได้ลองทุกอย่างที่พบในกระทู้นี้และหัวข้ออื่น ๆ อย่างไรก็ตามในกรณีของฉันสิ่งที่ช่วยได้ในตอนท้ายคือการเขียนสิ่งนี้:

xmlns:util="clr-namespace:LiveSpielTool.Utils;assembly="

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


0

VB.NET ไม่เพิ่มข้อมูลเนมสเปซโดยอัตโนมัติตามโครงสร้างโฟลเดอร์เหมือนใน C # ฉันคิดว่าฉันกำลังทำแบบฝึกหัดเดียวกับคุณ (สอนตัวเอง WPF ใน 24 ชั่วโมง) และทำการแปลงเป็น VB เช่นเดียวกัน

ฉันพบว่าคุณต้องเพิ่มข้อมูล Namespace ด้วยตนเองในทั้ง XAML Class และรหัส XAML.VB ที่อยู่ด้านหลังเพื่อให้สามารถใช้ Namespaces ตามที่อธิบายไว้ในหนังสือได้ ถึงกระนั้น VB ก็ไม่ได้กำหนดเนมสเปซให้กับแอสเซมบลีโดยอัตโนมัติเหมือนกับที่ทำใน VB

มีบทความอื่นที่แสดงวิธีรวมสิ่งนี้ไว้ในเทมเพลตโครงการของคุณดังนั้นจึงสร้างข้อมูลเนมสเปซโดยอัตโนมัติ - เพิ่มเนมสเปซโดย อัตโนมัติเมื่อเพิ่มรายการใหม่


0

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


0

อีกสาเหตุหนึ่งที่เป็นไปได้: เหตุการณ์หลังการสร้างกำลังลบโครงการ DLL ออกจากโฟลเดอร์บิลด์

เพื่อชี้แจง: ผู้ออกแบบ WPF อาจรายงาน "ชื่อ XXX ไม่มีอยู่ในเนมสเปซ ... " แม้ว่าชื่อจะมีอยู่ในเนมสเปซและโปรเจ็กต์จะสร้างและทำงานได้ดีหากเหตุการณ์หลังการสร้างลบ DLL ของโปรเจ็กต์ออกจาก สร้างโฟลเดอร์ (bin \ Debug, bin \ Release ฯลฯ ) ฉันมีประสบการณ์ส่วนตัวเกี่ยวกับสิ่งนี้ใน Visual Studio 2015


0

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


คำตอบนี้มีให้อย่างน้อยสองครั้งข้างต้น
pdschuller

0

การเพิ่มกอง

Mine เป็นชื่อแอสเซมบลีของแอ็พพลิเคชัน WPF เป็นชื่อแอสเซมบลีเดียวกับ dll ที่อ้างอิง ดังนั้นตรวจสอบให้แน่ใจว่าคุณไม่มีชื่อแอสเซมบลีที่ซ้ำกันในโครงการของคุณ


0

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


0

ลองคลิกขวาที่โปรเจ็กต์ -> คุณสมบัติของคุณและเปลี่ยนเป้าหมายแพลตฟอร์มเป็น CPU ใดก็ได้และสร้างใหม่จากนั้นจะใช้งานได้ สิ่งนี้ได้ผลสำหรับฉัน


1
ข้อเสนอแนะของคุณเป็นการเปลี่ยนแปลงที่สำคัญซึ่งอาจไม่เป็นไปได้สำหรับ OP หากพวกเขากำหนดเป้าหมายไปที่สภาพแวดล้อมเฉพาะ ไม่ว่าจะด้วยวิธีใดก็ไม่น่าจะเป็นสาเหตุของปัญหาและหากสามารถแก้ปัญหาให้คุณได้ฉันขอแนะนำว่าปัญหาที่แท้จริงของคุณคือการกำหนดค่าโครงการที่ไม่ตรงกันซึ่งจะแสดงให้เห็นในหลาย ๆ วิธีสำหรับปัญหาที่แสดงที่นี่
LordWilmore

0

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

ฉันรู้สึกโง่เกี่ยวกับเรื่องนี้ แต่ในกรณีของฉันฉันขาดการควบคุมโดยผู้ใช้และมีข้อผิดพลาดทุกประเภทในคลาสที่เกี่ยวข้องด้วยเหตุนี้ ในขณะที่ฉันพยายามแก้ไขทั้งหมดฉันเริ่มต้นด้วยข้อผิดพลาดที่เป็นปัญหาโดยไม่ทราบว่า xaml ต้องอาศัยแอสเซมบลีที่สร้างขึ้นเพื่อค้นหาการอ้างอิงเหล่านี้ (ไม่เหมือนกับโค้ด c # / vb ซึ่งสามารถใช้งานได้ก่อนที่คุณจะสร้าง)


0

ฉันได้เพิ่มแอสเซมบลีเป็นโปรเจ็กต์ - ก่อนอื่นลบ ddl ที่เพิ่มโดยเฉพาะในการอ้างอิงถึง dll - นั่นทำมัน


0

ฉันได้รับปัญหานี้ตลอดเวลา มุมมองของฉันอยู่ในโปรเจ็กต์ WPF Custom Control Library (ตัวแปรบน Class Library) ฉันสามารถอ้างอิงแอสเซมบลีที่สร้างไว้ล่วงหน้า แต่ไม่สามารถอ้างอิงโค้ดใด ๆ ในโปรเจ็กต์อื่นของโซลูชันเดียวกันได้ ทันทีที่ฉันย้ายรหัสไปยังโปรเจ็กต์เดียวกับ xaml มันก็จำได้


0

ในกรณีของฉันปัญหานี้จะเกิดขึ้นเมื่อ architechture ของโปรแกรม wpf ไม่เหมือนกันทุกประการกับการพึ่งพา สมมติว่าคุณมีการอ้างอิงหนึ่งรายการนั่นคือ x64 และอีกอันคือ AnyCPU จากนั้นถ้าคุณเลือก x64 ประเภทใน AnyCPU dll จะ "ไม่มีอยู่" มิฉะนั้นประเภทใน x64 dll จะ "ไม่มีอยู่" คุณไม่สามารถปล่อยทั้งสองอย่างออกมาได้

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