วิธีแก้ไขข้อผิดพลาด:“ ไม่สามารถค้นหาข้อมูลสคีมาสำหรับแอตทริบิวต์ / องค์ประกอบ” โดยการสร้างสคีมา


148

ฉันมีแอปพลิเคชันแบบฟอร์ม windows ที่เขียนใน VS2010 ด้วย C # และได้รับข้อผิดพลาดต่อไปนี้ในapp.configไฟล์:

Message 4   Could not find schema information for the attribute 'name'
Message 8   Could not find schema information for the attribute 'name'
Message 12  Could not find schema information for the attribute 'name'
Message 5   Could not find schema information for the attribute 'serializeAs'
Message 15  Could not find schema information for the element 'CCP_Utility.Settings1'
Message 2   Could not find schema information for the element 'CCP_Utility.Properties.Settings'
Message 3   Could not find schema information for the element 'setting'
Message 1   Could not find schema information for the element 'userSettings'
Message 6   Could not find schema information for the element 'value'

ฉันต้องแก้ไขอะไรในรหัสเพื่อแก้ไขปัญหานี้ ฉันจะแก้ไขสิ่งที่อยู่ในCCP_Utility.Settings1และได้CCP_Utility.Properties.Settingsอย่างไร

นี่คือapp.configรหัส:

<configuration>
<configSections>
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
        <section name="CCP_Utility.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        <section name="CCP_Utility.Settings1" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    </sectionGroup>
  </configSections>
<userSettings>
  <CCP_Utility.Properties.Settings>
    <setting name="SourceDir" serializeAs="String">
      <value />
    </setting>
    <setting name="TargetDir" serializeAs="String">
      <value />
    </setting>
    <setting name="CorpID" serializeAs="String">
      <value />
    </setting>
  </CCP_Utility.Properties.Settings>
    <CCP_Utility.Settings1>
        <setting name="sourceDir" serializeAs="String">
            <value />
        </setting>
        <setting name="targetDir" serializeAs="String">
            <value />
        </setting>
    </CCP_Utility.Settings1>

   </userSettings>
</configuration>

ลักษณะเช่นนี้ตกเป็นเหยื่อของคำถามนี้: stackoverflow.com/questions/179927/... ตรวจสอบคำตอบโดย @ user57433
rsbarro

@rsbarro เครื่องมือการกำหนดค่า EntLib และไฟล์ DotNetConfig.xsd อยู่ที่ไหน
Brian McCarthy

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

1
ขอบคุณ rsbarro! คำถามดั้งเดิมของ StingyJack ถูก จำกัด ไว้ที่ข้อผิดพลาดโดยใช้ส่วนการกำหนดค่าไลบรารีองค์กรไม่ใช่แค่ส่วนกำหนดค่าที่กำหนดเองเท่านั้น
Lisa

คำตอบ:


169

อัปเดตเมื่อกันยายน 2558
คำตอบนี้ยังคงได้รับการอัปเดตดังนั้นฉันจะออกจากที่นี่เพราะมันดูเหมือนจะเป็นประโยชน์กับบางคน แต่โปรดตรวจสอบคำตอบอื่น ๆ จาก@reexmonkeyและ@Pressaccoก่อน พวกเขาอาจให้ผลลัพธ์ที่ดีกว่า

คำตอบเดิม
ให้ภาพนี้:

  1. ใน Visual Studio ให้เปิดไฟล์ app.config หรือ web.config ของคุณ
  2. ไปที่เมนู "XML" และเลือก "สร้างสคีมา" การดำเนินการนี้ควรสร้างไฟล์ใหม่ชื่อ "app.xsd" หรือ "web.xsd"
  3. บันทึกไฟล์นั้นลงดิสก์ของคุณ
  4. กลับไปที่ app.config หรือ web.config ของคุณและในหน้าต่างแก้ไขคลิกขวาและเลือกคุณสมบัติ จากนั้นตรวจสอบให้แน่ใจว่ามีการอ้างอิง xsd ที่คุณเพิ่งสร้างขึ้นในคุณสมบัติ Schemas หากยังไม่มีให้เพิ่ม

ที่ควรทำให้ข้อความเหล่านั้นหายไป

ฉันบันทึก web.xsd ของฉันในรูทของเว็บโฟลเดอร์ (ซึ่งอาจไม่ใช่ตำแหน่งที่ดีที่สุดสำหรับมัน แต่เพื่อการสาธิตเท่านั้น) และคุณสมบัติ Schemas ของฉันมีลักษณะดังนี้:

"C: \ Program ไฟล์ (x86) \ Microsoft Visual Studio 10.0 \ xml \ Schemas \ DotNetConfig.xsd" "Web.xsd"


10
@rsbarro ขอบคุณคำตอบของคุณ! ทำไมคุณมีไฟล์ 2 xsd ฉันสร้างสคีมาและมีไฟล์เพียง 1 ไฟล์ - app.xsd ซึ่งฉันบันทึกไว้ในไดเรกทอรีราก ข้อผิดพลาดหายไป แต่ตอนนี้ฉันได้รับคำเตือน: "องค์ประกอบส่วนกลาง 'การกำหนดค่า' ได้รับการประกาศแล้ว" ความคิดเกี่ยวกับวิธีการแก้ไขปัญหานี้?
Brian McCarthy

2
เพียงใช้กล่องโต้ตอบคุณสมบัติเพื่อเลือกสคีมาของคุณหรือเพิ่มสคีมาอื่น เมื่อคุณดูแอพตั้งค่าให้คลิกขวาในหน้าต่างตัวแก้ไขและเลือกคุณสมบัติ คุณควรเห็น Schemas ในตัวควบคุมตัวแก้ไขคุณสมบัติที่ปรากฏขึ้น นอกจากนี้หากคุณคลิกปุ่ม "... " ใน Schemas จะช่วยให้คุณเลือกสกีมาที่คุณต้องการใช้สำหรับไฟล์ปรับแต่งของคุณโดยใช้ GUI ที่ดี
rsbarro

3
ขอบคุณ สิ่งนี้ใช้ได้ผล แต่มีสถานที่ที่ดีที่ฉันสามารถอ่านเพื่อทำความเข้าใจว่าทำไมจึงเกิดเหตุการณ์นี้ ดูเหมือนว่าฉันเพียงแค่ต้องการสร้าง schema สำหรับ web.config ของฉันทันทีหลังจากเพิ่มเนื้อหาจำนวนมากสำหรับ DotNetOpenAuth แล้วสร้างไฟล์ edmx อีกครั้งตั้งแต่เริ่มต้น มันสมเหตุสมผลแล้วใน "คุณเปลี่ยนหลายสิ่งหลายอย่าง เรียงลำดับของวิธี แต่มันจะมีประโยชน์ที่จะรู้ว่าทำไมไฟล์ web.config จะต้องมีสคีมาโดยธรรมชาติ
froggythefrog

6
เมื่อคุณสร้างไฟล์ Web.xsd ของคุณให้รวมเฉพาะสกีมาที่คุณเพิ่มในส่วนของเว็บ / app.config (ส่วนผู้ใช้) ยกเว้นอื่น ๆ ทั้งหมดที่อยู่ในสคีมาเริ่มต้นหรืออื่น ๆ . xsd รวมอยู่ด้วย
Pagotti

10
ไม่ไม่ไม่!! นี่ไม่ใช่ "วิธีแก้ปัญหา" เนื่องจากไม่ใช่ปัญหาจริง ดูและโหวตให้กับคำตอบของ @ pressacco คำตอบของ reexmonkey ก็ใช้ได้เช่นกัน ทำไมคำตอบนี้ถึงได้รับคะแนนโหวตในเชิงบวกมากมาย? 1. เพียงเพิกเฉย! ปิดแอปตั้งค่าหรือ web.config และคอมไพล์คุณจะไม่เห็นข้อความ 2. แม้ว่าไม่จำเป็นต้องแก้ปัญหาโดยคลิกขวาที่คุณสมบัติ. config แก้ไขพา ธ ไปยัง VS ที่ให้ XSD (คำตอบของ @ pressacco) 3. หรือ: เปลี่ยนการตั้งค่าโปรเจ็กต์รุ่น DotNet และย้อนกลับ ทำซ้ำสองครั้ง (คำตอบของ reexmonkey) อาจทำให้เกิดปัญหากับการอัพเดทแพ็คเกจ
pashute

217

วิธีที่เร็วและง่ายที่สุดในการแก้ปัญหา:

  1. คลิกขวาที่ไอคอนโครงการใน Solution Explorer แล้วเลือก "Properties"
  2. ไปที่แท็บ "แอปพลิเคชัน" และเลือก. NET Framework เป้าหมายก่อนหน้า
  3. บันทึกการเปลี่ยนแปลง.
  4. ไปที่แท็บ "Application" และเลือก. NET Framework เป้าหมายเริ่มต้น
  5. บันทึกการเปลี่ยนแปลง => แก้ไขปัญหาแล้ว!

11
หวาน! ทำงานให้ฉันใน VS2012
amo

4
ทำงานให้ฉันด้วย (VS2013 พรีเมี่ยม)
Remco

5
นี่อาจไม่ทำงานในการลองครั้งแรก ฉันต้องทำสองครั้งก่อนที่มันจะทำงานใน VS 2013 Express
H2ONaCl

24
ทำงานให้ฉันใน Visual Studio 2015 จะดีถ้ามีคนอธิบายได้ว่าทำไม
Jonathan Wood

6
ไม่ทำงานอัปเดต VS2015 2, .NET 4.5.2 ดูเหมือนว่าจะทำให้ข้อความหายไป แต่ถ้าคุณเปิดไฟล์ XML อีกครั้งข้อความก็จะกลับมา
Snoop

21

XSD มีอยู่ใน EntLib 5 และติดตั้งในไดเรกทอรี schema ของ Visual Studio ในกรณีของฉันมันสามารถพบได้ที่:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\EnterpriseLibrary.Configuration.xsd

บริบท

  • Visual Studio 2010
  • ห้องสมุดองค์กร 5

ขั้นตอนในการลบคำเตือน

  1. เปิดแอปตั้งค่าในโครงการ Visual Studio ของคุณ
  2. คลิกขวาในเครื่องมือแก้ไขเอกสาร XML เลือก "Properties"
  3. เพิ่มเส้นทางแบบเต็มไปยัง "EnterpriseLibrary.Configuration.xsd"

นอกเหนือ

เป็นมูลค่าการทำซ้ำว่า "รายการข้อผิดพลาด" "ข้อความ" ("ไม่สามารถหาข้อมูลสคีมาสำหรับองค์ประกอบ") นี้จะปรากฏเฉพาะเมื่อคุณเปิดไฟล์ app.config หากคุณ "ปิดเอกสารทั้งหมด" และรวบรวม ... จะไม่มีการรายงานข้อความใด ๆ


1
โดยเส้นทางที่มีคุณสมบัติครบถ้วนฉันหมายถึง: ใช้เส้นทางที่แน่นอน C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\EnterpriseLibrary.Configuration.xsdเช่น บนระบบปฏิบัติการ Windows เส้นทางสัมพัทธ์สามารถรวม. \ และ .. \ อักขระ
Pressacco

1
ขอบคุณสำหรับข้อมูลเกี่ยวกับการปิดไฟล์ XML เพื่อลบคำเตือน ) พฤติกรรมแปลก ๆ (
Machtyn

8
EnterpriseLibrary.Configuration.xsd หายไปใน Visual Studio 2015 หรือไม่
ลุค

3
เพียงแค่ปิดไฟล์ XML ทำให้ปัญหาหายไปสำหรับฉัน
Taegost

1
ขอบคุณ @Taegost นี่ก็ทำเพื่อฉันด้วย (ปัญหาของฉันพจนานุกรมกำหนดเองการวิเคราะห์รหัสภายใต้ VS2013 แตกต่างจากที่ระบุเล็กน้อย แต่มีอาการเหมือนกัน) ไม่มีอะไรอื่นที่ฉันพยายามทำงานและนี่ทำให้ฉันเป็นบ้า เมื่อฉันเปิดพจนานุกรมในเครื่องมือแก้ไขปรากฏว่าเครื่องมือวิเคราะห์รหัสไม่ได้ใช้งานเนื่องจากข้อผิดพลาดเหล่านี้!
sn00gan

1

ฉันพบว่ามีข้อผิดพลาดทางไวยากรณ์ในโมดูลที่เกี่ยวข้องและไม่ได้รวบรวม - คอมไพเลอร์ไม่ได้บอกฉันว่า เพิ่งให้ฉันข้อผิดพลาดเกี่ยวกับสิ่ง app.config VS2010 เมื่อฉันแก้ไขข้อผิดพลาดทางไวยากรณ์ทั้งหมดก็ดี


1

ข้อผิดพลาดนี้เกิดขึ้นเมื่อโครงการของคุณอ้างอิงสกีมาที่ล้าสมัย ใช้ Visual Studio เพื่อสร้างใหม่

ใน Visual Studio ให้ทำดังนี้

  1. เปิดของคุณapp.configหรือweb.configไฟล์
  2. ไปที่เมนูและเลือกXMLCreate Schema

สิ่งนี้จะทริกเกอร์app#.xsd(แอพ Windows) หรือweb#.xsdไฟล์ (เว็บไซต์) เพื่อสร้าง

  1. บันทึกไฟล์ xsd ที่สร้างขึ้นใหม่ไปยังรูทของโครงการ
    • เปิดของคุณApp.configหรือweb.configไฟล์คลิกขวาในโปรแกรมแก้ไขข้อความและเลือกคุณสมบัติและคลิกที่...ปุ่มติดกับค่าสำหรับ Schemas
    • เพิ่มไฟล์ xsd ที่สร้างขึ้นใหม่โดยใช้Addปุ่ม
    • คลิก OK

กระบวนการไม่สามารถค้นหาข้อมูลสคีมาสำหรับข้อผิดพลาดแอตทริบิวต์ / องค์ประกอบได้ในขณะนี้


1

ง่าย ๆ : ในตัวออกแบบรายงาน Studio Visual
1. เปิดรายงานในโหมดออกแบบและลบชุดข้อมูลจากไฟล์ RDLC
2. เปิดโซลูชัน Explorer และลบไฟล์ XSD จริง (เสียหาย)
3. เพิ่มชุดข้อมูลกลับไปที่ไฟล์ RDLC
4. ขั้นตอนข้างต้นจะสร้างไฟล์ XSD ใหม่
5. รายละเอียดเพิ่มเติมอยู่ด้านล่าง

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


0

เมื่อสิ่งนี้เกิดขึ้นกับฉัน (จากที่ไหนเลย) ฉันกำลังจะดำดิ่งลงไปในคำตอบด้านบนแล้วฉันคิดว่าฉันจะปิดโครงการปิด Visual Studio แล้วเปิดทุกอย่างอีกครั้ง แก้ไขปัญหา. VS บั๊ก?


overkill การปิดตัวแก้ไขไฟล์ App.config ภายใน VS ก็เพียงพอแล้ว ข้อผิดพลาด VS อาจจะ
Jirka Hanika

0

ฉันมีสิ่งนี้ใน VS 2012 ที่มีการเปลี่ยนแปลง "ชื่อส่วน" ในโครงการและฉันแก้ไขโดยการลบ "app.config" ในโครงการจากนั้นคลิกขวาที่โครงการใน "Explorer โซลูชัน" การเลือก " คุณสมบัติ "จากนั้น" การตั้งค่า "จากนั้นทำการเปลี่ยนแปลงการตั้งค่าการบันทึกและการสร้างใหม่ สิ่งนี้สร้าง app.config ใหม่ด้วยข้อมูลที่ถูกต้อง


0

ในกรณีของฉันฉันมีการอ้างอิงที่ไม่ชัดเจนในรหัสของฉัน ฉันเริ่มต้น Visual Studio ใหม่และสามารถเห็นข้อความแสดงข้อผิดพลาด เมื่อฉันแก้ไขข้อผิดพลาดอื่น ๆ ก็หายไป


-1

สิ่งที่ฉันเขียนส่วนใหญ่ได้รับการกล่าวถึงโดย Pressacco แล้ว แต่นี่เป็นข้อมูลเฉพาะของ SpecFlow

ฉันได้รับข้อความนี้สำหรับ<specFlow>องค์ประกอบและดังนั้นฉันจึงเพิ่มspecflow.xsdไฟล์ลงในโซลูชันคำตอบนี้ (ด้วยการแก้ไขบางอย่างเพื่ออนุญาตสำหรับ<plugins>องค์ประกอบ)

หลังจากนั้นฉัน (เช่น Pressacco) คลิกขวาภายในบัฟเฟอร์ไฟล์ของapp.configและคุณสมบัติที่เลือกและภายในSchemasฉันเพิ่ม"specflow.xsd"ไปยังจุดสิ้นสุด ความสมบูรณ์ของSchemasตอนนี้อ่าน:

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\xml\Schemas\1033\DotNetConfig.xsd" "C:\Program Files (x86)\Microsoft Visual Studio 12.0\xml\Schemas\EntityFrameworkConfig_6_1_0.xsd" "C:\Program Files (x86)\Microsoft Visual Studio 12.0\xml\Schemas\RazorCustomSchema.xsd" "specflow.xsd"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.