可能的重复:
NAnt 或 MSBuild,该选择哪一个以及何时选择?

最好的构建工具是什么 。网?

我目前使用 南安特 但只是因为我有经验 蚂蚁. 。是 微软构建 首选?

有帮助吗?

解决方案

我们实际上使用了以下组合 南安特微软构建巡航控制. 。NAnt用于脚本流程控制并调用MSBuild来编译项目。触发物理构建后,NAnt 用于将各个项目构建输出发布到共享位置。

我不确定这是 最好的 过程。我认为我们中的许多人仍在寻找出色的构建工具。我最近在 .NET Rocks 上听到一件有希望的事情, 第362话, , 是 詹姆斯·科瓦奇的 PSake, ,一个完全基于 PowerShell 的构建系统。这听起来确实很有希望,因为从理论上讲,使用 PowerShell 可以做的事情是相当无限的。

其他提示

我只想扔 最终生成器 混合起来。它不是免费的,但如果您厌倦了编辑 XML 文件并想要一个更好的(国际海事组织)工作环境我会尝试一下。

我曾与他们所有人一起工作,并且总是回到 FinalBuilder。

还有另一个新的构建工具(一个非常智能的包装器)称为 NUBuild. 。它是轻量级的、开源的、非常容易设置,并且提供几乎无接触的维护。我真的很喜欢这个新工具,我们已将其作为我们持续构建和集成项目的标准工具(我们有大约 400 个项目,涉及 75 名开发人员)。试试看。

http://nubuild.codeplex.com/

  • 易于使用的命令行界面
  • 能够瞄准所有人 。网 框架版本,即1.1、2.0、3.0和3.5
  • 支持基于XML的配置
  • 支持项目和文件参考
  • 自动为给定项目生成“完整的订购构建列表” - 无触摸维护。
  • 能够检测和显示循环依赖性
  • 执行并行构建 - 自动决定可以独立构建生成的构建列表中的哪些项目。
  • 处理代理程序集的能力
  • 例如,为构建过程提供视觉线索,例如显示“已完成的%”,“当前状态”,等。
  • 生成XML和文本格式的详细执行日志
  • 轻松集成CruiseControl.NET 连续集成系统
  • 定位2.0 +版本时,可以使用自定义记录仪,例如Xmllogger
  • 能够解析错误日志
  • 能够将已构建的组件部署到用户指定的位置
  • 能够将源代码与源控制系统同步的能力
  • 版本管理能力

我完全使用 MSBuild 进行构建。这是我的通用 MSBuild 脚本,用于在树中搜索 .csproj 文件并构建它们:

<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 测试。

一个 PropertyGroup 是所有配置发生的地方,并且可以进行自定义,例如从构建中排除某些项目或添加新的测试程序集掩码。

ItemGroup 是查找树中所有 .csproj 文件的逻辑发生的地方。

然后是大多数熟悉 make、nAnt 或 MSBuild 的人应该能够遵循的目标。如果调用 Build 目标,它会调用 __Compile、__Deploy 和 __Test。Clean 目标对所有项目文件调用 MSBuild,以清理其目录,然后删除全局部署目录。Rebuild 调用 Clean,然后调用 Build。

和长鳍金枪鱼是一个很好的组合。Ruby 的强大而没有 XML。

.NET 开源 5 - 使用 Rake 和 Albacore 的 .NET 自动化,作者:Liam McLennan [Tekpub.com]

我们正在使用 弹跳, ,一个用于使用 C# 编写更清晰的构建脚本的框架。

我用的是商业软件, 自动化构建工作室 出于构建目的。

我们使用 MSBuild,因为我们从 Visual Studio 2005(现在的 Visual Studio 2008)开始,并且 MSBuild 已经“内置”到 SDK 中 - 构建服务器上的维护较少。实际上,它是一个 NAnt 克隆 - 这两个工具都非常灵活,因为它们允许您在代码中创建自定义构建任务,并且两者都已经创建了一组不错的社区构建任务。

使用动态脚本语言,如 Python、BOO、Ruby 等。创建和维护构建脚本可能是基于 XML 的脚本(如 NAnt)的一个很好的替代方案。(它们往往比 XML 更易于阅读。)

我都用过并且更喜欢 南安特. 。我真的很难说一个比另一个“更好”。

这也取决于 什么 你正在建造。这 MSBuild SDC 任务库 有几个特殊任务。例如,对于 广告, 商务谈话, , ETC。

该库中包含300多个任务,包括:创建网站,创建应用程序池,创建ARCIVEDIRECTORY用户,运行 福克斯警察,配置虚拟服务器,创建ZIP文件,配置 通讯+, ,创建文件夹共享,安装到 广汽集团, ,配置 SQL服务器,配置BizTalk 2004和Biztalk 2006,等。

我已经使用过 MSBuild 和 NAnt,而且我更喜欢 MSBuild,主要是因为它默认需要的配置要少得多。尽管您可能会使事情变得过于复杂并使用大量配置垃圾加载 MSBuild,但最简单的是,您可以将其指向解决方案/项目文件并让它运行,在大多数情况下,在大多数情况下,这是足够的。

UppercuT 使用 NAnt 进行构建,它是非常易于使用的构建框架。

对于大多数项目来说,自动化构建就像 (1) 解决方案名称、(2) 源代码控制路径、(3) 公司名称一样简单!

http://projectuppercut.org/

这里有一些很好的解释: 上勾拳

一般来说,我的印象是 NAnt 比 MSBuild 提供了更多的灵活性,而(由于我的需求相对简单)到目前为止我对后者还不错。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top