2009-04-13 10 views
35

Lors de l'édition de fichiers de configuration .NET (app.config, web.config, etc.) dans Visual Studio, je reçois l'intellisense de Visual Studio pour me guider lors du choix des paramètres de mon application. Si j'ajoute une section de configuration personnalisée, comment puis-je activer intellisense pour mes paramètres personnalisés? Je suis sûr qu'il doit y avoir une réponse facile à cela, mais une recherche rapide sur Google ne m'a pas aidé.Activation d'Intellisense pour les sections personnalisées dans les fichiers .config

Merci!

Répondre

28

Si vous ne voulez pas modifier vos fichiers Visual Studio ou de copier quoi que ce soit dans le dossier Visual Studio, vous pouvez ajouter le fichier .xsd à votre projet, ouvrez votre fichier .config et sélectionnez Schemas dans les Propriétés fenêtre (cliquez sur l'icône […]):

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

+5

+1 La solution acceptée semble largement répandue, mais vous ne devez pas le faire à moins que les modifications de schéma ne soient standard et utiles à tous les projets Visual Studio pouvant être créés sur votre ordinateur (http://msdn.microsoft.com/ en-us/library/ms255821.aspx) – Paul

10

Vous devez créer un fichier XSD pour vos paramètres personnalisés et le copier dans le répertoire schema de votre installation visuelle de Studio. Pour 2005, il s'agit de:% ProgramFiles% \ Microsoft Visual Studio 8 \ XML \ Schémas

Voici quelques informations à ce sujet. http://blogs.msdn.com/astebner/archive/2005/12/07/501466.aspx

+0

excellent. Merci! –

31

Comme disent les autres réponses, vous devez fournir un document de schéma XML pour votre section de configuration personnalisée. Il n'est pas nécessaire d'ajouter le fichier de schéma .xsd à un répertoire global; vous pouvez faire référence directement à partir de votre section personnalisée dans le fichier 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> 

L'attribut xmlns est simplement là pour définir un espace de noms par défaut, de sorte que vous n'avez pas besoin de le mettre sur votre élément customSection et tous ses éléments enfants. (Cependant, ne placez pas l'xmlns attribut sur l'élément <configuration>!)

Le customSection.xsd contient le schéma qui sera utilisé par IntelliSense, par exemple:

<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

Quel TYPE suis-je supposé mettre dans section.type? J'ai deviné et mis "xmlns" là et ça marche ... mais je suis sûr que c'est faux. –

+1

@ Prisoner, vous êtes supposé mettre un nom de type .NET à la place de "Namespace.Class, Assembly". Le framework va instancier ce type et l'utiliser quand il veut analyser la section de configuration personnalisée. Choisissez l'une des classes de gestionnaire de section prédéfinies, ou toute classe personnalisée qui implémente l'interface 'IConfigurationSectionHandler'. Pour plus d'informations, recherchez quelque chose comme «App.config des gestionnaires de sections personnalisées», ou lisez un article sur le sujet tel que [cet article de Code Project] (http://www.codeproject.com/KB/aspnet/ConfigSections .aspx) pour commencer. – stakx

+0

Je sais que c'est un peu en retard, mais cela semble causer un problème d'exécution lorsque le Configuration Manager tente de lire la section de configuration personnalisée et qu'il ne reconnaît pas l'attribut 'xmlns: xsi'. Savez-vous ce que je peux faire pour le réparer? Merci –

Questions connexes