ไม่ได้ประกาศองค์ประกอบการกำหนดค่า


87

ฉันกำลังทำงานบางอย่างใน Visual Studio 2012 Express Edition ฉันได้เพิ่มไฟล์ XML ของ App.config ดังนี้:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
</configuration>

สิ่งแรกที่เกิดขึ้นคือคำเตือนปรากฏขึ้นว่า "ไม่ได้ประกาศองค์ประกอบ" การกำหนดค่า "" ไม่มีใครรู้ว่าทำไมถึงเกิดขึ้น? ดูเหมือนว่าจะไม่สามารถประกาศองค์ประกอบภายในได้จนกว่าจะได้รับการแก้ไข

ขอบคุณ!

นี่คือ XML ทั้งหมด:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="Version" value="779" />
<add key="TimeOut" value="60000" />
<add key="LogFileName" value="Log.txt" />
<!-- your Developer Id with eBay -->
<add key="Environment.DevId" value="" />
<!-- your Application Id with eBay -->
<add key="Environment.AppId" value="" />
<!-- your Application Certificate with eBay -->
<add key="Environment.CertId" value="" />
<!-- API Server URL -->
<!-- For production site use: https://api.ebay.com/wsapi -->
<!-- For Sandbox use: https://api.sandbox.ebay.com/wsapi -->
<add key="Environment.ApiServerUrl" value="https://api.sandbox.ebay.com/wsapi" />
<!-- EPS Server URL -->
<!-- For production site use: https://api.ebay.com/ws/api.dll"/-->
<add key="Environment.EpsServerUrl" value="https://api.sandbox.ebay.com/ws/api.dll" />
<!-- eBay Signin URL -->
<!-- For production site use: https://signin.ebay.com/ws/eBayISAPI.dll?SignIn -->
<!-- https://signin.sandbox.ebay.com/ws/eBayISAPI.dll?SignIn -->
<add key="Environment.SignInUrl" value="https://signin.sandbox.ebay.com/ws/eBayISAPI.dll?SignIn" />
<!-- ViewItem URL -->
<!-- For production site use: http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&amp;item={0} -->
<add key="Environment.ViewItemUrl" value="http://cgi.sandbox.ebay.com/ws/eBayISAPI.dll?ViewItem&amp;item={0}" />
<!-- token is for both API server and EPS server -->
<add key="UserAccount.ApiToken" value="" />
<!-- eBay site ID -->
<add key="UserAccount.eBayUserSiteId" value="0" />
<add key="logexception" value="true"/>
<add key="logmessages" value="true"/>
<add key="logsdkmessages" value="true"/>
<add key="logsdk" value="true"/>
<add key="logfile" value="Log.txt"/>
<!-- Rule Name-->
<add key="RuName" value=""/>
<!-- Set this if you access eBay API server behind a proxy server-->
<add key="Proxy.Host" value =""/>
<add key="Proxy.Port" value =""/>
<!-- set proxy server username/password if necessary-->
<add key="Proxy.Username" value=""/>
<add key="Proxy.Password" value=""/>


4
คุณอาจต้องดูว่าไฟล์ DotNetConfig.xsd มีลักษณะอย่างไร สามารถพบได้ในบางแห่งเช่น C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ Xml \ Schemas
Adriaan Stander

ข้อผิดพลาดที่แน่นอนคืออะไรให้คำเตือนนี้? ด้วย full stack frame ได้ไหม
Simon Mourier

ใช้ได้กับ VS2012 Express edition ของฉัน
Martin Mulder

1
มันเป็นปัญหาที่รุนแรง ด้วยแอปพลิเคชันคอนโซลใหม่ล่าสุดให้เปิด App.config และองค์ประกอบ <configuration> ขีดเส้นใต้เป็นสีน้ำเงินพร้อมข้อผิดพลาด "ไม่ได้ประกาศองค์ประกอบ" configuration "" แต่คุณยังสามารถเพิ่มส่วน <appsettings> กับ การตั้งค่าในนั้นและอ้างอิงด้วยคลาส ConfigurationManager แต่เมื่อเพิ่ม appsettings และรายการ <add key ... intellisense จะไม่ปรากฏขึ้น เป็นปัญหาที่เกิดจากความรุนแรงที่ฉันต้องการข้อมูลเพิ่มเติมด้วยเหตุนี้ค่าหัว
seekerOfKnowledge

1
เลือกคำตอบผิด
JJS

คำตอบ:


23

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

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime 
             version="v4.0"sku=".NETFramework,
             Version=v4.5"/>
    </startup>
</configuration>

เป็นปัญหาที่เกิดขึ้นบนเว็บไซต์ MSDN แต่ดูเหมือนว่าจะไม่ได้รับการแก้ไขอย่างน่าพอใจ ดูลิงค์ด้านล่าง:

http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/18a1074f-668f-4fe3-a8d9-4440db797439



345

ไปที่เมนู XML (รายการเมนูบนสุดของสตูดิโอภาพ) เลือกสคีมาและค้นหาDotNetConfig.xsdแล้วเลือกใช้สคีมานี้

XML - Schemas

แก้ไข XML Schema

ปัญหาของคุณจะแก้ไขได้อย่างแน่นอน


6
นี่น่าจะเป็นคำตอบ เมื่อดูวันที่ที่คำตอบนี้ถูกโพสต์ (ส.ค. 58) ฉันไม่แน่ใจเหมือนกันว่ามีคำตอบนี้อยู่ในช่วงเวลาของคำถามหรือไม่ (ก.ย. 55) (หรือเปล่า)
เอียน

1
สิ่งนี้เพียงอย่างเดียวไม่ได้ผลสำหรับฉัน พิจารณาสิ่งนี้stackoverflow.com/questions/4355278/…
Matt

2
คำตอบนี้ช่วยแก้ปัญหาใน Visual Studio 2017 อย่างไรก็ตามฉันไม่เข้าใจว่าทำไม DotNetConfig.xsd ไม่ได้ใช้เป็นค่าเริ่มต้นเมื่อสร้างไฟล์. config
Gael

รามกฤษณะคุณดาคน! ทำงานได้อย่างสมบูรณ์แบบ แอปพลิเคชันยังคงรวบรวม แต่ข้อความเตือนที่น่ารำคาญหายไปแล้ว
puffgroovy

วิธีนี้ใช้งานได้ข้อมูลเพิ่มเติมเกี่ยวกับสิ่งนี้ที่ฉันสังเกตเห็นในโซลูชันของฉันสำหรับ. net เวอร์ชัน 4.5 สคีมา DotNetConfig.xsd ถูกเลือกโดยค่าเริ่มต้น แต่สำหรับ. net เวอร์ชัน 4.6 DotNetConfig.xsd จะต้องเลือกตามที่ @Ramakrishna แนะนำในคำตอบนี้ ขอบคุณ!
ZeeProgrammer

34
<configuration xmlns="schema URL">
   <!-- configuration settings -->
</configuration>

ทำการเปลี่ยนแปลงเช่นด้านบนและลอง


1
คำเตือนหายไปแล้ว ขอบคุณที่กรุณา ฉันต้องทำเครื่องหมายนี้เป็นคำตอบ
Eae

ดูเหมือนว่าตอนนี้องค์ประกอบภายในการกำหนดค่าจะไม่ถูกอ่านโดยสภาพแวดล้อมซึ่งเป็น Visual Studio 2012 Express Edition
Eae

@sepoto: ถ้าคุณลบเนมสเปซ xmlns แล้วมันจะเตือนอีกครั้ง
Ravindra Bagale

1
ฉันรวม App.config ไว้อย่างครบถ้วนในโพสต์ของฉัน ด้วยเหตุผลบางประการฉันไม่สามารถทำให้มันทำงานได้อย่างถูกต้องกับ Visual Studio 2012 Express C # Environment ฉันลองวิธีแก้ปัญหาของคุณข้างต้นแล้ว แต่ฉันก็ได้รับคำเตือนสำหรับองค์ประกอบภายในการกำหนดค่าดังนั้นสิ่งต่าง ๆ จึงกลายเป็นที่สงสัย ฉันขอขอบคุณสำหรับความช่วยเหลือของคุณอย่างมาก แต่ฉันไม่เชื่อว่าจะมีคำตอบ
Eae

1
คำตอบนี้ถูกต้องบางส่วน: การระบุ xmlns (ค่าอาจเป็นอะไรก็ได้) คำเตือนสำหรับการconfigurationหายไป แต่จะมีการออกข้อความข้อมูลสำหรับconfigurationและสำหรับทุกองค์ประกอบย่อย หาก xmlns ชี้ไปที่ DTD จริงที่กำหนดองค์ประกอบทั้งหมดข้อความเหล่านั้นก็ควรหายไปเช่นกัน
Mike C

6

ฉันต้อง -> ไปที่เมนู XML (รายการเมนูบนสุดของสตูดิโอภาพ) เลือกสคีมาและเลือก DotNetConfig.xsd และ RazorCustomSchema.xsd และ EntityFrameworkConfig_6_1_0.xsd


1

ฉันเพิ่งมีป๊อปอัปคำเตือนนี้ภายในไฟล์ xml ที่สร้างขึ้นโดยอัตโนมัติในขณะที่ทำงานกับโปรเจ็กต์ xaml

การใช้ Debug-> Clean Solution และ Debug-> Rebuild Solution ได้รับการแก้ไข อาจต้องการลองก่อนที่จะจินตนาการกับสคีมา


0

Visual Studio 2013 Express Edition ไม่มี DotNetConfig.xsd ( https://connect.microsoft.com/VisualStudio/feedback/details/817322/dotnetconfig-xsd-files-not-present-in-vs-2013-express-for- เดสก์ท็อป )

ดังนั้นเพื่อกำจัดคำเตือนใน VS 2013 Express:

  • รับสำเนา DotNetConfig.xsd จากระบบอื่นหรือจากเว็บ (ฉันใช้https://gist.github.com/eed3si9n/5dd7dd98ad2b3f668928b23477de35a3 )
  • ดาวน์โหลดไปยัง C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Xml \ Schemas
  • เพิ่มสคีมาตามคำตอบของรามกฤษณะ

คำเตือนควรจะหมดไป


0

เลือกใช้สคีมานี้ DotNetConfig.xsd

XLM Menu ..... Visual Studio

ทำงานได้อย่างสมบูรณ์


โปรดใส่คำอธิบายว่าโค้ดของคุณแก้ไขข้อบกพร่องได้อย่างไรแทนที่จะเป็นเพียงโค้ดจำนวนมาก - stackoverflow.com/help/how-to-answer
Dov Benyomin Sohacheski

0

ฉันมีพื้นที่ในไดรฟ์น้อยลงซึ่งอาจส่งผลให้การโหลดโซลูชันแอปพลิเคชันของฉันไม่สมบูรณ์ ปัญหา "the-configuration-element-is-not-ประกาศ" นี้ได้รับการแก้ไขแล้วหลังจากที่ฉันสร้างพื้นที่ว่างบนไดรฟ์ของฉัน


0

ฉันก็ได้รับคำเตือนเหมือนกัน หลังจากคิดอยู่พักหนึ่งฉันก็พบข้อผิดพลาดในการทำงานกับ SQL (MS SQL)

Warning: the 'configuration' element is not declared

ใช้ C #

App.Config รหัส:

<connectionStrings>
    <add name="dbx" connectionString="Data Source=ServerNameHere;Initial Catalog=DatabaseNameHere;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>

* สิ่งนี้เรียกชื่อฐานข้อมูลใน connectionStrings เมื่อฉันเสียบรหัส SQL ของฉันฉันมักจะใช้ชื่อฐานข้อมูลสคีมาตามด้วยตาราง วิธีปฏิบัตินี้ไม่สามารถทำได้ดีใน Visual Studio เนื่องจากฉันเป็นมือใหม่ ฉันลบชื่อ db ออกจากไวยากรณ์ SQL ของฉันและเรียกจากสคีมาตารางข้อมูลเท่านั้น สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้

แบบฟอร์ม CS:

 using (SqlCommand cmd = new SqlCommand("SELECT * FROM [DatabaseName].[Schema].[TableName] WHERE [MEPeriod] = '2020-06-01'", con))

อัปเดตเป็น:

using (SqlCommand cmd = new SqlCommand("SELECT * FROM [Schema].[TableName] WHERE [MEPeriod] = '2020-06-01'", con))

สิ่งนี้ใช้ได้ผลสำหรับฉันฉันหวังว่านี่จะเป็นประโยชน์

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