web.config ファイルのさまざまな動的セクションに外部構成ファイルを使用しています。基本的に、環境 (Prod、UAT、Test、Dev など) 間のすべての動的変数は、一般的な名前の .config ファイルに外部化されています。
私の web.config も汎用的であるため、すべての環境が同じ web.config を使用します (接続文字列などは外部ファイルにあるため)。すべてのファイルは環境全体で同じ名前が付けられているため、リリースを行うときは、リリース中に web.config と \Configs* ディレクトリをそのままにしておく必要があります。
(XSLT や PowerShell などを使用して) やりたいことは、これらの外部 *.config ファイルに含まれるすべての情報を web.config にマージして、(マージされた) web.config とバージョンを比較できるようにすることです。開発者によって提供されます。
したがって、現在の web.config は次のようになります。
<sessionState configSource="Configs\System.Web.SessionStateConnectionString.config" />
また、Prod 環境の System.Web.SessionStateConnectionString.config ファイルには次のものが含まれています。
<sessionState mode="StateServer" cookieless="true" timeout="20"/>
テスト環境には次のものがあります。
<sessionState mode="InProc" cookieless="true" timeout="20"/>
すべての外部 *.config ファイルを web.config にマージして、configSource が使用されたことがないかのようにファイルが本質的に完成するようにしたいと思います。これにより、web.config ファイル (マージされた後) で diff または WinMerge を実行し、開発者が提供するものを実行して、新しいキーの追加や新しいモジュールの使用など、変更された内容を表示できます。
これについて最善の方法は何ですか?