を、私はそれは読み取り専用であるので、あなたがまたはインストールフォルダ内のファイルを変更する必要があることができると信じていない...したがって、あなたは選択肢を持っている:MSIと行きますインストールし、適切な設定ファイルを切り替えるためのカスタムインストールアクションまたはは、さまざまな環境をカプセル化するカスタム構成要素をいくつか構築します。
私たちのアプリケーションでは、後者を行っています。メインのapp.configには、次のようなカスタム設定セクションがあります。
<myApp defaultEnvironmentName="prod">
<environments>
<add name="prod" title="Production" description="Full production environment" injectionContainers="prod">
...
<!-- Add custom elements the affect your environment -->
...
</add>
<add name="qa" title="Quality Assurance" description="Full production environment except running off our mock database" injectionContainers="prod qa">
...
<!-- Add custom elements the affect your environment -->
...
</add>
</environments>
</myApp>
... <!-- Other elements that are common to all environments --> ...
その後、我々は簡単に環境を切り替えることができますしrun-time flag or command line argumentを使用しています。使用中の環境の値は、ユーザの設定ファイルに保存され、後で使用するときにアプリケーションは最後に使用された環境をロードします。
我々は直接上記利用カスタム構成セクションのCurrentEnvironment
プロパティは、それを動作するように設定言及呼びかける環境ごとに異なる何かにアクセスする必要があります。ここで、MyAppSection.Configured
だけである
var title = MyAppSection.Configured.CurrentEnvironment.Title;
注意ConfigurationManager.GetSection(...)
に基づいてロードするシングルトンインスタンス。
コンフィギュレーションコードのボートロードの可能性は、あなたが望む最後のものですが、設定ファイル内の環境変数を明確に定義して分離できるようになります。