私は、app.configファイルが複数の場所に分散されたさまざまなconfigフラグメントから動的に構築される構成システムを作成しています。システムは現在、次のように動作します。ConfigurationManagerにすべてのセクションをリロードさせる
- ブートストラップはコンフィギュレーションファイルを作成します。
- Bootstrapperは、新しい設定ファイルを設定ファイルとして新しいAppDomainを初期化します。
- その結果、新しいAppDomainは新しい設定ファイルを使用するように設定され、すべて正常に動作します。
。複雑なレイヤーを追加します。特に、アンマネージライブラリやその他のレガシーコードについては、複雑なレイヤーが追加されています。
1つのAppDomainに移動するには、ワークフローがに変更しますが:
- ブートストラップは、設定ファイルを作成します。
- Bootstrapperは、設定ファイルを独自の設定ファイルにマージします。
- BootstrapperはConfigurationManagerのキャッシュをリフレッシュします。
- Bootstrapperは、同じAppDomainでメインアプリケーションを起動します。
のConfigurationManagerがメモリ内のセクションをキャッシュしているようです。たとえば、ステップ3の前にAppSettingsを読んだら、私は電話する必要があります:ConfigurationManager.RefreshSection("appSettings");
実際、ブートストラップで使用されているセクションがリフレッシュされていることを確認する必要があります。
私は、これは設定ファイルで参照されるアセンブリをロードするために、構成マネージャーを強制的に、それらを更新し、新しい設定ファイルと力のconfigセクションのすべてを反復処理することですが、。私はこれを可能な限り延期したいと思います。 ConfigurationManagerが現在メモリ内に持っているものを無効にする方法があれば?