重複の可能性:
NAnt または MSBuild、どちらをいつ選択するか?
.NETに最適なビルド ツールは何ですか?
私は現在NAntを使用していますが、それはAntの経験があるからです。MSBuildが優先されますか?
重複の可能性:
NAnt または MSBuild、どちらをいつ選択するか?
.NETに最適なビルド ツールは何ですか?
私は現在NAntを使用していますが、それはAntの経験があるからです。MSBuildが優先されますか?
実際にはNAntとMSBuildをCruiseControlと組み合わせて使用します。NAnt はスクリプト フロー制御に使用され、MSBuild を呼び出してプロジェクトをコンパイルします。物理的なビルドがトリガーされた後、NAnt を使用して個々のプロジェクトのビルド出力を共有の場所に発行します。
これが最良のプロセスであるかどうかはわかりません。私たちの多くはまだ優れたビルド ツールを探していると思います。最近 .NET Rocks のエピソード 362で聞いた有望な話の 1 つは、James Kovac の PSake です。これは、彼が完全に PowerShell に基づいたビルド システムです。PowerShell でできることは、理論上かなり無限であるため、非常に有望に思えます。
FinalBuilderをミックスに投入したいと思います。これは無料ではありませんが、XMLファイルの編集にうんざりしていて、もう少し優れた ( IMO ) 環境で作業したい場合は、試してみてください。
私はそれらすべてを使用してきましたが、常に FinalBuilder に戻ってきました。
NUBuildと呼ばれる別の新しいビルド ツール (非常にインテリジェントなラッパー) があります。軽量でオープンソースであり、セットアップが非常に簡単で、メンテナンスはほとんど必要ありません。私はこの新しいツールをとても気に入っており、プロジェクトの継続的なビルドと統合のための標準ツールにしています (75 人の開発者で約 400 のプロジェクトがあります)。やってみて。
ビルドには完全に 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 を呼び出してディレクトリをクリーンアップし、グローバル展開ディレクトリを削除します。Rebuild は Clean を呼び出してから Build を呼び出します。
レーキとアルバコアは素晴らしい組み合わせです。XML を使用しない Ruby のパワー。
.NET オープン ソース 5 - Liam McLennan による Rake と Albacore による .NET 自動化[Tekpub.com]
Visual Studio 2005 (現在は Visual Studio 2008) から開始し、MSBuild は既に SDK に "組み込まれている" ため、MSBuild を使用します。ビルド サーバーのメンテナンスは少なくて済みます。これは本当に NAnt のクローンです。どちらのツールも、コードでカスタム ビルド タスクを作成できるという点で無限の柔軟性を備えており、適切なコミュニティ ビルド タスクのセットが既に作成されています。
C# のクリーン ビルド スクリプトのフレームワークであるBounceを使用しています。
ビルドには商用ソフトウェアのAutomated Build Studioを使用しています。
私は両方を使用しており、NAntを好みます。一方が他方よりも「優れている」と言うのは本当に難しいです。
Python、BOO、Ruby などの動的スクリプト言語を使用してビルド スクリプトを作成および維持することは、NAnt などの XML ベースのスクリプトに代わる良い方法かもしれません。(XML よりも読みやすくなる傾向があります。)
また、何を構築するかによっても異なります。MSBuild SDC タスク ライブラリには、いくつかの特別なタスクがあります。たとえば、AD、BizTalkなど。
このライブラリには、Web サイトの作成、アプリケーション プールの作成、ActiveDirectory ユーザーの作成、 FxCopの実行、仮想サーバーの構成、zip ファイルの作成、COM+の構成、フォルダー共有の作成、 GACへのインストール、 SQL Serverの構成など、300 を超えるタスクが含まれています。 、BizTalk 2004 および BizTalk 2006 の構成など。
一般的に言えば、NAnt は MSBuild に比べて柔軟性が高いという印象を受けますが、(私の比較的単純なニーズでは) これまでのところ MSBuild で問題ありませんでした。
私は MSBuild と NAnt の両方を使用してきましたが、主にデフォルトで必要な構成がはるかに少ないため、MSBuild の方がずっと好きです。物事を過度に複雑にし、MSBuild を多くの構成ジャンクでロードすることもできますが、最も単純な方法として、ソリューション/プロジェクト ファイルをポイントして実行することができます。ほとんどの場合、ほとんどの場合、足りる。