Как решить "Не удалось найти информацию о схеме для элемента / атрибута <xxx>"? - PullRequest
47 голосов
/ 07 октября 2008

В 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), но они все еще не разрешают раздражающие предупреждения, которые я получаю. Спасибо за попытку.

Ответы [ 6 ]

30 голосов
/ 21 января 2009

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

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

13 голосов
/ 22 сентября 2011

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

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

КОНТЕКСТ

  • Visual Studio 2010
  • Корпоративная библиотека 5

ШАГИ ДЛЯ УДАЛЕНИЯ ПРЕДУПРЕЖДЕНИЙ

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

ASIDE

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

11 голосов
/ 21 января 2009

Я настроил 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>
1 голос
/ 28 марта 2015

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

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

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

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

1 голос
/ 07 октября 2008

Вы пытались скопировать файл схемы в папку кэширования схемы 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>

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

0 голосов
/ 04 июля 2014

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

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

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

...