我总是编译我的项目,并将dll从依赖项目复制到UI bin文件夹。经过几天的'复制&每次重新编译我的项目时粘贴'操作,我得出结论,我需要一个能自动完成它的工具。经过几次搜索后发现这个工具是nAnt。
我搜索有关如何开始使用它的信息,但我找不到太多。 所以,我的问题是:
编辑:我不能只添加对依赖项目的引用,因为它会导致循环依赖。
答案 0 :(得分:14)
NAnt是一个构建.NET项目和解决方案的构建工具(基于原始的Ant for Java)。它也是一种基于XML的“脚本”语言,您可以在其中订购“任务”来完成构建工作,包括您正在谈论的事物类型 - 以及更多,更多!
我们使用NAnt作为我们的构建脚本工具(由Cruise Control.NET,a.k.a.CCNET,我们的持续集成工具在每个源代码控制检查中触发)来执行我们的自动构建。它包括:
另一种解决方案是MSBuild,它实际上是Visual Studio使用的。它非常相似。
请注意:您无法构建设置&使用NAnt解决方案任务的部署项目(您也无法使用MSBuild执行此操作)。为了解决这个问题,我们已经开始使用命令行参数运行devenv.com(没有UI的Visual Studio) - 使用NAnt的“ exec ”任务而不是构建-in“ 解决方案 ”任务 - 构建整个解决方案,包括Setup&部署包。我们过去也使用过WiX和MSBuild ......
最后,对于您概述的具体问题,您应该考虑其中一个选项:
你真的不能错过在NAnt投资时间,最终CCNET随着项目复杂性的增加而增加。您可以让CCNet监视您的源代码控制以进行签入或每晚运行,并且您可以设置依赖项目,例如,如果您的依赖项目构建,它可以启动您的网站构建和/或运行单元测试看是否有任何损坏。
答案 1 :(得分:12)
Microsoft(无论好坏)创建了一个项目文件(.csproj,.vbproj等)是脚本的MsBuild系统。这些.proj文件指示MsBuild系统通过XML构建项目。这基本上也是nAnt正在做的事情。所以,通常,MsBuild功能== nAnt功能。
虽然我肯定在MsBuild和nAnt上花了很多时间,所以根据我的经验,如果你使用的是Visual Studio,我不能成为真正的专家意见,它可能是一个更好的轨道请继续使用MsBuild来构建项目,因为它很可能已经与您的开发过程保持一致。因为您几乎肯定已经在使用.proj文件(即.csproj,如果您正在使用C#),它不会创建另一个构建文件对我来说很有意义:只需使用您已有的构建文件并根据需要自定义它。我不知道nAnt在这一点上提供的任何东西,MsBuild除了它与开源模式更加一致之外没有。
同样,由于我对nAnt的体验有限,我不能说这仍然是正确的,但是当我上次使用nAnt时,与MsBuild相比,完成相同的任务要相当冗长,如果仍然如此,那将是我使用MsBuild的另一个原因。
您需要将二进制文件作为构建后任务删除,这是使用MsBuild或nAnt轻松完成的常见任务。出于前面提到的原因,我建议首先看看MsBuild,看看这是如何工作的,然后只有在MsBuild不适合您的账单时才查看nAnt。我之所以这么说,只是因为如上所述,你今天已经浸泡在MsBuild中了(你的计算机上已经安装了MsBuild引擎)所以为什么不走最小阻力的路径?当然,如果MsBuild没有做你想做的和nAnt做的事,那么一定要采取那条路线。但是在现有的MsBuild(即.csproj)文件中复制文件大约是5行xml。以下是MSDN的一些文档:http://msdn.microsoft.com/en-us/library/3e54c37h.aspx
之前的海报提到使用CruiseControl和nAnt。 巡航控制也可以轻松使用MsBuild :
http://ccnetlive.thoughtworks.com/ccnet/doc/CCNET/MsBuild%20Task.html
因此,如果您想要自动(持续集成)构建,则可以使用CC.NET。 MS Team Foundation Server是CC.NET的替代品,如果您可以节省成本或者是初创公司(通过MS BizSpark计划,您可以免费使用它几年)。
我没有任何反对nAnt的东西 - 只是因为你所提到的你想做的事情似乎并不像你需要它。 MsBuild可以做到这一点,你不需要安装任何新东西甚至创建一个文件。 您只需在.proj文件中执行5行(粗略)xml条目
答案 2 :(得分:3)
MSBuild的Mono构建实现不是很好。另外根据我所知,你只能使用MSBuild来编译项目,即使这样它也不会编译安装项目 - 你实际上需要devenv。从Nant开始,您可以从以下位置自定义构建:清理源代码,更新源代码,编译它们(使用msbuild或devenv),使用NUnit,Ncover以及任何其他可能出现的问题进行测试。所以在我看来,让Nant放下手。
P.S。 Nant也是一种非常直接的语言,非常容易学习。
答案 3 :(得分:1)
nAnt是一个源自Java Ant的自动构建工具。它托管在这里:http://nant.sourceforge.net/。
您可以使用它来自动构建和测试您的软件。