@ledsun blog

無味の味は佳境に入らざればすなわち知れず

技術で戦え!MSBuildでASP.NETアプリケーションを自動発行

正確にはVisualStudio2008以前のASP.NET WebFormのWebアプリケーションプロジェクトの話です。

常時結合とは

常時結合とは

アジャイル開発ではソフトウェアをいつでもリリースできる状態に保つために、開発中もアプリケーションが常に正常に動くことを目指します。定期的にリポジトリ上の最新ソースをビルドしてステージング(検証)環境に配置し、動作を確認をします。手作業で行っても良いのですが、タイマーやリポジトリへのコミットをトリガにして自動的に行うことを、常時結合(Continuous Integration)と言います。

配置の自動化は技術で解決!

常時結合での動作確認は開発するソフトウェアの性質によってTDDのテストを流用したり、人力で動作確認をしたり様々な方法を使います。しかしリポジトリ上のソースを配置する作業は動作確認方法と違い共通です。つまり、どの現場でも役に立ちます。また、全開発者が適切なテストケースを書けるように教育するとか、何回も動作確認しているうちに慣れて集中力を欠いて単純な見落としをするのを防ぐといった人間系の課題ではなく、単純に技術的な課題です。技術者としては腕の見せ所です。

ASP.NETのWebアプリケーションの場合

ASP.NETのWebアプリケーションの配置は、通常以下の手順で行います。

  1. VisualStudioを手で操作して「発行」
  2. 「発行」したファイルをIISの公開ディレクトリにコピー

「発行」を自動化するには、MSBuild用のXMLファイルを作成しMSBuildコマンドを実行すれば良い。ですが、VisualStuiod2008には発行用のXMLファイルを生成する機能がありません。XMLファイルは自作します。
「発行」した後は、ファイルコピーなのでbatファイルやvbsファイルを作成して自動化できます。「Webサイト」の場合は、開発ファイルをIISの公開ディレクトリコピーすればよいので、こちらもバッチファイルを書けばOKです。

MSBuildの場所

MSBuildコマンドは以下のフォルダにあります。

c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe

3.5や2.0のフォルダにもあります。2.0用のMSBuildではVisualStudio2008のソリューションファイルをビルドできません。が、最新版を使えば問題ありません。

発行用のXMLファイル

PublishSampleProject.xmlとして以下のXMLファイルを作りましょう。
C:/project/PublishSampleProject/配下にVB.NETのWebアプリケーションプロジェクトがあることを想定します。

MsBuildでは_CopyWebApplicationタスクでプロジェクトを発行します。三つのプロパティを指定します。

  • Configuration:ソリューションの構成。通常はReleaseで問題ない
  • OutDir:中間ファイル(リリースビルドのbinフォルダの中身っぽい)置き場
  • WebProjectOutputDir:発行先

中間ファイル置き場ぐらい自前でなんとかしてくれ、せめて要らなくなったファイルは消してくれと思いますが、とりあえず発行はできます。

実行

以下のコマンドで実行できます。

c:\>c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe PublishSampleProject.xml

C:/Temp/msbuildTest/publish配下に発行したファイルができています。