As the other answers say, you need to provide an XML Schema document for your custom configuration section. There's no need to add the .xsd
schema file to some global directory; you can reference it directly from your custom section in the App.config
file:
<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>
The xmlns
attribute is merely there to set a default namespace, so that you don't need to set it on your customSection
element and all of its child elements. (However, do not place the xmlns
attribute on the <configuration>
element!)
The customSection.xsd
contains the schema that will be used by IntelliSense, for example:
<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>
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…