Как сделать расширение xsd для схемы web / app.config? - PullRequest
19 голосов
/ 14 июля 2009

Как мне создать схему для пользовательских разделов конфигурации? Я попытался сделать один, но когда я использовал его, он сказал, что единственным ожидаемым элементом было то, что я имел в этой схеме, и пожаловался на стандартный материал web.config, хотя я все еще использовал обычный файл DotNetConfig.xsd. 1001 *

Ответы [ 3 ]

36 голосов
/ 02 ноября 2011

Этот вопрос, который я нашел, не является дубликатом, но решение решит вашу проблему:

Как исправить ошибку: «Не удалось найти информацию о схеме для атрибута / элемента» путем создания схемы

Хитрость заключается в том, чтобы получить «Свойства» редактора app.config и установить значение Schemas:

  • Щелкните правой кнопкой мыши -> Свойства в любом месте редактора файлов XML или просто нажмите F4 , пока он находится в фокусе
  • В этом диалоговом окне добавьте локальную или абсолютную ссылку на файл схемы

Окно / гаджет свойств моего файла app.config выглядит следующим образом:

Properties dialog in Visual Studio for the app.config file

Вот пример, который я только заработал (я играю с Ninject и NLog). Элементы и атрибуты в разделе nlog правильно отображаются в Intellisense, и я получаю волнистые линии, если нарушаю схему.

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
  </configSections>
  <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <targets>
      <target name="eventLog" xsi:type="EventLog" log="Application"
              category="TestService" />
      <target name="file" xsi:type="File"
              layout="${longdate}|${stacktrace}|${message}"
              fileName="${logger}.txt" />
    </targets>
    <rules>
      <logger name="*" minlevel="Info" writeTo="eventLog" />
      <logger name="*" minlevel="Debug" writeTo="file"/>
    </rules>
  </nlog>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
  </startup>
</configuration>

Мой файл схемы находится в корне моего проекта, рядом с app.config, и называется NLog.xsd. Я просто сохранил его отсюда:

0 голосов
/ 11 апреля 2016

Может быть, это просто моя среда или что-то изменилось в .NET 4.6 (не уверен).

Чтобы заставить intellisense работать с вновь созданным файлом app.config ...

Шаг 1. Добавьте новый элемент App.Config в ваше решение.
Это будет выглядеть так, обратите внимание на ошибки intellisense:

AppConfigs

Шаг 2: Нажмите F4 в редакторе, чтобы отобразить страницу свойств документа XML:

Мои значения по умолчанию показывали это:

Properties

Шаг 3: Щелкните по эллипсу в правом верхнем углу свойства схемы выше ...

Проверьте DonNetConfig.xsd, закройте окно и начните вводить

Intellisense

Больше нет ошибок и работает intellisense ...

0 голосов
/ 14 июля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...