subir pesados para net grandes configurar configuracion asp archivos archivo c# .net configuration

c# - pesados - ¿Cómo maneja los archivos.config de.NET para aplicaciones grandes?



subir archivos pesados asp net (5)

Supongamos que una aplicación compuesta grande se basa en varios componentes básicos empaquetados en sus propios ensamblajes: (lectura de base de datos, manejadores de protocolo, etc.). Para algunas implementaciones, esto puede incluir más de 20 ensamblajes. Cada uno de estos ensamblajes tiene configuraciones o información de configuración. A nuestro equipo le gusta el editor de configuraciones VS (¡y el código fácil de usar que genera!), Y la distinción entre aplicación y usuario satisface la mayoría de nuestras necesidades.

PERO....

Es muy tedioso copiar y pegar las muchas secciones de configuración en .xml de nuestra aplicación. Además, para componentes compartidos que tienden a tener configuraciones similares en todas las aplicaciones, esto significa que necesitamos mantener configuraciones duplicadas en múltiples archivos .config.

EntLib de Microsoft resuelve este problema con una herramienta externa para generar el archivo monstruo .config, pero también se siente klunky.

¿Qué técnicas usas para gestionar archivos .config .NET grandes con secciones de múltiples conjuntos compartidos? Algún tipo de mecanismo de inclusión? Lectores de configuración personalizada?

SEGUIR:

La respuesta de Will fue exactamente a lo que estaba llegando, y se ve elegante para las secciones pares de clave / valor. ¿Hay alguna manera de combinar este enfoque con las secciones de configuración personalizadas ?

Gracias también por las sugerencias sobre la administración de diferentes .configs para diferentes objetivos de compilación. Eso también es bastante útil.

Dave


Configure configuraciones de compilación para cada entorno de despliegue / prueba y use archivos de configuración separados en función de cada configuración de compilación.

ScottGu tiene una buena publicación sobre esto y funciona muy bien. La única peculiaridad que tenemos es que tenemos que asegurarnos de que los archivos de configuración (web.config) estén desprotegidos para su edición desde TFS antes de cada compilación para que puedan copiarse.


Creamos una clase AssemblySettingsConfig que actúa como ConfigurationManager, pero carga un .config para cada ensamblaje individual. Entonces, la aplicación tiene .config, y las DLL a las que hace referencia tienen sus propios archivos .config. Ha funcionado bien hasta ahora.


Mi método preferido es usar MSBuild, si hace clic derecho en un proyecto y hace clic en ''descargar'' aparecerá una nueva opción de menú que dice ''editar''. Seleccione eso y abrirá el archivo del proyecto para que pueda editarlo, desplácese hacia abajo hasta que encuentre una sección comentada que se llama "AfterBuild".

A continuación, puede agregar algo como:

<Target Name="AfterBuild"> <Delete Files="$(TargetDir)$(TargetFileName).config" /> <Copy SourceFiles="$(ProjectDir)$(Configuration).config" DestinationFiles="$(TargetDir)$(TargetFileName).config" /> </Target>

Esto reemplazará la configuración de la aplicación por una llamada [Release | Debug] app.exe.config. Entonces puede mantener configuraciones separadas según cómo se construya el proyecto.

Pero una opción rápida y sucia (si no quiere jugar con msbuild) es simplemente mantener archivos de configuración separados y luego definir cuál desea incluir, así:

<appSettings configSource="Config/appSettingsDebug.config"/> <roleManager configSource="Config/roleManagerDebug.config"/>

Y si está haciendo una aplicación asp.net, microsoft ofrece una gran herramienta llamada "Proyectos de implementación web" que le permitirá administrar todo esto fácilmente, haga clic aquí



Utiliza un archivo de configuración maestra que apunta a otros archivos de configuración. Aquí hay un ejemplo de cómo hacer esto.

En caso de que el enlace se pudra, lo que debe hacer es especificar el configSource para una sección de configuración en particular. Esto le permite definir esa sección en particular dentro de un archivo separado.

<pages configSource="pages.config"/>

lo que implica que hay un archivo llamado "pages.config" dentro del mismo directorio que contiene todo el árbol de nodos <pages /> .