複数の出力プロジェクト(Webサイト、管理ツール、およびSOAP APIレイヤー)を持つソリューションがあります。
それらはそれぞれ、ソリューション内の共通のプロジェクト(サービス層、データ層など)を共有します。これらの一般的なプロジェクトの1つで、構成レイヤーを保存しようとしています。
現在、出力プロジェクトごとに3つの個別のappsettings構成ファイルがあります-
development.AppSettings.config
testing.AppSettings.config
production.AppSettings.config
したがって、全部で9つの構成ファイルがあります。web.config appsettingsノードのconfigSource属性を利用して参照されるため、各プロジェクトで使用されるのは1つだけです。
とにかく、設定ファイルから値を追加/削除したいときはいつでも苦痛になります。これを行うには、 9つのファイルすべてを変更する必要があるためです。そして、これが私がやりたいことです:
一般的なプロジェクトでは、上記のように3つの構成ファイルがあります。これらは出力ディレクトリにコピーするように設定されるため、各プロジェクトにそれらのコピーがあります。これらは「ベース」構成になります。
次に、各プロジェクトで3つのファイルを再度作成したいのですが、必ずしも基本構成と同じ値が含まれている必要はありません。ただし、そうした場合、基本構成値は、出力プロジェクト構成の値によってオーバーライドされます。構成の継承の一形態だと思います。
アプリケーションの起動時に、これら2つの構成ファイル(基本構成ファイルとプロジェクト構成ファイル)を取得できるようにしたいと思います。次に、それに応じてアプリの設定を行います。
私が疑問に思っているのは、使用するファイルを決定するための良い方法は何ですか?また、これが大規模なソリューション間でアプリケーションの値を共有するための良い方法であるかどうか、そして別の、おそらくより効率的な方法があるかどうか疑問に思っています。
開発モードの場合、production.appsettings.configは必要ありません。また、本番モードの場合はその逆です。
出発して構成を取得する前に、現在のモード(開発/テスト/本番)を取得する簡単な方法はありますか?