Ako pridať Intellisense pre vlastnú config section vo web.config

Každý, kto sa už niekedy stretol s nastavovaním custom config sections vo web.config-u, mi dá asi za pravdu, keď poviem, že konfigurovať takúto sekciu nemusí byť práve ľahké. Zvlášť preto, že nie vždy programátor vie, aké všetky elementy, prípadné atribúty, sú danou sekciou podporované a to už vôbec nehovorím o hodnotách atribútov. Tento problém je možné odstrániť využitím Intellisense, ktorý poskytuje Visual Studio.

Intellisense, ktorý je k dispozícii pri editácii web.config-u, je zobrazovaný na základe xsd schém, ktoré definujú štruktúru jednotlivých elementov ako aj súboru ako takého. Ak teda chceme rozšíriť Intellisense Visual Studia pri editácií web.config-u, stačí rozšíriť existujúce schémy. Jeden zo spôsobov, ako to spraviť, spočíva v tom, že si vytvoríme xsd súbor, ktorý bude definovať schému pre zvolenú config section.

<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  
<xsd:element name="system.mapservice">
    
<xsd:complexType>
      
<xsd:sequence>
        
<xsd:element name="themes">
          
<xsd:complexType>
            
<xsd:sequence>
              
<xsd:element maxOccurs="unbounded" name="add">
                
<xsd:complexType>
                  
<xsd:attribute name="key" type="xsd:string" />
                  <
xsd:attribute name="url" type="xsd:string" />
                  <
xsd:attribute name="id" type="xsd:int" />
                  <
xsd:attribute name="primaryField" type="xsd:string" />
                  <
xsd:attribute name="borderWidth" use="optional">
                    
<xsd:simpleType>
                      
<xsd:restriction base="xsd:int">
                        
<xsd:enumeration value="1" />
                        <
xsd:enumeration value="2" />
                        <
xsd:enumeration value="3" />
                        <
xsd:enumeration value="4" />
                        <
xsd:enumeration value="5" />
                        <
xsd:enumeration value="6" />
                      </
xsd:restriction>
                    
</xsd:simpleType>
                  
</xsd:attribute>
                  
<xsd:attribute name="borderColor" type="xsd:string" />
                  <
xsd:attribute name="fillColor" type="xsd:string" />
                </
xsd:complexType>
              
</xsd:element>
            
</xsd:sequence>
          
</xsd:complexType>
        
</xsd:element>
      
</xsd:sequence>
    
</xsd:complexType>
  
</xsd:element>
</xsd:schema>
Príklad xsd schémy "MapServiceConfigSection.xsd"

Následne túto schému pripojíme k pôvodnému súboru príkazom include, v ktorom definujume umiestnenie našej vlastnej schémy. Súbory s originálnymi schémami, ktoré využíva Visual Studio, nájdeme v priečinku "<Visual Studio Install Folder>\Xml\Schemas\" (napr.: "c:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas"). Súbor, ktorý treba doplniť príkazom include má názov v tvare "DotNetConfig[verzia framework-u].xsd" (napr.: "DotNetConfig.xsd"). Príkaz include treba vložiť na prvé miesto root elementu schema, uložiť zmeny vykonané v súbore a je to.

<?xml version="1.0" encoding="us-ascii"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:vs
="http://schemas.microsoft.com/Visual-Studio-Intellisense" 
    elementFormDefault
="qualified" 
    attributeFormDefault
="unqualified" 
    vs:helpNamespace
="http://schemas.microsoft.com/.NetConfiguration/v2.0">
    
    
<xs:include schemaLocation="MapServiceConfigSection.xsd"/>
    
    <
xs:element name="configuration">
        
<xs:complexType>
            
<xs:choice minOccurs="0" maxOccurs="unbounded">
                
<xs:any namespace="##any" processContents="lax" />
            </
xs:choice>
            
<xs:anyAttribute namespace="http://schemas.microsoft.com/XML-Document-Transform" processContents="strict"/>
        </
xs:complexType>
    
</xs:element>
</xs:schema>
Použitie príkazu include na zahrnutie custom xsd schémy

Visual Studio automaticky načíta danú schému (bez nutnosti uplatnenia metódy "vystúpiť/nastúpiť") a pri editácii web.configu ponúkne Intellisense (ale len v prípade, že v nami definovanej schéme nie je žiadna chyba ;)).


Ukážka využitia Intellisense
Publikované Wednesday, July 13, 2011 3:17 PM xxxmatko
Zaradené do: , , ,

Komentáre

Bez komentárov