nAnt是什么,它如何对我这个C#开发者有用?

nAnt是什么,它如何对我这个C#开发者有用?,c#,.net,visual-studio-2008,nant,C#,.net,Visual Studio 2008,Nant,我总是编译我的项目,并将dll从依赖项项目复制到UI bin文件夹。每次我重新编译我的项目时,经过几天的“复制和粘贴”操作后,我得出结论,我需要一个能自动完成这项工作的工具。经过几次搜索,a发现这个工具是nAnt 我搜索如何开始使用它的信息,但没有找到多少。 所以,我的问题是: 几句话中的nAnt是什么 我怎样才能从中受益 编辑:我不能只添加对依赖项项目的引用,因为它会导致循环依赖项。nAnt是从Java的Ant派生的自动构建工具。它位于以下位置: 您可以使用它来自动化软件的构建和测试 NA

我总是编译我的项目,并将dll从依赖项项目复制到UI bin文件夹。每次我重新编译我的项目时,经过几天的“复制和粘贴”操作后,我得出结论,我需要一个能自动完成这项工作的工具。经过几次搜索,a发现这个工具是nAnt

我搜索如何开始使用它的信息,但没有找到多少。 所以,我的问题是:

  • 几句话中的nAnt是什么
  • 我怎样才能从中受益

编辑:我不能只添加对依赖项项目的引用,因为它会导致循环依赖项。

nAnt是从Java的Ant派生的自动构建工具。它位于以下位置:


您可以使用它来自动化软件的构建和测试

NAnt是一个构建.NET项目和解决方案的构建工具(基于最初的Ant for Java)。它也是一种基于XML的“脚本”语言,您可以在其中命令“任务”来完成构建工作,包括您正在谈论的事情的类型——等等

我们使用NAnt作为构建脚本工具(由Cruise control.NET,也称为CCNET,我们的持续集成工具,在每次源代码管理签入时触发)来进行自动化构建。它包括以下内容:

  • 构建解决方案
  • 运行我们的单元测试以确保构建没有“中断”
  • 将web项目部署到开发服务器
  • 将构建压缩并归档到构建文件夹中,以进行历史跟踪和“回退”
  • 另一个解决方案是MSBuild,它实际上是VisualStudio使用的。这是非常相似的

    注意:不能使用NAnt的解决方案任务生成安装和部署项目(也不能使用MSBuild进行此操作)。为了解决这个问题,我们已经开始使用命令行参数运行devenv.com(不带UI的Visual Studio)——使用NAnt的“exec”任务而不是内置的“solution”任务——来构建整个解决方案,包括安装和部署包。我们过去也使用过WiX和MSBuild

    最后,对于您所概述的具体问题,您应该真正考虑其中的一个选项:

    • 只需将依赖项目作为项目引用添加到Web站点解决方案中,您就会自动获得DLL
    • 考虑创建一个生成后任务(查看“项目属性”窗口),该任务对成功的生成执行xcopy
    随着项目复杂性的增加,在NAnt和CCNET上投入时间是不会出错的。您可以让CCNet监视源代码管理的签入或每晚运行,还可以设置依赖项目,例如,如果依赖项目生成,它可以启动网站的生成和/或运行单元测试,以查看是否有任何问题。

    Microsoft(无论好坏)创建了包含项目文件的MsBuild系统(.csproj、.vbproj等)是的脚本。这些.proj文件指示MsBuild系统通过XML生成项目。这基本上也是nAnt正在做的。因此,通常,MsBuild functionality==nAnt functionality

    虽然我在MsBuild和nAnt上花费了相当多的时间,所以我不能成为一个真正的专家意见,但根据我的经验,如果您使用的是Visual Studio,那么使用MsBuild来构建项目可能是更好的方法,因为它很可能已经与您的开发过程保持一致。因为您几乎可以肯定ly已经在使用.proj文件(如果您正在使用C#,则为.csproj)创建另一个生成文件对我来说没有多大意义:只需使用您已有的生成文件,并根据您的需要对其进行自定义。我不知道nAnt在这一点上提供了MsBuild没有提供的任何内容,只是它更符合开源模式

    同样,由于我对nAnt的经验有限,我不能说这仍然是事实,但当我上次使用nAnt时,与MsBuild相比,完成相同的任务要复杂得多,如果仍然是事实,这将是我改用MsBuild的另一个原因

    您需要删除二进制文件作为生成后任务,这是使用MsBuild或nAnt可以轻松完成的常见任务。出于上述原因,我建议您先查看MsBuild,看看这将如何工作,然后仅在MsBuild不符合您的要求时才查看nAnt。我之所以这样说,是因为如上所述,您今天已经沉浸在MsBuild中了(您的计算机上也已安装了MsBuild引擎),那么为什么不选择阻力最小的路径呢?当然,如果MsBuild不执行您想要的操作,而nAnt执行此操作,请务必选择该路径。但是在现有的MsBuild(即.csproj)文件中复制文件大约需要5行xml。以下是来自MSDN的一些文档:

    前面的海报提到将CruiseControl与nAnt一起使用。巡航控制也可以轻松使用MsBuild:

    这样,如果你想要自动的(持续的集成)构建,你可以使用C.NET.MS Team Foundation Server是C.NET的一个替代物,如果你能负担成本或者是一个启动(通过MS BiSflash程序,你可以在几年内免费使用它)。


    我不反对nAnt——只是你提到的你想做的事情似乎并不需要它。MsBuild可以做,你不需要安装任何新的东西,甚至不需要创建文件。你只需要做5行(大致).proj文件中的xml项对于MSBuild的Mono build实现不是很好。据我所知,您只能将MSBuild用于编译项目,即使这样,它也不会编译安装项目,您实际上需要使用devenv。而从Nant开始,您可以自定义您的生成:清理源代码,更新em,编译它们(使用msbuild或devenv),使用NUnit、Ncover和您想到的任何其他工具测试它们