Tengo el siguiente problema:
tenemos una aplicación que carga módulos (complementos). Es posible que estos módulos necesiten entradas en app.config (por ejemplo, configuración de WCF). Debido a que los módulos se cargan dinámicamente, no quiero tener estas entradas en el archivo app.config de mi aplicación.
Lo que me gustaría hacer es lo siguiente:
- Cree una nueva aplicación.config en memoria que incorpore las secciones de configuración de los módulos
- Dile a mi aplicación que use esa nueva aplicación.
Nota: ¡No quiero sobrescribir la aplicación predeterminada.config!
Debería funcionar de manera transparente, de modo que, por ejemplo ConfigurationManager.AppSettings
use ese nuevo archivo.
Durante mi evaluación de este problema, se me ocurrió la misma solución que se proporciona aquí: Recargar app.config con nunit .
Desafortunadamente, no parece hacer nada, porque todavía obtengo los datos de la app.config normal.
Usé este código para probarlo:
Console.WriteLine(ConfigurationManager.AppSettings["SettingA"]);
Console.WriteLine(Settings.Default.Setting);
var combinedConfig = string.Format(CONFIG2, CONFIG);
var tempFileName = Path.GetTempFileName();
using (var writer = new StreamWriter(tempFileName))
{
writer.Write(combinedConfig);
}
using(AppConfig.Change(tempFileName))
{
Console.WriteLine(ConfigurationManager.AppSettings["SettingA"]);
Console.WriteLine(Settings.Default.Setting);
}
Imprime los mismos valores dos veces, aunque combinedConfig
contiene otros valores distintos de la aplicación.config normal.
Reload app.config with nunit
podría funcionar, no estoy seguro, si se usa en la entrada de la aplicación antes de cargar cualquier configuración.
AppDomain
con el archivo de configuración apropiado no es una opción?