ข้อผิดพลาดเวลาออกแบบแบบฟอร์ม Windows

ฉันใช้ Visual Studio 2008 และฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้เมื่อพยายามเปิดแบบฟอร์มใดแบบฟอร์มหนึ่ง:

ไม่พบองค์ประกอบปลายทางที่มีชื่อ 'WSHttpBinding_ICommon' และสัญญา 'CommonWCF.ICommon' ในส่วนการกำหนดค่าไคลเอนต์ ServiceModel อาจเป็นเพราะไม่พบไฟล์การกำหนดค่าสำหรับแอปพลิเคชันของคุณ หรือเนื่องจากไม่พบองค์ประกอบปลายทางที่ตรงกับชื่อนี้ในองค์ประกอบไคลเอนต์

และการติดตามสแต็กต่อไปนี้

ที่ System.ComponentModel.ReflectPropertyDescriptor.SetValue (ส่วนประกอบของวัตถุ ค่าวัตถุ) ที่ System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializePropertyAssignStatement (ผู้จัดการ IDesignerSerializationManager คำสั่ง CodeAssignStatement, CodePropertyReferenceExpression propertyReferenceEx, Boolean reportError) ที่ System.ComponentModel.Design.Serialization รหัสDomSerializerBase .DeserializeAssignStatement (ผู้จัดการ IDesignerSerializationManager, คำสั่ง CodeAssignStatement) ที่ System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement (ผู้จัดการ IDesignerSerializationManager, คำสั่ง CodeStatement)

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

ข้อเสนอแนะ / วิธีแก้ปัญหาใด ๆ ? นี่เป็นข้อบกพร่องของ Visual Studio 2008 หรือไม่


person ptutt    schedule 12.01.2009    source แหล่งที่มา


คำตอบ (4)


คุณใช้จุดสิ้นสุดที่ไหน คุณต้องการมันจริงๆ หรือคุณสามารถเรียกใช้มันได้เฉพาะระหว่างรันไทม์เท่านั้น? คุณสามารถใช้คุณสมบัติ Component.DesignMode เพื่อตรวจสอบว่าคุณอยู่ในโหมดการออกแบบหรือไม่ เพื่อให้คุณสามารถป้องกันการเรียกไปยังปลายทางได้ หากต้องการดีบักประสบการณ์การออกแบบของคุณอย่างสมบูรณ์ ให้ทำตามคำแนะนำใน นี่< /ก>บทความ

person olle    schedule 13.01.2009
comment
ฉลาดหลักแหลม. สิ่งนี้ช่วยในการค้นหารหัสที่ทำให้เกิดปัญหา ดูเหมือนว่าการควบคุมการย้ายและการเพิ่มคอลัมน์กริดเป็นปัญหาแยกต่างหากใช่ไหม - person ptutt; 13.01.2009

มีอีกวิธีหนึ่งในการดีบักกระบวนการ devenv (visual studio) ในเวลาออกแบบ ดังที่ระบุไว้ ที่นี่< /ก>

สิ่งนี้ช่วยได้เมื่อเปิดแบบฟอร์มในโหมดการออกแบบทำให้เกิดข้อยกเว้น (เช่น แสดงข้อผิดพลาดต่อผู้ใช้)

นี่คือบทสรุปจากบทความนั้น:

  1. เปิดอินสแตนซ์ Visual Studio ใหม่
  2. เปิดไฟล์ต้นฉบับใด ๆ สิ่งนี้จำเป็นเพื่อให้ Visual Studio ช่วยให้คุณสามารถแนบกับกระบวนการได้
  3. แนบอินสแตนซ์ Visual Studio ใหม่เข้ากับอินสแตนซ์แรก กระบวนการ Visual Studio เรียกว่า devenv.exe คุณจะต้องแนบไปกับโค้ดที่ได้รับการจัดการเท่านั้น
  4. ตั้งค่า Visual Studio ให้ทำลายข้อยกเว้นรันไทม์ภาษาทั่วไป - โยนและจัดการโดยผู้ใช้ ปิดแบบฟอร์มที่มีปัญหา และเปิดใหม่อีกครั้ง

สิ่งนี้จะส่งผลให้เกิดข้อยกเว้นในโค้ดของคุณในอินสแตนซ์ที่สองของ Visual Studio!

person veljkoz    schedule 25.01.2010
comment
นี่ควรจะตะโกนจากหลังคา! ในสถานการณ์นี้ นี่เป็นเส้นทางที่เร็วและตรงที่สุดที่ฉันเคยเจอในการค้นหาตำแหน่งที่แม่นยำของข้อผิดพลาด - person Mark Meuer; 17.02.2015
comment
สุดยอด! สำหรับผู้ที่ค้นหารายการเมนูที่กล่าวถึง: สำหรับการแนบกับกระบวนการ devenv.exe จากอินสแตนซ์ VisualStudio ที่สองของคุณ มันคือ Debug -> แนบกับกระบวนการ...; สำหรับการตั้งค่าข้อยกเว้น CLR ของคุณคือ (VS2017) Debug - & gt; Windows - & gt; การตั้งค่าข้อยกเว้น - person Jinlye; 02.05.2019

ฉันใช้

        if (LicenseManager.UsageMode == LicenseUsageMode.Designtime)
        {
            return;
        }

เพื่อตรวจสอบโหมดการออกแบบใน Constructor ทั้งสองว่าได้ทำสิ่งอื่นนอกเหนือจาก InitializeComponent() และวิธีการโหลดหากมีหรือไม่

person Community    schedule 14.07.2009

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

น่าเสียดายที่ Component.DesignMode ไม่ได้รับการตั้งค่าจนกว่าตัวสร้างจะเสร็จสิ้น!

person Joshua    schedule 13.01.2009