プログラマとプロマネのあいだ

プログラマもやるし、プロマネもやるし、たまに似非アーキとか営業っぽいこともやる

NAntはもう流行ってないらしい。替わりにMSBuildってのが使えるらしい。

MicrosoftNAnt(のMS版)をSDKに組み込んだってことですかね。
とりあえず以下のようなことが出来るbuild.xmlを作ってみました。

  • 作業ディレクトリを消す
  • Subversionからプロジェクトをチェックアウト
  • プロジェクトをビルドする

build.xmlはこんなの。

<?xml version="1.0" encoding="shift-jis"?>
<Project DefaultTargets="build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="svn">
        <RemoveDir Directories="WindowsApplication1"/>
        <Exec Command="svn checkout file:///c:/work/svnrepos/WindowsApplication1 WindowsApplication1"/>
    </Target>

    <Target Name="build" DependsOnTargets="svn">
        <MSBuild Projects="WindowsApplication1/WindowsApplication1.sln" Properties="Configuration=Release"/>
    </Target>
</Project>

実行してみた結果はこんな感じ。

C:\work\Technique\Language\VB.NET\NAnt>msbuild build.xml
Microsoft (R) Build Engine Version 3.5.30729.1
[Microsoft .NET Framework, Version 2.0.50727.3053]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

2008/12/01 23:32:58 にビルドを開始しました。
ノード 0 上のプロジェクト "C:\work\Technique\Language\VB.NET\NAnt\build.xml" (既
定のターゲット)。
  ディレクトリ "WindowsApplication1" は存在しません。省略します。
  A    WindowsApplication1\WindowsApplication1
  A    WindowsApplication1\WindowsApplication1\WindowsApplication1.vbproj
  A    WindowsApplication1\WindowsApplication1\bin
  A    WindowsApplication1\WindowsApplication1\bin\Release
  A    WindowsApplication1\WindowsApplication1\bin\Debug
  A    WindowsApplication1\WindowsApplication1\bin\Debug\WindowsApplication1.vs
  host.exe
  A    WindowsApplication1\WindowsApplication1\bin\Debug\WindowsApplication1.vs
  host.exe.manifest
  A    WindowsApplication1\WindowsApplication1\Form1.Designer.vb
  A    WindowsApplication1\WindowsApplication1\Form1.vb
  A    WindowsApplication1\WindowsApplication1\obj
  A    WindowsApplication1\WindowsApplication1\obj\Release
  A    WindowsApplication1\WindowsApplication1\obj\Debug
  A    WindowsApplication1\WindowsApplication1\obj\Debug\TempPE
  A    WindowsApplication1\WindowsApplication1\obj\Debug\TempPE\My Project.Reso
  urces.Designer.vb.dll
  A    WindowsApplication1\WindowsApplication1\My Project
  A    WindowsApplication1\WindowsApplication1\My Project\Resources.Designer.vb
  A    WindowsApplication1\WindowsApplication1\My Project\Settings.settings
  A    WindowsApplication1\WindowsApplication1\My Project\AssemblyInfo.vb
  A    WindowsApplication1\WindowsApplication1\My Project\Settings.Designer.vb
  A    WindowsApplication1\WindowsApplication1\My Project\Application.Designer.
  vb
  A    WindowsApplication1\WindowsApplication1\My Project\Application.myapp
  A    WindowsApplication1\WindowsApplication1\My Project\Resources.resx
  A    WindowsApplication1\WindowsApplication1\WindowsApplication1.vbproj.user
  A    WindowsApplication1\WindowsApplication1.suo
  A    WindowsApplication1\WindowsApplication1.sln
  リビジョン 1 をチェックアウトしました。
プロジェクト "C:\work\Technique\Language\VB.NET\NAnt\build.xml" (1) は、ノード 0
 上に "C:\wo
rk\Technique\Language\VB.NET\NAnt\WindowsApplication1\WindowsApplication1.sln"
(2) をビルドしています (既定のターゲット)。
  ソリューション構成 "Release|Any CPU" をビルドしています。
プロジェクト "C:\work\Technique\Language\VB.NET\NAnt\WindowsApplication1\Windows
Appli
cation1.sln" (2) は、ノード 0 上に "C:\work\Technique\Language\VB.NET\NAnt\Windo
wsAppl
ication1\WindowsApplication1\WindowsApplication1.vbproj" (3) をビルドしています
(既定のターゲッ
ト)。
  Processing 0 EDMX files.
  Finished processing 0 EDMX files.
CoreResGen:
  リソース ファイル "My Project\Resources.resx" を "obj\Release\WindowsApplicati
on1.Reso
  urces.resources" に処理しています。
CopyFilesToOutputDirectory:
  "obj\Release\WindowsApplication1.exe" から "bin\Release\WindowsApplication1.ex
e
  " へファイルをコピーしています。
  WindowsApplication1 -> C:\work\Technique\Language\VB.NET\NAnt\WindowsApplicat
  ion1\WindowsApplication1\bin\Release\WindowsApplication1.exe
  "obj\Release\WindowsApplication1.pdb" から "bin\Release\WindowsApplication1.pd
b
  " へファイルをコピーしています。
  "obj\Release\WindowsApplication1.xml" から "bin\Release\WindowsApplication1.xm
l
  " へファイルをコピーしています。
プロジェクト "C:\work\Technique\Language\VB.NET\NAnt\WindowsApplication1\Windows
Appli
cation1\WindowsApplication1.vbproj" (既定のターゲット) のビルドが完了しました。

プロジェクト "C:\work\Technique\Language\VB.NET\NAnt\WindowsApplication1\Windows
Appli
cation1.sln" (既定のターゲット) のビルドが完了しました。

プロジェクト "C:\work\Technique\Language\VB.NET\NAnt\build.xml" (既定のターゲッ
ト) のビルドが完了しまし
た。


ビルドに成功しました。
    0 警告
    0 エラー

経過時間 00:00:01.71

C:\work\Technique\Language\VB.NET\NAnt>

さくっと動きました。antと違って動きも軽いし、結構良いのでは。


ちなみにMSBuildのリファレンスは、
http://msdn.microsoft.com/ja-jp/library/0k6kkbsd.aspx
にあります。