« 2013年5月 | トップページ | 2013年10月 »

2013年6月

2013年6月 4日 (火)

TFServiceでのビルド中に外部プログラムを実行する

ネット上でこんな話が出ていたので、ちょっと確認してみました。

せっかくTFServiceのBuildサービスでWindowsストアアプリのビルドができるようになったので、ストアアプリのプロジェクト(WinStorApp01)を作成。
TFService上でチームプロジェクト(StoreAppTest1)を作成し、とりあえずチェックインします。
外部プログラム格納用フォルダとして「Utils」フォルダを作成し、引数に指定された文字列をファイルに出力するバッチファイル(TestWrite.bat)を追加します。
フォルダ構成はこんな感じ。
101

プロジェクトのビルド時に外部プログラムを実行する場合、一番簡単なのはプロジェクトのプロパティで、「ビルドイベント」に実行したいプログラムを指定しておくことです。
102

今回は、ビルド後に作成したバッチファイルを実行させてみます。
実際にビルドを実行すると、出力結果フォルダにファイルが作成され、「"The End!"」が出力されています。
103

※今回はビルド定義でステージング場所を「Drops」にしています。
104

ここで注意点が3つあります。

1つ目は、フォルダ構成の指定を勘違いしないことです。(自分がボケてただけですが)
編集画面でフォルダの位置などを「マクロ」で指定することができます。
ビルドサービスではどのフォルダで実行されるか不定ですので、相対パスで記述するためにマクロで記述するほうがいいのですが、自分が勘違いしていたのが「$(SolutionDir)」の扱いです。
「$(SolutionDir)」はVSのソリューションフォルダのことですが、TFSのチームプロジェクトフォルダは「$(SolutionDir)」の親になりますので、「StoreAppTest1\Utils」を参照するためには、「$(SolutionDir)Utils」ではなく「$(SolutionDir)..\Utils」(←「..\」を追加)と指定する必要があります。

チームプロジェクト内にVSのソリューションが1つだけなら、ソリューションフォルダ配下においてもいいのですが、チームプロジェクト内に複数のVSソリューションが存在する場合はソリューションごとに配置する必要が無いので、今回のようにチームプロジェクトフォルダ配下に置いたほうがいいかなと思います。

2つ目は「日本語が通らない」ことです。
引数の「"The End!"」を「"終わった"」と指定してみたのですが、出力結果が「"?????"」といった感じで化けてしまいました。

3つ目は、ビルド定義の作業フォルダに、「Utils」を追加するのを忘れないことです。
(自分は追加し忘れてて「パスが見つからない」と怒られました^ ^;)
105


インストーラーでインストールしなくても実行できるプログラムであれば、こんな感じで動かせるようになります。

« 2013年5月 | トップページ | 2013年10月 »