Как разрешить "Не удалось найти информацию о схеме для элемента/атрибута <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), но они до сих пор не разрешают раздражающие предупреждения, которые я получаю. Спасибо за попытку.

Ответ 1

Я настроил 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>

Ответ 2

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

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

Ответ 3

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

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

КОНТЕКСТ

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

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

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

ASIDE

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

Ответ 4

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

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

<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>

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

Ответ 5

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

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

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

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

Ответ 6

Перейдите к следующему: Файлы NLog xsd

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

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