かなり頻繁に聞かれる質問の1つですが、”アプリケーションがそれぞれ開発、テスト、ステージング、プロダクションモードにある時に、それぞれに応じてweb.configファイルで異なる構成設定を簡単に変更するにはどうすればいいですか?”と聞かれます。
Visual Studioのビルド環境内でこの構成プロセスは(IDEまたはコマンドライン/自動ビルドのどちらともうまく動作する方法で)簡単に自動化することができます。以下はこれを行うための高レベルな手順になります。これはVS 2005およびVS 2008の両方で動作します。
- ASP.NET Webアプリケーションプロジェクト(MSBuildベースプロジェクト)を使用
- 構成マネージャを開き、新しく"Dev"、"QA"、"Staging"のビルド構成をプロジェクトおよびソリューションに対して作成
- "web.config.dev"、"web.config.qa"、"web.config.staging"ファイルをプロジェクトに追加し、各アプリケーションモードでの構成設定にそれぞれをカスタマイズ
- プロジェクトをビルドする毎にバージョンに応じて適切なモードでプロジェクトのweb.configファイルを自動でコピーする新しい"ビルド前に実行するコマンドライン"をプロジェクトファイルに追加
(例えば、もしソリューションが"Dev"構成だった場合、web.config.dev設定をメインのweb.configファイルにコピーします。)
上記の手順を行うと、ソリューションでモードの選択をVS標準のツールバーにある構成用ドロップダウンから行うことができます。:
次に構成モードを変更した後にビルドおよび起動を行った時、VSは自動的にビルド構成に応じたweb.config設定を選択・使用して
アプリケーションのweb.configファイルを修正します。
(QAを選択した場合はテスト用設定が使用され、もし展開を選択すると展開設定を使用するようになります。)
このアプローチの利点はソース管理環境で上手く動作するところです。
(ローカルマシン上で手動の変更をする必要なく、全員が同期し、ローカルでビルドすることができます。)
ビルドサーバー上でも(もし自動コマンドラインのソリューションビルドをおこなっている場合でも)動作します。
この手順についての詳細は、
複数の構成ファイル環境をビルドイベント(ビルド前に実行するコマンドライン)で制御
投稿をScott Hanselmanが本日公開しましたので、そちらをお読みください。
また、
ASP.NET チップ、仕掛け、ガッチャページ でその他のASP.NETのヒントや仕掛けなどをお勧めしております。
Hope this helps,
Scott
※本翻訳に関しまして、Scottさんにはご了承頂いております。