J'ai le problème suivant:
nous avons une application qui charge des modules (add-ons). Ces modules peuvent avoir besoin d'entrées dans app.config (par exemple, configuration WCF). Étant donné que les modules sont chargés dynamiquement, je ne veux pas avoir ces entrées dans le fichier app.config de mon application.
Ce que je voudrais faire est le suivant:
- Créez un nouveau app.config en mémoire qui incorpore les sections de configuration des modules
- Dites à mon application d'utiliser cette nouvelle application.config
Remarque: je ne souhaite pas écraser le fichier app.config par défaut!
Il devrait fonctionner de manière transparente, de sorte que par exemple ConfigurationManager.AppSettings
utilise ce nouveau fichier.
Lors de mon évaluation de ce problème, j'ai trouvé la même solution que celle fournie ici: Recharger app.config avec nunit .
Malheureusement, cela ne semble rien faire, car je récupère toujours les données du fichier app.config normal.
J'ai utilisé ce code pour le tester:
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);
}
Il imprime deux fois les mêmes valeurs, bien qu'il combinedConfig
contienne d'autres valeurs que le fichier app.config normal.
Reload app.config with nunit
pourrait fonctionner, pas sûr, s'il est utilisé sur l'entrée de l'application avant le chargement de toute configuration.
AppDomain
avec le fichier de configuration approprié n'est pas une option?