Как получить intellisense в app.config для пользовательского раздела?

В моем файле app.config есть специальный раздел, связанный с нашим классом контейнера IoC. Как я могу получить intellisense при редактировании файла конфигурации для этого раздела, а также избавиться от сообщений компилятора, информирующих меня об отсутствующей схеме.

Я нашел этот вопрос здесь: пользовательские настройки app.config configSections не могут найти информацию о схеме, но я не понимаю, относится ли это к моей проблеме или нет, и как использовать ответ там, если это так.

Я также нашел эту страницу Как получить Intellisense для Web.config и App.config в Visual Studio.NET, но там сказано удалить атрибут xmlns перед запуском приложения. Это действительно единственный / лучший способ?

Вот пример простого файла:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="ServiceContainers"
        type="LVK.IoC.RegistrationsSectionHandler, LVK"/>
  </configSections>
  <ServiceContainers>
    <Registration type="DatabaseConnection" class="DatabaseConnection">
      <Parameter name="connectionString" type="System.String"
          value="TYPE=MSSQL2000;SERVER=localhost;DATABASE=db"/>
    </Registration>
  </ServiceContainers>
</configuration>

В основном я хотел бы иметь возможность печатать <R внутри <ServiceContainers> узел, и получите регистрацию, предложенную мне в раскрывающемся списке intellisense, а также соответствующие атрибуты для него.

2 ответа

Решение

XML Intellisense не будет автоматически работать для пользовательского раздела конфигурации.

Visual Studio может сообщать о предупреждениях при компиляции, утверждая, что атрибуты раздела пользовательской конфигурации не определены. Эти предупреждения могут быть проигнорированы.

Если вам нужна поддержка XML IntelliSense для пользовательского раздела конфигурации (или если вы просто хотите, чтобы предупреждения "схема не найдена" исчезла), добавьте следующую строку в файл DotNetConfig.xsd сразу после первого строка (обычно это вторая строка в файле DotNetConfig.xsd).

<xs:include schemaLocation="YOUR_DIRECTORY\namespace.assemblyname.xsd"/>

Файл DotNetConfig.xsd находится в каталоге установки Visual Studio 8 (или 9) в подкаталоге Xml\Schemas.

Если вы не хотите изменять свой DotNetConfig.xsd, вы можете добавить конфигурацию xsd "inline".

В вашем случае добавьте следующие атрибуты в пользовательский раздел

<ServiceContainers xmlns="your_xmlns"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="your_xmlns location_of_your_schema">

         <Registration ....

</ServiceContainers>

Это полезно при локальном тестировании xsd, потому что location_of_your_schema может быть локальным путем, и когда вы готовы к производственному изменению location_of_your_schema на публичный URL-адрес файла xsd.

Обратите внимание, что атрибут xsi: schemaLocation должен содержать пары строк, разделенных пробелами, где первая строка в каждой паре является URI пространства имен, а вторая строка - местоположением схемы.

Другие вопросы по тегам