[VS2010]本番config作成を自動化

VisualStudio等の開発では何らかの形でApp.configをほとんどの開発者が利用しているかと思いますが、
コイツは通常の方法ではデバッグ/リリースでの分別が出来ません。
JavaだったらANTとかでどうにでもなるんだけどね…。

毎回本番構成を書き込んで、Releaseモードに切り替えて、、ビルドする…?
いつかミスします。。。人間だもの。。。
まぁ私は仕事で今までこれでやってましたが。。。

じゃあプラグインを使おう。 チーム全員への導入の強制…?ムリムリかたつむり

なんと上記すべてを解決できる方法がありました。
Releaseモードに切り替えてビルドすれば本番構成を書き込んだconfigとともにビルドフォルダに…
そして最初にビルド構成の設定する人だけがプラグインを導入すれば設定が可能という。
実際の内容はつづきへ。。。

(外部リンク)Configuration Transform

上記からプラグインを入手します。サポートはVS2010, 2013, 11です。Express版も無理かもしれません。
ダウンロードページにもそれなりに細かい説明がありますが、もうちょい細かくやるつもりです。

Config分岐したいプロジェクトを開きます。

ct1

 

 

 

対象となるApp.configを右クリックすると「Add Config Transforms」というメニューが追加されているのでクリックします。
処理が終わるとプロジェクトの再読み込みを促されるのでその通りにします。
ct2

そうすると上記のようにapp.configが構成によって分かれます。
(※ソリューションエクスプローラのオプションで「すべてのファイルを表示」するようにしないと見えません)

*この状態でVSから起動出来るか試しておいてください。
私の環境ではvshostが固まっていて実行できない状態になってて結構な時間悩みました。
VSを落としてvshostのプロセスを強制終了すれば一応直ります

大まかにApp.configへの値保持は2通りあります。いずれも値の保持方法が異なるので両方の場合を解説します。
1.VSのプロパティエディタを使わずに<add key…で値追加する方法
2.VSのプロパティエディタでMySettingsを使う方法

サンプルプロジェクト(VS2010が必要)
build_sample_appcnf

以下は上記で作ったサンプルプロジェクトの内容紹介

app.configが以下のようだった場合の例(1のケース)


<?xml version=”1.0″?>
<configuration>
<startup>
<supportedRuntime version=”v4.0″ sku=”.NETFramework,Version=v4.0″/>
</startup>
<appSettings>
<add key=”sample” value=”デバッグ”/>
<add key=”sample2″ value=”そのままにしておく要素はapp.*.configに書かなくてもいいYO”/>
</appSettings>
</configuration>

app.Release.config

<?xml version=”1.0″?>
<!– For more information on using app.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 –>
<configuration xmlns:xdt=”http://schemas.microsoft.com/XML-Document-Transform”>
<appSettings>
<add key=”sample” value=”リリース” xdt:Transform=”Replace” xdt:Locator=”Match(key)”/>
</appSettings>
</configuration>

上記のように可変にしたいキーの要素だけ書き換えできます。

app.configが(2)のケースだった場合(自動生成コードなので省略)

app.Release.config

<?xml version=”1.0″?>
<!– For more information on using app.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 –>
<configuration xmlns:xdt=”http://schemas.microsoft.com/XML-Document-Transform”>
<setting name=”sample” serializeAs=”String” xdt:Transform=”Replace” xdt:Locator=”Match(name)”>
<value>リリース</value>
</setting>
</configuration>

ほぼ同じような物ですが、少し形式が違います。もちろん(2)の場合も可変にしたいキーの要素だけ書き換えできます。

まだ応用はありますが、おおよそ良く使いそうなのはこの辺でしょう。

// 最近はVB.NETやったりC#やったりJavaやったりと行き来しているからVBのせいでコメント文字を戸惑う…

コメントを残す

メールアドレスが公開されることはありません。