Как получить intellisense в app.config для пользовательского раздела? - PullRequest
30 голосов
/ 18 декабря 2008

В моем файле 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 ]

21 голосов
/ 18 декабря 2008

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.

4 голосов
/ 10 сентября 2014

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

...