2010-12-16 10 views
8

Tengo una aplicación de consola que tiene el archivo App.Confile. Ahora los parámetros que son específicos del entorno se mantienen aquí.¿Podemos tener varios archivos App.Config en la aplicación de consola .NET?

Ahora estoy pensando en tener varios archivos app.config (como app.dev.config, app.test.config y app.prod.config) la forma en cómo podemos tener varios archivos Web.Config .

En el caso de la aplicación web, podemos manejar esto y ConfigurationManager elegiría el archivo respectivo Web.Config.

En el caso de la aplicación de consola, no estoy seguro. En caso afirmativo, ¿cómo podemos tener múltiples archivos app.config?

Agradecemos su ayuda.

Gracias

Respuesta

8

ACTUALIZACIÓN

Con Visual Studio 2010 y , que todo esto ha sido integrado en el IDE. Si hace clic derecho en su archivo de configuración, VS le da la opción de generar una configuración de transformación para cada una de sus configuraciones de compilación. Si fuera a crear una configuración de compilación para cada uno de sus entornos, MSBuild generará automáticamente el Web.config/app.config correcto para usted.

Respuesta corta, sí. Puede tener los diferentes archivos y en su script de compilación, pero tendrá que cambiar el nombre de la correcta a "App.config" y estará configurado (antes de compilar).

Respuesta larga, lo que debe utilizar es la herramienta Enterprise Library MergeConfiguration. Esto le permite usar su App.config existente como base y definir deltas por entorno. La herramienta fusionará la base y el delta para generar los archivos de configuración específicos del entorno. Todavía necesitará cierta lógica en un script de compilación para aplicar el archivo de configuración correcto.

Al instalar Enterprise Library en su máquina, puede hacer clic con el botón derecho en el archivo de configuración en Visual Studio y editarlo a través de la herramienta de configuración. Puede usarlo para definir sus entornos y la configuración de la aplicación y las cadenas de conexión para anular por entorno.

http://entlib.codeplex.com/

+1

Esto funcionó. He puesto copy $ (ProjectDir) app. $ (ConfigurationName) .config $ (ProjectDir) app.config en el Comando Build. – Rita

8

Para una continuación de la respuesta de Babak, usted podría también piezas separadas de su configuración a cabo en otros archivos de configuración utilizando el atributo configSource en cualquier elemento que representa un ConfigurationSection, por ejemplo:

<appSettings configSource="appSettings.config" /> 

Y en appSettings.config:

<?xml version="1.0" encoding="UTF-8"?> 
<appSettings> 
    <add key="Blah" value="Nim nim nim" /> 
</appSettings> 
+0

¿Esto manejará las entradas de cadena de conexión? –

+0

Puedes hacer: '' –

+1

Parece que no funciona para el tiempo de ejecución/assemblyBinding ... Tristemente. –

Cuestiones relacionadas