Включение Intellisense для настраиваемых разделов в файлах .config

При редактировании файлов конфигурации .NET (app.config, web.config и т. Д.) В Visual Studio я использую intellisense Visual Studio, который будет направлять меня при выборе настроек приложения. Если я добавлю раздел пользовательской конфигурации, как я могу включить intellisense для своих пользовательских настроек? Я уверен, что на этот вопрос должен быть простой ответ, но беглый поиск в Google мне не помог.

Спасибо!


person Kevin Babcock    schedule 13.04.2009    source источник


Ответы (3)


Если вы не хотите изменять файлы Visual Studio или копировать что-либо в папку Visual Studio, вы можете добавить файл .xsd в свой проект, открыть файл .config и выбрать Схемы в Свойства (щелкните значок […]):

Снимок экрана Visual Studio, показывающий, где найти и изменить свойство Schemas вашего файла ‹code› .config ‹/code›»  ></p>
                        <div class= person Michael Stum    schedule 11.01.2010

comment
+1 Принятое решение кажется широко распространенным, но вам не следует этого делать, если изменения схемы не являются стандартными и полезными для всех проектов Visual Studio, которые могут быть созданы на вашем компьютере. (msdn.microsoft.com/en-us/library/ms255821.aspx) - person Paul; 05.02.2010

Как говорится в других ответах, вам необходимо предоставить документ схемы XML для вашего настраиваемого раздела конфигурации. Нет необходимости добавлять файл схемы .xsd в какой-либо глобальный каталог; вы можете ссылаться на него прямо из вашего пользовательского раздела в App.config файле:

<configuration>

  <!-- make the custom section known to .NET's configuration manager -->
  <configSections>
    <section name="customSection" type="..." />
  </configSections>

  <!-- your custom section -->
  <customSection xmlns="http://tempuri.org/customSection.xsd"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:noNamespaceSchemaLocation="customSection.xsd">
    ...
  </customSection>

<configuration>

Атрибут xmlns используется только для установки пространства имен по умолчанию, поэтому вам не нужно устанавливать его для вашего элемента customSection и всех его дочерних элементов. (Однако не помещайте атрибут xmlns в элемент <configuration>!)

customSection.xsd содержит схему, которая будет использоваться IntelliSense, например:

<xs:schema id="customSectionSchema"
           targetNamespace="http://tempuri.org/customSection.xsd"
           elementFormDefault="qualified"
           xmlns="http://tempuri.org/customSection.xsd"
           xmlns:mstns="http://tempuri.org/customSection.xsd"
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="customSection">
    ...
  </xs:element>
</xs:schema>
person stakx - no longer contributing    schedule 09.01.2011
comment
Какой ТИП я должен указать в section.type? Я догадался и поместил туда xmlns, и он работает ... но я почти уверен, что это неправильно. - person Prisoner ZERO; 15.02.2011
comment
@Prisoner, вы должны указать здесь имя типа .NET (по крайней мере, с указанием сборки) à la "Namespace.Class, Assembly". Платформа создаст экземпляр этого типа и будет использовать его всякий раз, когда захочет проанализировать пользовательский раздел конфигурации. Выберите любой из нескольких предопределенных классов обработчиков разделов или любой настраиваемый класс, реализующий интерфейс IConfigurationSectionHandler. Для получения дополнительной информации введите в Google что-то вроде "App.config custom section handlers" или прочтите статью по этой теме, например this Статью Code Project, чтобы начать работу. - person stakx - no longer contributing; 28.04.2011
comment
Я знаю, что это немного поздно, но, похоже, это вызывает проблемы во время выполнения, когда Configuration Manager пытается прочитать раздел настраиваемой конфигурации и не может распознать атрибут xmlns:xsi. Вы знаете, что я могу сделать, чтобы это исправить? Спасибо - person Frank Fajardo; 29.09.2015
comment
@Frank: Я тоже заметил подобные проблемы. Вы поместили атрибут xmlns:xsi в элемент настраиваемого раздела или в элемент-предок (например, <configuration>)? Последнее, скорее всего, вызовет проблемы. - person stakx - no longer contributing; 29.09.2015
comment
@stakx, у меня был xmlns:xsi в элементе раздела, как в вашем примере. И у меня есть .xsd, включенный в мой проект. Кажется, сейчас он работает (чтение и Intellisense, и среда выполнения) после я удалил атрибуты xmlns:xsi и xsi:noNamespaceSchemaLocation и просто оставил атрибут xmlns. - person Frank Fajardo; 30.09.2015
comment
@Frank: Это странно. Я не знаю, что с этим, но рад слышать, что у вас все работает. Спасибо за комментарий по этому вопросу! - person stakx - no longer contributing; 30.09.2015

Вам необходимо создать XSD-файл для своих пользовательских настроек и скопировать его в каталог схемы вашей установки Visual Studio. Для 2005 года это:% ProgramFiles% \ Microsoft Visual Studio 8 \ XML \ Schemas

Вот некоторая информация по этому поводу. http://blogs.msdn.com/astebner/archive/2005/12/07/501466.aspx

person Jose Basilio    schedule 13.04.2009