2009-04-13 11 views
35

Al editar archivos de configuración .NET (app.config, web.config, etc.) en Visual Studio, obtengo el Intellisense de Visual Studio que me guía al elegir la configuración de mi aplicación. Si agrego una sección de configuración personalizada, ¿cómo puedo habilitar intellisense para mi configuración personalizada? Estoy seguro de que debe haber una respuesta fácil a esto, pero una búsqueda rápida en Google no me brindó ninguna ayuda.Activación de Intellisense para secciones personalizadas en archivos .config

Gracias!

Respuesta

28

Si no desea modificar los archivos de Visual Studio o copiar cualquier cosa en la carpeta de Visual Studio, puede agregar el archivo .xsd a su proyecto, abra el archivo de .config y seleccione esquemas en los Propiedades ventana (haga clic en el icono de […]):

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

+5

+1 La solución aceptada parece tener una práctica amplia, pero no debe hacer esto a menos que los cambios en el esquema sean estándar y útiles para todos los proyectos de Visual Studio que puedan crearse en su computadora. (Http://msdn.microsoft.com/ es-us/library/ms255821.aspx) – Paul

10

Debe crear un archivo XSD para su configuración personalizada y copiarlo en el directorio de esquema de su instalación de Visual Studio. Para 2005, esto es:% ProgramFiles% \ Microsoft Visual Studio 8 \ XML \ Schemas

Aquí hay algo de información sobre esto. http://blogs.msdn.com/astebner/archive/2005/12/07/501466.aspx

+0

excelente. ¡Gracias! –

31

Como las otras respuestas decir, es necesario proporcionar un documento de esquema XML para su sección de configuración personalizado. No es necesario agregar el archivo de esquema .xsd a algún directorio global; se puede hacer referencia a ella directamente desde su sección personalizada en el archivo 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> 

El atributo xmlns es simplemente allí para establecer un espacio de nombres por defecto, por lo que no es necesario configurarlo en su customSection elemento y todos sus elementos secundarios (Sin embargo, no coloque el atributo xmlns en el elemento <configuration>!)

El customSection.xsd contiene el esquema que se utilizará por IntelliSense, por ejemplo:

<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

¿Qué tipo de TIPO se supone que debo poner en section.type? Adiviné y puse "xmlns" allí y funciona ... pero estoy bastante seguro de que eso está mal. –

+1

@Prisoner, se supone que debes poner un nombre de tipo .NET (al menos ensamblado) à la '" Namespace.Class, Assembly "' allí. El marco instanciará este tipo y lo usará siempre que quiera analizar la sección de configuración personalizada. Elija cualquiera de las pocas clases de manejador de sección predefinidas, o cualquier clase personalizada que implemente la interfaz 'IConfigurationSectionHandler'. Para obtener más información, busque en google algo como '" App.config controladores de sección personalizados "', o lea un artículo sobre el tema como [este artículo del Proyecto de Código] (http://www.codeproject.com/KB/aspnet/ConfigSections). .aspx) para comenzar. – stakx

+0

Sé que esto es un poco tarde, pero esto parece causar un problema de tiempo de ejecución cuando Configuration Manager intenta leer la sección de configuración personalizada y no pudo reconocer el atributo 'xmlns: xsi'. ¿Sabes lo que puedo hacer para arreglarlo? Gracias –

Cuestiones relacionadas