連載:Team Foundation Server 2008の下流工程への適用第4回 チーム・ビルドによる開発の安定化アバナード株式会社 安藤 大祐2009/08/12 |
|
|
●カスタム・ビルドのサンプル
以下では、実際に筆者がプロジェクトで行ったことのある、ビルドのカスタマイズ例を紹介する。
○ケース1:アセンブリ・バージョン番号の自動更新
MSDNで公開されているAssemblyInfoタスクを利用することで、アセンブリのバージョン番号を自動更新することが可能だ。
処理の流れとしては、
(1)AssenblyInfo.csファイルをチェックアウト
(2)AssenblyInfo.csファイルのAssemblyVersion属性の数値を変更
(3)AssenblyInfo.csファイルをチェックイン
となる。これらはコンパイル前に実施する必要があるため、BeforeCompileターゲットをオーバーライドして、処理を追加する。上記の(1)(2)(3)は、下記のコードのに該当する。
|
||||||||||||||||||
アセンブリ・バージョン番号の自動更新スクリプト(TfsBuild.projファイル) | ||||||||||||||||||
アセンブリ番号の自動更新はコンパイル前に実施する必要があるため、BeforeCompileターゲットをオーバーライドして、そこに更新処理を追加する。 | ||||||||||||||||||
|
○ケース2:複数環境用のパッケージ作成
これは本番環境と検証環境でWeb.configファイルの内容を書き換えるための方法だ。チーム・ビルドのドロップ処理(=出力/配置処理)をカスタマイズし、環境ごとにWeb.configファイルが構成されたビルド結果を出力できる。
Web.configファイルを修正する方法はいくつかあるが、今回は、MSBuild Community TasksのXmlMassUpdateタスクを利用する。XmlMassUpdateタスクは、複数のXMLファイルを簡単にマージすることが可能だ。
例えば、開発環境用に作られているWeb.configファイルをベースに、検証環境や本番環境などの環境ごとに異なる差分情報を記述したWeb.config.substitutionsファイルの内容を(環境別に)マージして、各環境用のWeb.configファイルを生成する。XmlMassUpdateタスクの詳細については本稿では割愛するが、詳細は、以前に筆者がブログに記載したものがあるので、そこを参考にしていただきたい。
|
|||||||||||||||
複数環境用のパッケージ作成スクリプト(TfsBuild.projファイル) | |||||||||||||||
XmlMassUpdateタスクを使って、Web.configファイルとWeb.config.substitutionsファイルをマージして、環境ごとのWeb.configファイルを作成する。 | |||||||||||||||
|
次のコードは、Web.config.substitutionsファイルの例。
|
||||||
Web.config.substitutionsファイルのサンプル | ||||||
検証環境や本番環境などの環境ごとに異なる差分情報を記述している。 | ||||||
|
○ケース3:データベースの差分DDL文の作成
Visual Studio 2008 Database Editionを利用することで、特定のデータベースと、ビルド結果のデータベース・スキーマの差分DDL文(つまりは、ALTER文)を自動生成することが可能だ。といっても、完全に信頼できるというレベルには正直、達成しておらず、あくまでSQL生成の元ネタとして利用するにとどめた方が無難だ。それでも、かなり強力な機能である。
次のコードは、差分DLL文を作成するスクリプトの例だ。
|
||||||
差分DLL文作成スクリプト(TfsBuild.projファイル) | ||||||
Visual Studio 2008 Database Editionの機能を使って、差分DLL文を作成する。 | ||||||
|
[参考]チーム・ビルドと本番環境がつながっていない場合の差分SQL文の出力方法 |
Visual Studio 2008 Database Editionで追加された“VSDBCMD.exe”は、コマンド・プロンプトからデータベースを配置することができるツールであるが、もう1つの大きな特徴として、Visual Studioがインストールされていない環境でも利用可能であることが挙げられる。 つまり、TFSやチーム・ビルドが稼働している開発環境と、スキーマの比較先である本番環境のデータベースが物理的に切断されていても、VSDBCMD.exeファイルの機能を利用した差分スキーマ(=本番稼働しているデータベースとビルド結果に含まれるデータベース・スキーマの差分)を生成することができる。 詳細は、MSDNのデータベースのビルドおよびステージング環境または稼働環境への配置を参照してほしい。 |
■まとめ
今回は、チーム・ビルドの概要とカスタマイズのノウハウについて紹介した。ここで紹介したものはごく一般的なものであり、ほかにも、ClickOnceのマニフェスト・ファイルの作成や、.MSIインストーラの作成、コード・ドキュメント、検証環境配置後の機能テストも自動で実行してしまう……など、ビルド・プロセスで実行しなければならないことは多い。
が、その基本は本稿で説明したとおりで、後はMSBuildのテクニック次第の話であり、そんなに難しいことはない。皆さんのプロジェクトでもチーム・ビルドを活用し、プロジェクトをどんどんスピーディなものにしてもらえればと思う。
INDEX | ||
[連載] Team Foundation Server 2008の下流工程への適用 | ||
第4回 チーム・ビルドによる開発の安定化 | ||
1.チーム・ビルドのアーキテクチャ | ||
2.自動ビルドの効果と種類 | ||
3.ビルド・プロセスのカスタマイズ | ||
「Team Foundation Server 2008の下流工程への適用」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|