質問

重複の可能性:
NAnt と MSBuild、どちらをいつ選択するべきですか?

最適なビルドツールは何ですか 。ネット?

現在使用しています NAnt しかし、それは私が経験があるからにすぎません . 。は MSBuild 好ましいですか?

役に立ちましたか?

解決

実際には以下の組み合わせを使用します NAnt そして MSBuildクルーズコントロール. 。NAnt はスクリプト フロー制御に使用され、MSBuild を呼び出してプロジェクトをコンパイルします。物理ビルドがトリガーされた後、NAnt を使用して個々のプロジェクトのビルド出力を共有の場所に公開します。

これはわかりません 最高の プロセス。私たちの多くはまだ優れた構築ツールを探していると思います。最近 .NET Rocks で聞いた有望な話が 1 つあります。 362話, 、 は ジェームズ・コヴァックのPSake, 、彼は完全に PowerShell に基づいたビルド システムを開発しました。PowerShell でできることは理論的にはかなり無限であるため、これは非常に有望に思えます。

他のヒント

ただ投げたいだけです ファイナルビルダー ミックスに加えます。無料ではありませんが、編集にうんざりしている場合は、 XML ファイルがあり、もう少し良いものが必要です (IMO) 働きやすい環境ですので、ぜひ試してみてください。

私はそれらすべてを使用して作業してきましたが、常に FinalBuilder に戻ってきました。

と呼ばれる別の新しいビルド ツール (非常にインテリジェントなラッパー) があります。 NUBuild. 。軽量でオープンソースであり、セットアップが非常に簡単で、メンテナンスはほとんど不要です。私はこの新しいツールがとても気に入っており、これをプロジェクトの継続的なビルドと統合のための標準ツールにしました (75 人の開発者で約 400 のプロジェクトがあります)。やってみて。

http://nubuild.codeplex.com/

  • 使いやすいコマンドラインインターフェース
  • すべてをターゲットにする能力 。ネット フレームワークバージョン、つまり1.1、2.0、3.0、および3.5
  • XMLベースの構成をサポート
  • プロジェクトとファイルの両方の参照をサポートします
  • 特定のプロジェクトの「完全な順序付けられたビルドリスト」を自動的に生成します - タッチメンテナンスなし。
  • 円形の依存関係を検出および表示する機能
  • 並列ビルドの実行 - 生成されたビルドリスト内のプロジェクトのどれを個別にビルドできるかを自動的に決定します。
  • プロキシ アセンブリを処理する機能
  • たとえば、「%完成」、「現在のステータス」などを示す、ビルドプロセスの視覚的な手がかりを提供します。
  • XMLとテキスト形式の両方で詳細な実行ログを生成します
  • と簡単に統合クルーズコントロール.NET 継続的な統合システム
  • 2.0 +バージョンをターゲットにするときにXmlloggerなどのカスタムロガーを使用できます
  • エラーログを解析する機能
  • ユーザー指定の場所に構築されたアセンブリを展開する機能
  • ソースコードをソースコントロールシステムと同期する機能
  • バージョン管理機能

ビルドには完全に MSBuild を使用します。これは、ツリー内で .csproj ファイルを検索してビルドする一般的な MSBuild スクリプトです。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
  <UsingTask AssemblyFile="$(MSBuildProjectDirectory)\bin\xUnit\xunitext.runner.msbuild.dll" TaskName="XunitExt.Runner.MSBuild.xunit"/>
  <PropertyGroup>
    <Configuration Condition="'$(Configuration)'==''">Debug</Configuration>
    <DeployDir>$(MSBuildProjectDirectory)\Build\$(Configuration)</DeployDir>
    <ProjectMask>$(MSBuildProjectDirectory)\**\*.csproj</ProjectMask>
    <ProjectExcludeMask></ProjectExcludeMask>
    <TestAssembliesIncludeMask>$(DeployDir)\*.Test.dll</TestAssembliesIncludeMask>
  </PropertyGroup>

  <ItemGroup>
    <ProjectFiles Include="$(ProjectMask)" Exclude="$(ProjectExcludeMask)"/>
  </ItemGroup>

  <Target Name="Build" DependsOnTargets="__Compile;__Deploy;__Test"/>

  <Target Name="Clean">
    <MSBuild Projects="@(ProjectFiles)" Targets="Clean"/>
    <RemoveDir Directories="$(DeployDir)"/>
  </Target>

  <Target Name="Rebuild" DependsOnTargets="Clean;Build"/>

  <!--
  ===== Targets that are meant for use only by MSBuild =====
  -->
  <Target Name="__Compile">
    <MSBuild Projects="@(ProjectFiles)" Targets="Build">
      <Output TaskParameter="TargetOutputs" ItemName="AssembliesBuilt"/>
    </MSBuild>
    <CreateItem Include="@(AssembliesBuilt -> '%(RootDir)%(Directory)*')">
      <Output TaskParameter="Include" ItemName="DeployFiles"/>
    </CreateItem>
  </Target>

  <Target Name="__Deploy">
    <MakeDir Directories="$(DeployDir)"/>
    <Copy SourceFiles="@(DeployFiles)" DestinationFolder="$(DeployDir)"/>
    <CreateItem Include="$(TestAssembliesIncludeMask)">
      <Output TaskParameter="Include" ItemName="TestAssemblies"/>
    </CreateItem>
  </Target>

  <Target Name="__Test">
    <xunit Assembly="@(TestAssemblies)"/>
  </Target>
</Project>

(ちょっと濃かったらごめんなさい。Markdown は空白行を削除しているようです。)

ただし、概念を理解すれば非常に簡単で、すべての依存関係は自動的に処理されます。ここでは、多くのロジックが組み込まれた Visual Studio プロジェクト ファイルを使用していることに注意してください。しかし、このシステムを使用すると、Visual Studio IDE 内でもコマンド ラインでもほぼ同じようにビルドでき、さらに柔軟に追加することができます。上記のスクリプトにある xUnit テストのような正規ビルドに追加します。

1 つの PropertyGroup はすべての構成が行われる場所であり、ビルドから特定のプロジェクトを除外したり、新しいテスト アセンブリ マスクを追加したりするなどのカスタマイズが可能です。

ItemGroup は、ツリー内のすべての .csproj ファイルを検索するロジックが発生する場所です。

次に、make、nAnt、または MSBuild に精通しているほとんどの人が従うことができるターゲットがあります。Build ターゲットを呼び出すと、__Compile、__Deploy、__Test が呼び出されます。Clean ターゲットは、すべてのプロジェクト ファイルに対して MSBuild を呼び出してディレクトリをクリーンアップし、グローバル展開ディレクトリが削除されます。リビルドでは、Clean を呼び出してから Build を呼び出します。

レーキ アルバコアは素晴らしい組み合わせです。XML ではなく Ruby のパワー。

.NET オープンソース 5 - Rake と Albacore による .NET オートメーション (Liam McLennan 著) [テクパブ.com]

私たちが使っているのは 跳ねる、弾む, 、C# でのよりクリーンなビルド スクリプトのフレームワーク。

市販のソフトを使っているのですが、 自動ビルドスタジオ ビルド目的のため。

私たちは MSBuild を使用しています。これは、Visual Studio 2005 (現在は Visual Studio 2008) から始めており、MSBuild はすでに SDK に「組み込まれている」ため、ビルド サーバーのメンテナンスが少なくなります。これは実際には NAnt クローンです。どちらのツールも、コード内でカスタム ビルド タスクを作成できるという点で無限の柔軟性があり、また、適切なコミュニティ ビルド タスクのセットがすでに作成されています。

Python、BOO、Ruby などの動的スクリプト言語を使用する。ビルド スクリプトを作成して維持することは、NAnt のような XML ベースのスクリプトの良い代替手段となる可能性があります。(XML よりも読みやすい傾向があります。)

私は両方を使用したことがありますが、 NAnt. 。どちらが他よりも「優れている」と言うのは私にとって非常に難しいです。

それはまた、 あなたは構築しています。の MSBuild SDC タスク ライブラリ にはいくつかの特別なタスクがあります。たとえば、 広告, ビズトーク, 、など。

このライブラリには、次のタスクを含む300を超えるタスクが含まれています。Webサイトの作成、アプリケーションプールの作成、ActiveDirectoryユーザーの作成、ランニング FXコップ、仮想サーバーの構成、zipファイルの作成、構成 COM+, 、フォルダー共有の作成、にインストールします GAC, 、設定中 SQLサーバー、Biztalk 2004およびBiztalk 2006などの構成

私は MSBuild と NAnt の両方を使用しましたが、デフォルトで必要な構成がはるかに少ないため、MSBuild の方が好きです。物事を複雑にしすぎて、多くの構成ジャンクを含む MSBuild をロードすることもできますが、最も単純な場合は、ソリューション/プロジェクト ファイルを指定するだけで実行できます。これは、ほとんどの場合、ほとんどの場合、次のとおりです。十分。

UppercuT は NAnt を使用してビルドしており、非常に使いやすいビルド フレームワークです。

自動ビルドは、ほとんどのプロジェクトで (1) ソリューション名、(2) ソース管理パス、(3) 会社名だけで簡単に実行できます。

http://projectuppercut.org/

ここにいくつかの良い説明があります: アッパーカット

一般的に言えば、MSBuild に比べて NAnt のほうが柔軟性が高いという印象を受けますが、(私の比較的単純なニーズでは) これまでのところ後者で問題ありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top