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

Как получить 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> node и получать регистрацию, предлагаемую мне в раскрывающемся списке intellisense, а также соответствующие атрибуты для нее.

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

Если вы не хотите изменять свой 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 пространства имен, а вторая строка - местоположением схемы.