次の問題があります:
モジュールをロードする(アドオン)アプリケーションがあります。これらのモジュールでは、app.configにエントリが必要な場合があります(WCF構成など)。モジュールは動的に読み込まれるため、アプリケーションのapp.configファイルにこれらのエントリを含めたくありません。
私がしたいことは次のとおりです:
- モジュールの構成セクションを組み込んだ新しいapp.configをメモリに作成します
- アプリケーションにその新しいapp.configを使用するように伝えます
注:デフォルトのapp.configを上書きしたくない!
たとえばConfigurationManager.AppSettings
、新しいファイルを使用できるように、透過的に機能する必要があります。
この問題の評価中に、私はここで提供されているものと同じソリューションを思いつきました:nunitでapp.configをリロードします。
残念ながら、私はまだ通常のapp.configからデータを取得しているため、何も実行しないようです。
私はそれをテストするためにこのコードを使用しました:
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);
}
同じ値を2回出力しcombinedConfig
ますが、通常のapp.config 以外の値が含まれています。
Reload app.config with nunit
設定が読み込まれる前にアプリケーションのエントリで使用された場合、ハッキングは機能する可能性があります。
AppDomain
適切な構成ファイルを使用してモジュールを個別にホストすることはオプションではありませんか?