2008-08-04 5 views
26

私はMSBuildを使用して私のものを構築しています。 Build ServerのようにCruiseControl.netを使用したいと思います。nAntはまだサポートされており、.net 3.5/VS2008に適していますか?

現在、CCNETは多くのことを指摘していますが、ccnetがプロジェクト構成やmsbuildを使ってできることのほとんどをccnetが処理できるかのように見えます。また、nAntは少しサポートされていないようですが、ベータリリースはほぼ一歳です。

要約:私は実際にMSBuildに満足しています(特に「公式」コンパイラのフロントエンドなので)、nAntには少し不快ですが、早期に判断したくありません。

MSBuildよりnAntを使用する理由は何ですか?特に、機能面でナントと少し重なり合っているようだ(と自動ビルド関連のものを追加する)と思われるccnetの場合

答えて

15

MSBuildに満足していれば、私はMSBuildに固執します。これは、あなたが最初に学ぶツールがあなたが好むものである場合の1つかもしれません。私はNAntで始まり、MSBuildには慣れていません。私は彼らがどちらもかなりの時間の周りにいると確信しています。

2つの間にいくつかの基本的な違いがあります。おそらくthis conversation between some NAnt fans and a Microsoftieで最もよく強調されています。

興味深いことに、Jeremy Millerは、昨年の正確な反対の質問on his blogを尋ねました。

5

私の意見では、それはもっと個人的な好みの質問です。 nAntは素晴らしいフレームワークであり、MSBuildはほぼ可能です。カスタム・タスクを(両方のフレームワークで)容易に開発できるため、実行する必要があるほとんどすべてを達成できます。

あなたの質問の「まだサポートされている」部分には答えられませんが、あなたがすでにnAntに慣れていればそれはおそらく実行可能です。あなた(またはあなたのグループの誰か)がMSBuildに精通していれば、これも良い方法です。

1

正直なところ、あなたの環境に適したものによります。多くの非Microsoftツール、nunit、ccnet、ncoverを使用している場合。あなたはおそらくナントとのより良いサポートを見つけるでしょう。また、MSTest、TFSBuildを使用している場合は、MSBuildがより良い環境になっている可能性があります。私は両方を学び、あなたの環境に合ったものをよりスムーズに使うことができます。

3

nAntで使用しているカスタムタスクが既にたくさんある場合は、それに固執してください。MSBuildではあまり効果がありません。それは、MSBuildがそのコアでは不可能なことは何もできないように思われるということです。どちらも外部ツールを呼び出すことができ、両方とも.Netベースのカスタムタスクを実行することができ、両方ともそこに多数のコミュニティタスクがあります。

MSBuildを使用しているのは同じ理由です。これはVSのデフォルトのビルドシステムであり、nAnt固有のものはありませんでした。

MSBuildCommunityTasksは、最初から優れたサードパーティのタスクベースであり、VSAとSubversionのサポートを含めて、これまでnAntでやったことのほとんどをカバーしています。

1

CC.NETはビルドスクリプトテクノロジではなく、単にビルドサーバーテクノロジです。私たちは仕事でCC.NETを使用して、問題なくMSBuildビルドスクリプトを非常にうまく呼び出すことができます。

NAntは、より成熟したビルドスクリプティング言語ですが、どちらも同じように機能します。私がMSBuildで行うことができないNAntで行うことができることはほとんどないので、どちらがより快適であるかが実際に分かります。NAntがいかにアクティブであるかについては、最後のリリースがあったときには行ってはいけません...最後の夜間のビルドがあったときに行ってください。 NAntはリリースの間に長い時間がかかる傾向がありますが、夜間のビルドは通常かなり安定しています。

0

多くの人が既に示しているように、ここでの答えは「それは依存している」です。 繰り返し操作のようないくつかのものがありますが、これらはNAntでははるかに簡単でクリーンです。これについては、the MSDN forumsを参照してください。

0

私は、特に大きなプロジェクトでは、ハイブリッドアプローチも使用できることがわかりました。私たちのナントスクリプトの多くは、新しいコンポーネントが開発されたときにmsbuildに変換されています。両方とも同じ主要な機能をサポートしていますが、一方ではネイティブにサポートされているタスクを見つけたらお互いを呼び出すことができます。

MSBuildで始まる新しい.NET開発では、ソリューションファイルを直接実行できるため、時間を大幅に節約できます。他のタスク(ソース管理、デプロイメントなど)を実行するためのメインコンパイルからの拡張は非常にうまく機能します。

関連する問題