Carga de un archivo de configuración de aplicación diferente en tiempo de ejecución se puede hacer usando el archivo de configuración mapeado. Necesita agregar referencia a System.Configuration.dll
en su proyecto.
Establezca el valor de Copy to Output Directory
propiedad de todos los archivos de configuración adicionales (por ejemplo, App1.config, App2.config etc.) otros tha n el predeterminado (App.config) a Copy if newer
. De esta forma, estarán disponibles en el directorio de salida del proyecto (\ bin \ debug) una vez que se haya construido el proyecto. El valor predeterminado de esta propiedad es Do not copy
.

Aquí es el fragmento de código en la forma de leer los datos de configuración de los archivos de configuración no predeterminada:
ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap();
configFileMap.ExeConfigFilename = "App1.config"; // app1.config should be present in root directory from where application exe is kicked off
// Get the mapped configuration file
var config = ConfigurationManager.OpenMappedExeConfiguration(
configFileMap, ConfigurationUserLevel.None);
//get the relevant section from the config object
AppSettingsSection section = (AppSettingsSection)config.GetSection("appSettings");
//get key value pair
var keyValueConfigElement = section.Settings["appSettingsKey"];
var appSettingsValue = keyValueConfigElement.Value;
Si tiene varios archivos de configuración de aplicaciones a continuación, puede tener una configuración en forma predeterminada App.config
archivo con la ayuda de la cual puede tomar una decisión en tiempo de ejecución sobre qué archivo de configuración adicional cargar, por ejemplo App1.config
Nota: Tenga en cuenta que el código como sigue ConfigurationManager.AppSettings["DeployEnv"]
leerá los datos del archivo por defecto App.config
.Este comportamiento no puede ser cambiado. No se puede prohibir la carga del archivo predeterminado App.config
. Debe usar medios alternativos como se muestra arriba para leer los datos de los archivos de configuración no predeterminados
+1: y para ser muy claros aquí: NUNCA se usarán los archivos de configuración asociados con un proyecto de ensamblaje. Solo se usarán los archivos de configuración del proyecto principal. Necesitas controlarlos en ese nivel. – NotMe
@NotMe: Sé que es un poco más explícito de lo que tenía en mente, pero hay formas de incluir archivos de configuración de la biblioteca. Déles un nombre único, configúrelos para que se copien en el directorio de salida y haga que el app.config de su proyecto de inicio los referencia como un enlace externo. – Flater