Как устранить Не удалось найти информацию о схеме для элемента/атрибута ‹xxx›?

В Visual Studio у меня есть проект asp.net 3.5, в котором используются блоки приложений MS Enterprise Library 4.0.

Когда у меня открыт файл веб-конфигурации, мой список ошибок заполняется 99 сообщениями с такими вещами, как

Could not find schema information for the element 'dataConfiguration'.  
Could not find schema information for the attribute 'defaultDatabase'.  
Could not find schema information for the element 'loggingConfiguration'.   
Could not find schema information for the attribute 'tracingEnabled'.   
Could not find schema information for the attribute 'defaultCategory'.  

Если я закрываю файл Web.config, они исчезают (но возвращаются, как только мне нужно снова открыть файл).

Посмотрев немного, я обнаружил, что это связано с тем, что отсутствует файл XSD или схемы, который необходим Visual Studio для правильного «понимания» схемы, которая находится в файле web.config, и обеспечения для нее IntelliSense.

Кто-нибудь знает, как предоставить VS соответствующую информацию о схеме или отключить эти сообщения?

@Franci - Спасибо за информацию, я пробовал этот инструмент, а также оснастку MMC (они имеют тенденцию разрушать форматирование в Web.config), но они все еще не устраняют раздражающие предупреждения, которые я получаю. Спасибо за попытку.


person StingyJack    schedule 07.10.2008    source источник
comment
Эй, извини, что не смог тебе помочь. Если вы хотите, чтобы я удалил свой ответ, чтобы ваш вопрос отображался как оставшийся без ответа, оставьте комментарий к ответу, чтобы я мог увидеть его в следующий раз, когда войду в систему.   -  person Franci Penov    schedule 09.10.2008
comment
Я решил это, просто перезапустив визуальную студию.   -  person Saad Farooq    schedule 14.09.2016


Ответы (6)


Я настроил app.config с помощью инструмента настройки EntLib и настроил свой блок LoggingConfiguration. Затем я скопировал это в файл DotNetConfig.xsd. Конечно, он не охватывает все атрибуты, а только те, которые я добавил, но больше не отображает эти надоедливые информационные сообщения.

<xs:element name="loggingConfiguration">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="listeners">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" name="add">
              <xs:complexType>
                <xs:attribute name="fileName" type="xs:string" use="required" />
                <xs:attribute name="footer" type="xs:string" use="required" />
                <xs:attribute name="formatter" type="xs:string" use="required" />
                <xs:attribute name="header" type="xs:string" use="required" />
                <xs:attribute name="rollFileExistsBehavior" type="xs:string" use="required" />
                <xs:attribute name="rollInterval" type="xs:string" use="required" />
                <xs:attribute name="rollSizeKB" type="xs:unsignedByte" use="required" />
                <xs:attribute name="timeStampPattern" type="xs:string" use="required" />
                <xs:attribute name="listenerDataType" type="xs:string" use="required" />
                <xs:attribute name="traceOutputOptions" type="xs:string" use="required" />
                <xs:attribute name="filter" type="xs:string" use="required" />
                <xs:attribute name="type" type="xs:string" use="required" />
                <xs:attribute name="name" type="xs:string" use="required" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="formatters">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="add">
              <xs:complexType>
                <xs:attribute name="template" type="xs:string" use="required" />
                <xs:attribute name="type" type="xs:string" use="required" />
                <xs:attribute name="name" type="xs:string" use="required" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="logFilters">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="add">
              <xs:complexType>
                <xs:attribute name="enabled" type="xs:boolean" use="required" />
                <xs:attribute name="type" type="xs:string" use="required" />
                <xs:attribute name="name" type="xs:string" use="required" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="categorySources">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" name="add">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="listeners">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="add">
                          <xs:complexType>
                            <xs:attribute name="name" type="xs:string" use="required" />
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="switchValue" type="xs:string" use="required" />
                <xs:attribute name="name" type="xs:string" use="required" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="specialSources">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="allEvents">
              <xs:complexType>
                <xs:attribute name="switchValue" type="xs:string" use="required" />
                <xs:attribute name="name" type="xs:string" use="required" />
              </xs:complexType>
            </xs:element>
            <xs:element name="notProcessed">
              <xs:complexType>
                <xs:attribute name="switchValue" type="xs:string" use="required" />
                <xs:attribute name="name" type="xs:string" use="required" />
              </xs:complexType>
            </xs:element>
            <xs:element name="errors">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="listeners">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="add">
                          <xs:complexType>
                            <xs:attribute name="name" type="xs:string" use="required" />
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="switchValue" type="xs:string" use="required" />
                <xs:attribute name="name" type="xs:string" use="required" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="name" type="xs:string" use="required" />
    <xs:attribute name="tracingEnabled" type="xs:boolean" use="required" />
    <xs:attribute name="defaultCategory" type="xs:string" use="required" />
    <xs:attribute name="logWarningsWhenNoCategoriesMatch" type="xs:boolean" use="required" />
  </xs:complexType>
</xs:element>
person user57433    schedule 21.01.2009
comment
Это прекрасно работает!!! Спасибо за технику. Теперь я знаю, как сделать его для конфигурации удаленного взаимодействия. - person StingyJack; 21.01.2009
comment
Я изменил последовательность на все для 3-й строки, чтобы разделы могли появляться в любом порядке. - person StingyJack; 04.02.2009
comment
@ user57433 - Где находится инструмент настройки EntLib и файл DotNetConfig.xsd? - person Brian McCarthy; 15.03.2011
comment
Слишком много работы. Вы можете просто открыть свойства для app.config, щелкнуть переменную Path, а затем нажать кнопку с многоточием. Это вызывает диалоговое окно, в котором вы можете выбрать любую схему, которую хотите включить. - person DaveN59; 28.02.2012

Я создал новую схему на основе моего текущего app.config, чтобы сообщения исчезли. Я просто использовал кнопку в Visual Studio с надписью «Создать схему», и для меня была создана схема xsd.

Сохраните схему в подходящем месте и перейдите на вкладку «Свойства» в файле app.config, где есть свойство «Схемы». Если вы нажмете кнопку «Изменить», вы сможете выбрать использование как исходной схемы dotnetconfig, так и созданной вами собственной.

person user57433    schedule 21.01.2009
comment
В XSD вам, возможно, придется добавить minOccurs=0, чтобы вы не получали предупреждений о проверке при перемещении/удалении разделов, таких как ‹applicationSettings›‹Company.MyApplication.Settings.Properties› - person yzorg; 15.07.2011
comment
Просто хочу добавить, что к этому свойству схемы вы можете получить доступ только при редактировании файла xml (app.config), а не при просмотре обозревателя решений. - person Roman Pokrovskij; 08.09.2011
comment
Я создал схему xsd, как вы описали выше. Я помог мне избавиться от сообщений «Не удалось найти информацию о схеме для...», однако теперь я получаю предупреждение. Конфигурация глобального элемента уже объявлена. в приложении.xsd. Кто-нибудь знает, как это решить? - person George; 21.09.2011
comment
В Visual Studio 2010, чтобы найти кнопку «Создать схему», сначала откройте app.config, чтобы включить инструменты XML, а затем наведите указатель мыши на кнопки на панели инструментов. Если вы все еще не можете найти его, щелкните правой кнопкой мыши на панели инструментов и убедитесь, что выбран редактор XML. Вы также можете использовать меню XML..Создать схему. - person Contango; 30.03.2012
comment
Это относится и к web.config проекта ASP.NET MVC? Я добавил созданный файл xsd в схемы для моего web.config, но ошибки не исчезли. - person Giles Roberts; 24.04.2013

XSD входит в состав EntLib 5 и устанавливается в каталог схемы Visual Studio. В моем случае его можно найти по адресу:

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

КОНТЕКСТ

  • Визуальная студия 2010
  • Корпоративная библиотека 5

ДЕЙСТВИЯ ПО УДАЛЕНИЮ ПРЕДУПРЕЖДЕНИЙ

  1. откройте app.config в вашем проекте Visual Studio
  2. щелкните правой кнопкой мыши в редакторе XML-документов, выберите «Свойства».
  3. добавьте полный путь к EnterpriseLibrary.Configuration.xsd

В СТОРОНЕ

Стоит повторить, что эти сообщения списка ошибок (не удалось найти информацию о схеме для элемента) видны только при открытии файла app.config. Если вы закроете все документы и скомпилируете... никаких сообщений не будет.

person Pressacco    schedule 22.09.2011
comment
Супер простое решение. Это еще проще, если вы нажмете кнопку с многоточием справа от переменной пути после того, как откроете свойства - это вызовет диалоговое окно, в котором вы можете просто щелкнуть XML-схему, которую хотите включить... - person DaveN59; 28.02.2012

Вы пытались скопировать файл схемы в папку кэширования схемы XML для VS? Вы можете найти расположение этой папки, просмотрев VS Tools/Options/Test Editor/XML/Miscellaneous. К сожалению, я не знаю, где находится файл схемы для MS Enterprise Library 4.0.

Обновление: после установки MS Enterprise Library кажется, что нет файла .xsd. Однако есть инструмент для редактирования конфигурации — EntLibConfig.exe, который вы можете использовать для редактирования файлов конфигурации. Кроме того, если вы добавите правильные разделы конфигурации в свой файл конфигурации, VS сможет правильно проанализировать файл конфигурации. (EntLibConfig добавит их за вас, или вы можете добавить их самостоятельно). Вот пример раздела loggingConfiguration:

<configSections>
    <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>

Вам также необходимо добавить ссылку на соответствующую сборку в вашем проекте.

person Franci Penov    schedule 07.10.2008

Что исправило «Не удалось найти информацию о схеме для элемента ...» для меня, было

  • Открываю app.config.
  • Щелкните правой кнопкой мыши в окне редактора и выберите Properties.
  • В поле свойств есть строка с именем Schemas, я щелкнул эту строку и выбрал поле просмотра ..., которое появляется в строке.
  • Я просто установил флажок use для всех строк, в которых где-то был мой проект, а также для текущей версии .Net, которую я использовал. Например: DotNetConfig30.xsd.

После этого все стало работать нормально.

Как эти строки схемы с моим проектом остались непроверенными, я не уверен, но когда я убедился, что они проверены, я вернулся к делу.

person Wade Price    schedule 28.03.2015

Перейдите к этому: XSD-файлы NLog

Загрузите соответствующий xsd для вашего проекта и сохраните его вместе с NLog.config.

Первый мне помог.

person darkmatter    schedule 04.07.2014