Friday, July 30, 2010

Enable Intellisense for your custom config sections

Start by creating an XSD file that defines the format of the xml of your config section. You can easily do this in Visual Studio by opening an XML file and choosing XML –> Create Schema from the Toolbar menu.

Imagine we have the following custom configuration

   1:  <CustomSettings name="Something">
   2:    <ApplicationName>SomethingElse</ApplicationName>
   3:  </CustomSettings >

This will result in the following schema:


   1:  <?xml version="1.0" encoding="utf-8"?>
   2:  <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="">
   3:    <xs:element name="CustomSettings">
   4:      <xs:complexType>
   5:        <xs:sequence>
   6:          <xs:element name="ApplicationName" type="xs:string" />
   7:        </xs:sequence>
   8:        <xs:attribute name="name" type="xs:string" use="required" />
   9:      </xs:complexType>
  10:    </xs:element>
  11:  </xs:schema>
Now we cannot use this schema directly. What’s important is the schema definition. This should be the same as the default schema Visual Studio uses. This schema can be found in the DotNetConfig.xsd file, which is the same file you should add your XSD to. 
   1:  <xs:schema xmlns:xs="" xmlns:vs="" elementFormDefault="qualified" attributeFormDefault="unqualified" vs:helpNamespace="">
   2:    <xs:element name="CustomSettings">
   3:      <xs:complexType>
   4:        <xs:sequence>
   5:          <xs:element name="ApplicationName" type="xs:string" />
   6:        </xs:sequence>
   7:        <xs:attribute name="name" type="xs:string" use="required" />
   8:      </xs:complexType>
   9:    </xs:element>
  10:  </xs:schema>

As a last step you can either add the XSD in the DotNetConfig.xsd file, or put it in a seperate file and include that file in the DotNetConfig.xsd file by adding the following line right after the schema declaration in DotNetConfig.xsd.

   1:  <xs:include schemaLocation="CustomSettings.xsd"/>


Anonymous said...

Does not give very good detail on any of the steps.

Anonymous said...

Amazing! Simplicity is the key.

Thanks a LOT!