Вопрос по xsd, .net, configuration – Как сделать расширение xsd для схемы web / app.config?

19

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

обновленный вопрос, чтобы сделать его не дубликатом Max Schmeling
Я действительно понимаю, что мог бы, вероятно, изменить файл DotNetConfig.xsd с помощью установщика, но я ищу способ, который не предполагает изменения файлов, уже находящихся в системе. Max Schmeling
Возможный дубликат:stackoverflow.com/questions/378105/… Fredrik Mörk

Ваш Ответ

3   ответа
0

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

To get intellisense to work with a newly created app.config file...

Step 1 : Add a new item App.Config to your solution.
Это будет выглядеть так, обратите внимание на ошибки intellisense:

AppConfigs

Step 2 : Press F4 in the editor to show the Properites page of the XML document:

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

Properties

Step 3: Click the elipse at far right of Schemas property above...

Check the DonNetConfig.xsd, close the window and start typing in

Intellisense

No more errors and intellisense works...

36

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

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

The trick is to get the "Properties" of the app.config editor, and set the Schemas value:

  • Right Click -> Properties anywhere in the XML file editor, or just hit F4 while it is in focus
  • In that dialog, add a local or absolute reference to a schema file

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

Properties dialog in Visual Studio for the app.config file

Вот пример Ijust начал работать (я играю с 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, Я просто сохранил это отсюда:

Работал как шарм. Спасибо за публикацию!
@ Макс Шмелинг Это должно быть помечено как правильный ответ!
Это все еще правильный ответ в VS2012
По какой-то причине это дало мне 98% пути. Хотя большинство предупреждений компилятора исчезло, я получил одно новое, сообщающее, что & quot; конфигурация & quot; элемент уже был определен. Посмотрев пример NLog.xsd выше, я понял, что у меня есть больше "материала" в моем XSD и однажды я урезал его, чтобы включить толькоmy schema а не вся схема конфигурационного файла, он начал работать как положено.
-1

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

Проверьте мой новый ответ. Я понял, что это работает (я думаю, что мы говорим об одном и том же здесь ...)

Похожие вопросы