Phần tử cấu hình không được khai báo


85

Tôi đang thực hiện một số công việc trong Visual Studio 2012 Express Edition. Tôi đã thêm tệp XML App.config như sau:

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

Điều đầu tiên xảy ra là một cảnh báo xuất hiện cho biết "Phần tử 'cấu hình' không được khai báo". Có ai biết tại sao điều này xảy ra? Có vẻ như các phần tử không thể được khai báo bên trong cho đến khi điều này được giải quyết.

Cảm ơn!

Đây là toàn bộ 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
Bạn có thể phải xem tệp DotNetConfig.xsd trông như thế nào. có thể được tìm thấy trong nơi nào đó như C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ Xml \ Schemas
Adriaan Stander

Lỗi chính xác là gì, điều gì đưa ra cảnh báo này? với một khung ngăn xếp đầy đủ xin vui lòng?
Simon Mourier

Nó hoạt động trên phiên bản VS2012 Express của tôi.
Martin Mulder

1
Đó là một vấn đề phức tạp. Với một ứng dụng bảng điều khiển hoàn toàn mới, hãy mở App.config và phần tử <configuration> được gạch chân màu xanh lam với lỗi "Phần tử 'cấu hình' không được khai báo", tuy nhiên, bạn vẫn có thể thêm phần <appsettings> với cài đặt trong đó và tham chiếu chúng với lớp ConfigurationManager, nhưng khi thêm các thiết lập ứng dụng và các mục <add key ..., intellisense không hiển thị. Hoàn toàn là một vấn đề phức tạp mà tôi muốn biết thêm thông tin, do đó, tiền thưởng.
seekerOfKnowledge

1
chọn câu trả lời sai.
JJS

Câu trả lời:


22

Tôi gặp vấn đề tương tự. Nó không phải là một lỗi, nó chỉ đơn giản là một cảnh báo; vì vậy ứng dụng của bạn vẫn nên biên dịch. Tôi đã sử dụng tệp cấu hình đơn giản sau và cảnh báo vẫn được tạo.

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

Đây là một vấn đề đã được nêu ra trên trang web của MSDN, nhưng nó dường như không được giải quyết một cách thỏa đáng. Xem liên kết bên dưới:

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



340

Chuyển đến menu XML (mục menu trên cùng của studio trực quan) chọn các lược đồ và tìm cho DotNetConfig.xsd và chọn Sử dụng lược đồ này .

XML - Các lược đồ

Chỉnh sửa lược đồ XML

Vấn đề của bạn chắc chắn sẽ được giải quyết


6
Đây nên là câu trả lời. Nhìn vào ngày câu trả lời này được đăng (15 tháng 8), tôi không quá chắc chắn liệu câu trả lời này có tồn tại vào thời điểm câu hỏi (tháng 9 '12) hay không. (Đã làm chưa?)
Ian

1
Điều này một mình đã không làm việc cho tôi. Xem xét việc này: stackoverflow.com/questions/4355278/...
Matt

2
Câu trả lời này đã giải quyết vấn đề trên Visual Studio 2017. Dù sao, tôi không hiểu tại sao DotNetConfig.xsd không được sử dụng theo mặc định khi tệp .config được tạo.
Gael

Ramakrishna bạn da man! Hoạt động hoàn hảo. Ứng dụng vẫn biên dịch nhưng thông báo cảnh báo phiền phức hiện đã biến mất.
puffgroovy

Điều này hoạt động, thông tin thêm về điều này mà tôi nhận thấy trong giải pháp của mình là đối với .net phiên bản 4.5, lược đồ DotNetConfig.xsd được chọn theo mặc định nhưng đối với .net phiên bản 4.6 DotNetConfig.xsd cần được chọn như @Ramakrishna được đề xuất trong câu trả lời này. Cảm ơn!
ZeeProgrammer

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

thực hiện các thay đổi, như ở trên và thử


1
Cảnh báo đã biến mất. Cám ơn sự tử tế của anh. Tôi phải đánh dấu đây là câu trả lời.
Eae

Có vẻ như bây giờ các phần tử bên trong cấu hình không được đọc bởi môi trường Visual Studio 2012 Express Edition.
Eae

@sepoto: nếu bạn xóa không gian tên xmlns thì nó lại đưa ra cảnh báo
Ravindra Bagale

1
Tôi đã bao gồm toàn bộ App.config trong bài đăng của mình. Vì một số lý do, tôi không thể làm cho nó hoạt động bình thường với Visual Studio 2012 Express C # Environment. Tôi đã thử giải pháp của bạn ở trên nhưng sau đó tôi nhận được cảnh báo cho các yếu tố bên trong cấu hình nên mọi thứ trở nên tranh luận. Tôi đánh giá cao sự giúp đỡ của bạn nhưng tôi không tin rằng có một câu trả lời được nêu ra.
Eae

1
Câu trả lời này đúng một phần: chỉ định một xmlns (giá trị có thể là bất kỳ giá trị nào), cảnh báo cho configurationbiến mất, nhưng một thông báo thông tin được đưa ra cho configurationvà cho mọi thành phần con. Nếu xmlns trỏ đến một DTD thực tế xác định tất cả các phần tử, thì những thông báo đó cũng sẽ biến mất.
Mike C

6

Tôi phải -> Chuyển đến menu XML (mục menu trên cùng của studio trực quan) chọn lược đồ và chọn DotNetConfig.xsd VÀ RazorCustomSchema.xsd VÀ EntityFrameworkConfig_6_1_0.xsd


1

Tôi vừa có cửa sổ bật lên cảnh báo này bên trong tệp xml được tạo tự động khi làm việc trên một dự án xaml.

Sử dụng Debug-> Clean Solution và Debug-> Rebuild Solution đã sửa nó. Có thể muốn thử điều đó trước khi thích thú với các lược đồ.


0

Visual Studio 2013 Express Edition thiếu DotNetConfig.xsd ( https://connect.microsoft.com/VisualStudio/feedback/details/817322/dotnetconfig-xsd-files-not-present-in-vs-2013-express-for- máy tính để bàn ).

Vì vậy, để loại bỏ cảnh báo trong VS 2013 Express:

Cảnh báo sẽ biến mất.



0

Tôi có ít dung lượng hơn trên ổ đĩa của mình, điều này có thể dẫn đến việc tải giải pháp ứng dụng của tôi không đầy đủ. Vấn đề "the-configuration-element-is-not-khai báo" này đã được giải quyết sau khi tôi tạo một số dung lượng trên ổ đĩa của mình.


0

Tôi cũng nhận được cảnh báo tương tự. Sau một thời gian suy nghĩ, tôi nhận ra lỗi của mình khi làm việc với SQL (MS SQL).

Warning: the 'configuration' element is not declared

Sử dụng C #

Mã App.Config:

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

* điều này gọi ra tên cơ sở dữ liệu trong các chuỗi kết nối, khi tôi cắm mã SQL của mình như một thông lệ, tôi luôn sử dụng tên cơ sở dữ liệu, lược đồ, sau đó là bảng. Thực hành này không được thực hiện tốt trong Visual Studio vì tôi là người mới bắt đầu. Tôi đã xóa tên db khỏi cú pháp SQL của mình và chỉ được gọi từ lược đồ, bảng dữ liệu. Điều này giải quyết vấn đề cho tôi.

Biểu mẫu.CS:

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

Đã cập nhật thành:

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

Điều này đã làm việc cho tôi, tôi hy vọng điều này được tìm thấy là hữu ích.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.