usar modificar manager example elemento declarado configuracion archivo app c# .net visual-studio

c# - modificar - Administre múltiples archivos de configuración de la aplicación durante el desarrollo



no se ha declarado el elemento configuration (6)

Puede consultar esta publicación para conocer algunas buenas prácticas: Administrar entornos de archivos de configuración múltiple con eventos de preconstrucción

Estoy construyendo una aplicación que es utilizada por varios clientes diferentes. Cada cliente tiene una buena cantidad de lógica de negocios personalizada, que he refactorizado inteligentemente en un ensamblaje que se carga en tiempo de ejecución. El nombre de ese conjunto, junto con otras configuraciones específicas del cliente, se almacenan en el archivo de configuración de la aplicación.

En este momento, esto es lo que tengo que hacer para depurar la aplicación para el cliente foo:

  1. Vaya al sistema de archivos en mi directorio de proyectos y elimine app.config
  2. Copie app.config.foo a app.config.foo - Copy .
  3. Cambiar el nombre de app.config.foo - Copy como app.config .
  4. Dile a Windows que sí, quiero cambiar la extensión del archivo.
  5. Vuelve a Visual Studio.
  6. Abra el elemento Settings.settings en mi proyecto.
  7. Haga clic en "Sí" 13 o 14 veces, ya que VS me pregunta si deseo usar la nueva configuración que se modificó en app.config .
  8. Cerrar Settings.settings .

¡Bueno! ¡Ahora estoy listo para depurar!

Me parece que el rigamarole de abrir Settings.settings es, o debería ser, innecesario: no necesito los valores predeterminados en Settings.cs para ser regenerados, porque no los uso. Pero es la única forma que conozco de hacer que VS sea consciente del hecho de que el archivo app.config ha cambiado, por lo que la compilación lo copiará en el directorio de salida.

Tiene que haber una manera más fácil de hacer esto. ¿Qué es?



Un par de personas sugirieron usar múltiples configuraciones de VS, lo que creo que hubiera funcionado, excepto que me exigiría reconstruir la solución cada vez que cambiara de configuración.

Lo que hice en su lugar me pareció un poco estúpido mientras lo hacía, pero lo he usado durante casi un año y funciona muy bien. En mi proyecto directamente, creo un archivo app.config.XXX por separado para cada cliente. El archivo app.config real se utiliza únicamente para generar Settings.cs : tiene todos los nombres de configuración correctos y sus valores predeterminados. No se copia a los directorios de construcción, nunca.

Luego escribí un pequeño programa que me permite seleccionar un cliente, y que simplemente app.config.XXX los directorios de cada proyecto y, si seleccioné el cliente XXX, app.config.XXX en bin/debug/myprogram.exe.config y bin/release/myprogram.exe.config . Mientras este programa sepa dónde está la raíz de la solución (tengo que tener un poco de cuidado cada vez que ramifique el código), funciona como un amuleto.


También puede dejar que Visual Studio automatice el enfoque de Robert de la siguiente manera:

  1. Definir una configuración de compilación para cada cliente
  2. En el evento posterior a la creación, simplemente copie app.config.xxx en su carpeta bin. Donde XXX es el nombre de una configuración de compilación accesible en VS. Algo como: xcopy app.config. $ (ConfigurationName) $ (OutDir) /app.config

VS soltará una compilación distinta para sus clientes en carpetas separadas, junto con el archivo de configuración adecuado. bin / Client1 / bin / Client2 /


Pensando en el lío de administrar múltiples archivos de configuración, hice esta herramienta: http://envride.codeplex.com/

Su propósito es exactamente hacer que sea más fácil administrar múltiples configuration files de forma automática. Estaría muy contento si lo echarais un vistazo.


Después de excavar un poco y trabajar, conseguí que mi proyecto de prueba funcionara con múltiples configuraciones,

  1. En Configuration Manager, crea las configuraciones que necesitas
  2. Copie y pegue su app.config y agregue el nombre de la configuración, en mi caso es AHI, FIV, MGC, para que mis archivos de configuración se vean así: App.AHI.config, App.MGC.config, App.FIV.Config. Puede nombrarlo como quiera, pero mantenga la misma convención
  3. Agregue un evento Post-Build. En mi caso, se vería así: xcopy $ (ProjectDir) app. $ (ConfigurationName) .config $ (TargetDir) $ (TargetName) .dll.config / y

aquí está mi publicación, para que pueda leerla con más detalles

Ejecución de un proyecto de prueba con múltiples configuraciones