redwarrior’s diary

C#, ASP.NET, WEB, G*などの雑多な情報

環境ごとに設定を変更する(DBへの接続文字列)

Visual Studioでは、DBへの接続文字列を環境ごとに設定を変更する方法が複数あって、混乱しそうだったのでまとめてみました。

  1. 発行プロファイルで変更する
  2. 構成で変更する(Web.config変換)
  3. 発行プロファイルのWeb.configで変更する。

発行プロファイルで変更する

プロジェクトを右クリックして「発行」を選択後のウィンドウで変更することが出来ます。

f:id:redwarrior:20150707174343p:plain

変更内容は「Properties/PublishProfiles」の下の「発行プロファイル名.pubxml」ファイルに保存されるようです。プロファイルごとに設定できます。

構成で変更する(Web.config変換)

ASP.NETプロジェクトを作成するとWeb.configの他に、Web.Release.configとWeb.Debug.configが作られます。

これはプロジェクト作成時に勝手に作成される、ReleaseとDebugという構成に対応したファイルです。 このファイルに設定を記述することで、一致する構成を使用した場合に設定が変更されます。

構成マネージャーで構成を追加した後、Web.configファイルを右クリックして「Add Config Transforms」を選択することで、追加した構成用のファイルを作成することも出来ます。ファイル名は「Web.構成名.config」となります。

発行プロファイルのWeb.configで変更する。

発行プロファイル別にWeb.configファイルを作成することが出来、構成のWeb.configと組み合わせて使うことが出来ます。

例えば、Release構成で発行先に合わせて設定を変更したりできます。

発行プロファイルを追加した後、「発行プロファイル名.pubxml」を右クリックして「Config 変換を追加」を選択することで、追加した発行プロファイル用のファイルを作成することも出来ます。ファイル名は「Web.発行プロファイル名.config」となります。

適用順

上記の各方法に別々の値を設定してみたところ、ローカル環境では以下の順番に設定が適用されていました。同じ項目でReplaceをしている場合は、後の順番の値が設定されます。

  1. 構成で変更する(Web.config変換)  設定ファイル:Web.構成名.config
  2. 発行プロファイルのWeb.configで変更する  設定ファイル:Web.発行プロファイル名.config
  3. 発行プロファイルで変更する  設定ファイル:発行プロファイル名.pubxml

なかなか面白い結果になりました。以上です。

試した環境:

Visual Studio 2013 Professional

Windows 8.1 Pro

参考サイト:

以下のサイトを参考にしました。

ASP.NET プロジェクトで構成マネージャと Web.config 変換を活用する - しばやん雑記

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