Подтвердить что ты не робот

Как создать расширение xsd для схемы web/app.config?

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

4b9b3361

Ответ 1

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

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

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

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

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

Properties dialog in Visual Studio for the app.config file

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

<?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. Я просто сохранил его отсюда:

Ответ 2

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

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

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

AppConfigs

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

Мои настройки по умолчанию показывали это:

Свойства

Шаг 3: Щелкните эллипс, расположенный справа от свойства Schemas выше...

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

Intellisense

Нет ошибок и работает intellisense...

Ответ 3

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