2009-04-13 7 views
35

Podczas edytowania plików konfiguracyjnych .NET (app.config, web.config, itp.) W Visual Studio, otrzymuję intellisense Visual Studio, który poprowadzi mnie przy wyborze ustawień mojej aplikacji. Jeśli dodaję sekcję konfiguracji niestandardowej, w jaki sposób mogę włączyć intellisense dla moich własnych ustawień? Jestem pewien, że musi być na to prosta odpowiedź, ale pobieżne wyszukiwanie w Google nie dało mi żadnej pomocy.Włączanie IntelliSense dla niestandardowych sekcji w plikach .config

Dzięki!

Odpowiedz

28

Jeśli nie chcesz zmodyfikować Visual plików Studio albo skopiować wszystko do folderu Visual Studio, można dodać plik .xsd do projektu, należy otworzyć plik .config i wybierz schematów w Properties okno (kliknij ikonę […]):

Screenshot of Visual Studio showing where to find and change the "Schemas" property of your <code>.config</code> file

+5

+1 Przyjmowane rozwiązanie wydaje się być szeroko stosowane, ale nie powinno się tego robić, chyba że zmiany schematu są standardowe i przydatne dla wszystkich projektów Visual Studio, które można utworzyć na komputerze. (Http://msdn.microsoft.com/ en-us/library/ms255821.aspx) – Paul

10

Należy utworzyć plik XSD dla niestandardowych ustawień i skopiować go do katalogu schematu instalacji Visual Studio. W roku 2005 jest to:% ProgramFiles% \ Microsoft Visual Studio 8 \ XML \ Schemas

Oto kilka informacji na ten temat. http://blogs.msdn.com/astebner/archive/2005/12/07/501466.aspx

+0

doskonała. Dzięki! –

31

w innych odpowiedzi powiedzieć, trzeba dostarczyć dokument schematu XML dla sekcji konfiguracji niestandardowej. Nie ma potrzeby dodawania pliku schematu .xsd do jakiegoś katalogu globalnego; można odwoływać się do niej bezpośrednio z sekcji niestandardowej w pliku 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> 

Atrybut xmlns jest jedynie tam ustawić domyślnej przestrzeni nazw, tak że nie trzeba, aby ustawić go na elemencie customSection i wszystkich jego elementy potomne. (Jednak nie należy umieszczać atrybut xmlns na elemencie <configuration>!)

customSection.xsd zawiera schemat, który będzie używany przez IntelliSense, na przykład:

<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> 
+0

Co TY TYM powinienem wstawić w section.type? Zgadłem i umieściłem tam "xmlns" i działa ... ale jestem prawie pewien, że to jest złe. –

+1

@Prisoner, powinieneś umieścić (przynajmniej kwalifikowaną do montażu) nazwę typu .NET à la '" Namespace.Class, Assembly "' tam. Środowisko będzie tworzyło ten typ i używało go, gdy chce parsować sekcję konfiguracji niestandardowej. Wybierz jedną z kilku wstępnie zdefiniowanych klas obsługi sekcji lub dowolną klasę niestandardową, która implementuje interfejs 'IConfigurationSectionHandler'. Aby uzyskać więcej informacji, wpisz go na coś w rodzaju '" App.config niestandardowych procedur obsługi sekcji "' lub przeczytaj artykuł na ten temat, taki jak [ten artykuł Code Project] (http://www.codeproject.com/KB/aspnet/ConfigSections .aspx), aby rozpocząć. – stakx

+0

Wiem, że jest nieco późno, ale wydaje się to powodować problem w czasie wykonywania, gdy program Menedżer konfiguracji próbuje odczytać niestandardową sekcję konfiguracji i nie może rozpoznać atrybutu 'xmlns: xsi'. Czy wiesz, co mogę zrobić, aby to naprawić? Dzięki –