.NETアプリケーションのかなり大きなポートフォリオの維持に携わっています。また、ポートフォリオには、他のプラットフォーム(ネイティブC ++、ECLIPSフォームなど)の上に構築されたレガシーアプリケーションがあります。
NAntの上に、これらのすべてのアプリケーションのビルドを管理する複雑なビルドフレームワークがあります。ビルドフレームワークはNAntを使用してさまざまなことを行います。
- Subversionからコードを引き出し、Subversionでタグを作成する
- MSBuild for .NETまたは他のプラットフォームの他のコンパイラを使用してコードをビルドします
- AssemblyInfoファイル内を調べてバージョン番号を増分する
- ビルド/リリースに含めるべきではない特定のファイルを削除する
- コードをリリースフォルダにリリース
- バックアップ用にZipコードを作成
- Windowsサービスを展開します。それらを開始および停止する
- 等。
それらのほとんどはNAntだけで実行できますが、NAntが環境に固有のいくつかのことを実行するための拡張タスクをいくつか作成しました。また、上記のプロセスのほとんどは汎用化されており、さまざまなアプリケーションビルドスクリプトの多くで再利用されているため、ロジックを繰り返さないでください。したがって、これは単純なNAntコードではなく、単純なビルドスクリプトでもありません。ビルドを実行するために一緒に来るNAntファイルは数十あります。
最近、私はいくつかの理由でNAntに不満を感じています。(1)構文がひどい-XMLの上にあるプログラミング言語を維持するのは本当に恐ろしいです。(2)プロジェクトは蔓延してしまったようです。最近は大量の更新が行われておらず、実際には誰も舵を取っていないようです。.NET 4で動作するようにしようとすると、このアクティビティがないためにいくつかの問題が発生します。
それで、その背景のすべてを片付けて、ここに私の質問があります。上記のリストに基づいて達成したいことがいくつかあり、私は主に.NETショップにいるが、.NET以外のプロジェクトもビルドする必要があることを考えると、NAntに代わる代替案がありますか?に切り替えますか?
私のレーダー上のものが含まPowerShellの(の有無にかかわらずpsake)、MSBuildのを自分自身、そしてによって熊手。これらにはすべて長所と短所があります。たとえば、MSBuildは十分強力ですか?私はそれを何年も前に使用したことを覚えており、NAntほど強力ではなかったようです。本当にrakeを使用してビルドを行うためにチームにRubyを学習させたいですか?psakeは本当に自分のポートフォリオを固定するのに十分なほど成熟したプロジェクトですか?Powershellは「金属に近すぎる」ので、自分でビルドライブラリを作成して、それをそのまま使用するためにpsakeと同じようにする必要がありますか?
他に検討すべきツールはありますか?非常に複雑な.NETポートフォリオの保守に携わっていた場合、どのビルドツールを検討しますか?あなたのチームは現在何を使用していますか?