Элемент конфигурации не объявлен


87

Я делаю некоторую работу в Visual Studio 2012 Express Edition. Я добавил XML-файл App.config следующим образом:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
</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
Адриан Стандер

Какая именно ошибка, что выдает это предупреждение? с полным стеком, пожалуйста?
Саймон Мурье

Он работает с моей версией VS2012 Express.
Мартин Малдер

1
Это проблема intellisense. В новом консольном приложении откройте App.config, и элемент <configuration> подчеркнут синим цветом с ошибкой «Элемент 'configuration' не объявлен», однако вы все равно можете добавить раздел <appsettings> с вашим settings в нем и ссылаться на них с помощью класса ConfigurationManager, но при добавлении элементов appsettings и <add key ... intellisense не отображается. Чисто проблема 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



344

Перейдите в меню XML (пункт верхнего меню Visual Studio), выберите схемы, найдите DotNetConfig.xsd и выберите Использовать эту схему .

XML - схемы

Изменить схему XML

Ваша проблема обязательно решится


6
Это должен быть ответ. Глядя на дату публикации этого ответа (август 2015 г.), я не совсем уверен, существовал ли этот ответ на момент вопроса (сентябрь 2012 г.). (Сделал это?)
Ян

1
Одно это не сработало для меня. Подумайте об этом: stackoverflow.com/questions/4355278/…
Мэтт

2
Этот ответ решил проблему в Visual Studio 2017. В любом случае, я не понимаю, почему DotNetConfig.xsd не используется по умолчанию при создании файла .config.
Gael

Рамакришна, ты чувак! Работает отлично. Приложение все еще компилируется, но больше не надоедливое предупреждающее сообщение.
puffgroovy 07

Это работает, дополнительная информация об этом, которую я заметил в своем решении, предназначена для .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: если u удаляет пространство имен xmlns, он снова дает предупреждение
Равиндра Багале

1
Я полностью включил App.config в свой пост. По какой-то причине мне не удалось заставить его правильно работать со средой Visual Studio 2012 Express C #. Я попробовал ваше решение выше, однако затем я получил предупреждения для элементов внутри конфигурации, поэтому все стало спорным. Я очень ценю вашу помощь, но я не думаю, что еще есть ответ.
Eae

1
Этот ответ частично верен: при указании xmlns (значение может быть любым) предупреждение для configurationисчезает, но информационное сообщение выдается configurationдля каждого подэлемента. Если xmlns указывает на фактическое DTD, определяющее все элементы, эти сообщения также должны исчезнуть.
Mike C

6

Мне пришлось -> Перейти в меню XML (пункт верхнего меню Visual Studio), выбрать схемы и выбрать 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

На моем диске было меньше места, что могло привести к неполной загрузке моего прикладного решения. Эта проблема «элемент-конфигурации-не-объявлен» была решена после того, как я освободил место на моем диске.


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 и вызвал его только из схемы, таблицы данных. Это решило проблему для меня.

Form.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))

Это сработало для меня, я надеюсь, что это окажется полезным.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.