NAntを試す
2005年11月29日
統括するdefault.build
SimpleCounterディレクトリにdefault.buildを追加します。
これはsrcのdefault.buildとtestのdefault.buildを呼び出すタスクで処理します。
default.buildで行っている事
- まずSimpleCounter.slnをビルドします。
- 次にTest.slnをビルドします。
- 最後にSimpleCounter.slnのSetupプロジェクトをビルドし、Setupパッケージを作ります。
cleanの所抜粋
^ ^ description="Delete all previously compiled binaries."> ^ ^ ^
特別難しい事はしてませんので、後はサンプルを見てください。
これで、nantコマンド一発で、クリーンビルド、テスト、Setupパッケージ作成が行われます。
execタスクを多用すれば何でも出来そうです。
ant + XCodeでも同様のことが出来そうな気がします。
達人プログラマーに書かれている事は、自動化できる所は徹底的に自動化するという事です。
2回行ったことは3回以上あると書かれてた。
NAntはこれで一区切りとします。
参照
NAntからNUnitの実行
まずはnantの設定ファイルcs.buildをsrcディレクトリからtestディレクトリにコピーします。
ついでに設定ファイルの名称としてdefault.buildが良く使われているようなので、cs.buildからdefault.buildに名称を変更してしまいます。(src、test共に)
testのdefault.buildの編集をします。
- テストではSetupプロジェクトは不要なのでnantでSetupプロジェクトの実行で追加した項目を削除します。
- simplacounterをtestに、SimpleCounterをTestに置換します。
- もうひとつTest.exeをTest.dllに変更します。
コマンドプロンプトでtestディレクトリに移動し、nantを実行します。
bin\ReleaseにModel.dllとTest.dllが作られてるのが確認できます。
続いてNUnitでテストするタスクを追加します。
default.buildに以下を追加します。
^
^
^
^
^
^
^
^
^
^
testディレクトリでnant testを実行するとテストが実行され、エラーが表示されるのが確認できます。
注意事項:
NAntではNUnit2.2.0で実行することを想定しているので、NUnitのより新しいバージョン(2.2.2、2.2.3等)をインストールしてる場合はテストを実行しません。
一旦アンインストールして2.2.0をインストールする必要があります。
ディレクトリ構造の変更
達人プログラマーによると、srcとtestディレクトリに分けるとあります。
Javaによる説明なのでVisulaStudio.NETにどう対応させるのが良いのか分かりませんが、無理やり今までのファイルをsrcに移動することにします。
NUnitのテストは独立したソリューションとして作成し、testに入れる事にします。
NUnitは導入済みとして説明します。
- srcディレクトリへ移動
- srcディレクトリを作成します。
- SimpleCounterの今までの全てのファイルをsrcに移動します。
- Testプロジェクトの作成
- Visual Studio.NETを起動します。
- ファイルメニュー->新規作成->プロジェクトを選択します。
- プロジェクトの種類からC#プロジェクトを選択
- テンプレートではクラスライブラリーを選択
- プロジェクト名はTestにします。ディレクトリはSimpleCounter直下になるようにします。
- Class1.cs削除
- TestプロジェクトのClass1.csを選択し、DELキーで削除します。
- Modelプロジェクトの追加
- ファイルメニュー->プロジェクトの追加->既存のプロジェクトを選択
- 前の記事で作成したModel.csprojを選択します。
- 参照の追加
- Testプロジェクトにnunit.frameworkとModelプロジェクトへの参照を追加します。
- TestCounter.csの追加
- プロジェクトメニューからTestCounter.csクラスを追加します。
- TestCounter.csの編集
- 以下参照
^using System;
^using NUnit.Framework;
^using Model;
^
^[TestFixture]
^public class TestCounter
^{
^ private Counter counter = null;
^ [SetUp]
^ public void SetUp() {
^ counter = new Counter();
^ }
^
^ [Test]
^ public void TestConstructor() {
^ Assert.AreEqual(0, counter.Count);
^ }
^
^ [Test]
^ public void TestClear() {
^ counter.Increment();
^ Assert.IsFalse(0 == counter.Count);
^ counter.Clear();
^ Assert.AreEqual(0, counter.Count);
^ }
^
^ [Test]
^ public void TestIncrement() {
^ counter.Increment();
^ Assert.AreEqual(1, counter.Count);
^ counter.Increment();
^ Assert.AreEqual(2, counter.Count);
^ }
^}
モデルプロジェクトの作成
モデルといってもカウンターだけなので少々大げさですが、NUnitでテストすることを考えると独立したプロジェクトにした方が便利だと思います。
- SimpleCounter.slnを開きます。
- Modelプロジェクトの作成
- ファイルメニュー->プロジェクトの追加->新しいプロジェクトを選択
- プロジェクトの種類からC#プロジェクトを選択
- テンプレートではクラスライブラリーを選択
- プロジェクト名はModelにします。
- Class1.cs削除
- ModelプロジェクトのClass1.csを選択し、DELキーで削除します。
- Counter.csの追加
- Modelプロジェクトを選択します。
- プロジェクトメニュー->クラスの追加を選択
- 名称をCounterにし、開くをクリック
- Counterにプロパティ、メソッドを追加します。下参照
- SimpleCounterプロジェクトにModelプロジェトへの参照追加
- SimpleCounterプロジェクトを選択します。
- プロジェクトメニュー->参照の追加を選択。
- プロジェクトタブをクリック
- Modelをダブルクリック
- OKボタンを押す。
- SimpleCounterのユーザーインターフェイス追加
- 後でサンプルを載せますので参照してください。
^public class Counter
^{
^ public Counter() {}
^ public int Count {
^ get { return 0; }
^ }
^ public void Clear() {}
^ public void Increment() {}
^}
2005年11月28日
nantでSetupプロジェクトの実行
Visual Studio.NETを終了しVisual Studoのコマンドプロンプト(*1)からnantを実行してみます。
するとSetupプロジェクトはサポートされていないということでスキップされてしまいます。orz
以下の様にdevenv.comでコマンドラインからSetupプロジェクトを実行できることが分かりましたので、それをNAntの設定に追加します。
devenvだけだとVisual Studioが立ち上がったりしますので.comを付けます。
> devenv.com SimpleCounter.sln /build Release /project SetUp\Setup.vdproj /projectconfig Release
cs.buildに以下を追加します。
^
^
^
^
^
^
^
^
^
^
^
^
^
^
^
^
^
Visual Studio.NETのコマンドプロンプトからnant resetupを実行するとSetupパッケージまで自動で実行されます。
ここまではVisualStudio.NETでしてる事とさほど変わらないのですが、あのくそ重いVisual Studioを立ち上げなくても良くなります。
Setupをビルドする時にVersionとGUIDを書き換える必要があるのですが、今の所はVisual Studio.NETから設定する事になります。という事で結局立ち上げなきゃいけない。
^*1 スタート->プログラムを辿って
^ Visual Stuido.NETのツールの中にあります。
SetUpプロジェクトの追加
NAntを使ってプロジェクトのビルドまで出来ましたが、これだけではつまらないので、インストーラを作るところまで出来るようにします。
まずプロジェクトにSetUpプロジェクトを追加します。
- SimpleCounter.slnを開きます。
- セットアッププロジェクトの作成
- ファイルメニュー->プロジェクトの追加->新しいプロジェクトを選択
- プロジェクトの種類からセットアップ/デプロイメントを選択
- テンプレートではセットアップウイザードを選択
- プロジェクト名は単純にSetupにします。
- OKボタンを押します。
- 次へをクリック
- Windowsアプリケーションのセットアップを作成するを選択し次へ
- SimpleCounterのプライマリー出力をクリックし次へ
- 次へをクリック
- 完了をクリック
- Setupプロジェクトをソリューションに登録
- ソリューションエクスプローラでSimpleCounterソリューションを選択
- プロジェクトメニューからプロパティを選択
- 左のTreeViewで構成を選択
- 右のGridViewでSetupプロジェクトのビルドをチェックします。
- SetUpの実行
- ビルドメニュー->ソリューションのビルドを実行
これでセットアッププロジェクトが追加され、SetUpパッケージが出来ました。
2005年11月26日
cs.buildの中身
projectタグの中にいくつかのtargetがあり、一つのpropertyがあります。
projectではdefaultとしてrebuildターゲットが指定されています。
rebuildはcleanとbuildに依存していて、NAnt実行時に、ターゲットを指定しなければクリーンビルドする様になっています。
cleanは不要なファイルを一掃します。
buildはソリューションのビルドを行います。実際のビルドはbuild.simplecounterを呼び出してSimpleCounter.slnのソリューションをビルドします。
説明になってないなー。
buildファイルの設定
https://livedoor.blogimg.jp/gutskun/imgs/7/c/7cb4a6f3-s.PNG
NAntにさせることは*.buildファイルに指定します。
幸いサンプルがあるのでそれを流用します。
C:?Program Files?nant-0.85-rc3?examples?Solution?cs?WinForms?cs.buildを作成したプロジェクトのフォルダにコピーします。
cs.buildファイルのワードを次のように置換します。
winforms -> simplecounter
WinForms -> SimpleCounter
Visual Studio.NETのコマンドプロンプトを起動し、プロジェクトのあるディレクトリに移動します。
あとはnantと打ち込むとビルドされSimpleCounter.exeが生成されます。
プロジェクト作成
まずは後先を考えずApplicationプロジェクトを作成します。
- Visual Studio.NETで新規プロジェクトを作成します。
- ファイルメニュー>新規作成>プロジェクト~~表示されたダイアログでプロジェクトの種類からC#プロジェクトを選択し、テンプレートではWindowsアプリケーションを選択します。ここではSimpleCounterという名前でプロジェクトを作成しました。
- Visual Studioを終了
NAntのインストール
NAntホームページからダウンロードします。
これを展開して出来たフォルダnant-0.85-rc3を例によってC:\Program Filesに移動します。
C:\Windowsにnant.batを作成し、次の様に書きます。(Win2000ならC:\WINNTに作る)
^@echo off
^"C:\Program Files\nant-0.85-rc3\bin\NAnt.exe" %*
コマンドプロンプトからnantを実行して、Copyrightが表示さればインストール完了です。