しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

ASP.NET プロジェクトで構成マネージャと Web.config 変換を活用する

実際に ASP.NET でアプリケーションを開発していて、それを公開環境へデプロイする時には Web.config に書かれている接続文字列や設定などを、開発環境のものから変更する必要が出てくると思います。

最近の Visual Studio では Web.config の内容を XSLT で発行時に変換する機能があるので、Web.Release.config ファイルにリリース時に必要な変換を書くことが出来ます。

プロジェクトを作成すると、デフォルトで Web.Debug.config と Web.Release.config が作成されるので、昔に比べると非常に便利になりました。

しかし、実際には設定をステージング環境と本番環境で分ける必要があったりするので、デバッグかリリースという分け方ではトラブルの元です。そんな時には Visual Studio の構成マネージャを使ってステージング、本番環境向けの新しいソリューション構成を作成してしまいましょう。

「構成」ドロップダウンリストを選択すると「新規作成」という項目があるので、それを選択します。

「新しいプロジェクト構成」というダイアログが表示されるので、名前には「Staging」と入力し、設定のコピー元には「Release」を選択します。

これで「OK」ボタンをクリックすると「Staging」という名前のソリューション構成が作成されます。

新しく追加された Staging という構成は Release と同じ設定になっています。

しかし、このままだと Web.config は Staging 向けの変換が行えないので、ソリューションエクスプローラーから Web.config ファイルを右クリックして、「Config 変換を追加」を選択します。

新しく Web.Staging.config ファイルが生成され、発行時に Web.config の変換が使えるようになりました。

Web 発行を使う場合には、設定のダイアログで構成を選べるようになっているので、そこで作成した Staging という構成を選べば完成です。

本番環境用の Production 構成も同じように簡単に作れます。

意外と知られていないようですが、デプロイ先の環境が複数ある場合には非常に便利に使えます。

追記

Web発行先に応じてWeb.configに変更を適用する - kkamegawa's weblog

Tiny Happy Features #3 - Publishing Improvements, chained Config Transforms and Deploying ASP.NET Apps from the Command Line - Scott Hanselman's Blog

別に接続文字列とか Web.config だけを切り替えたい場合には、ソリューション構成を作らなくても発行先ごとに Web.config の変換を追加できるようですね。Scott Hanselman 氏のブログを読む限りでは Visual Studio 2012 での新機能っぽいです。

ほうほう。ビルドが絡まない場合にはこっちで十分っぽいですね。