nAnt是否仍然支持并适用于.net 3.5 / VS2008?

时间:2008-08-04 14:55:04

标签: .net .net-3.5 msbuild nant

我正在使用MSBuild来构建我的东西。我想通过Build Server使用CruiseControl.net。

现在,CCNET对nAnt提出了很多意见,但看起来ccnet可以完成大部分通过项目配置和msbuild无法完成的工作。此外,nAnt似乎有点不受支持,Beta版本已经差不多一年了。

简而言之:我对MSBuild非常满意(特别是因为它是“官方”编译器前端)并且对nAnt有点不舒服,但我不想过早判断。

使用nAnt而不是MSBuild会有什么理由?特别是对于ccnet,它在功能方面似乎与nant重叠(并添加了自动构建相关的东西)

7 个答案:

答案 0 :(得分:14)

如果您对MSBuild非常满意,那么我会坚持使用MSBuild。这可能是您首先学习的工具是您更喜欢的工具之一。我从NAnt开始,不太习惯MSBuild。我相信它们都会存在很长一段时间。

两者之间存在一些根本性差异,可能是this conversation between some NAnt fans and a Microsoftie最佳突出显示。

有趣的是,Jeremy Miller去年提出了完全相反的问题on his blog

答案 1 :(得分:5)

在我看来,这更像是个人偏好的问题。 nAnt是一个很棒的框架,MSBuild几乎同样强大。由于能够轻松开发自定义任务(在两个框架中),您几乎可以完成任何需要完成的任务。

我无法回答你问题的“仍然支持”部分,但我会说如果你已经对nAnt感到满意,那么它可能是可行的。如果您(或您小组中的某个人)熟悉MSBuild,那么这也是一个很好的方法。

答案 2 :(得分:3)

如果你已经有一堆与nAnt一起使用的自定义任务,坚持使用它 - 你在MSBuild上获得的收益并不高。也就是说,似乎没有任何nAnt可以做的事情,MSBuild无法做到这一点。两者都可以调用外部工具,两者都可以运行基于.Net的自定义任务,并且两者都有一堆社区任务。

我们在这里使用MSBuild是出于同样的原因 - 它现在是VS的默认构建系统,我们没有任何特定于nAnt的东西需要担心。

MSBuildCommunityTasks是一个很好的第三方任务基础,并且涵盖了我在nAnt中所做的大部分自定义工作,包括VSS和Subversion支持。

答案 3 :(得分:1)

老实说,这取决于更适合您环境的因素。如果您使用了很多非Microsoft工具,nunit,ccnet,ncover。你可能会找到更好的支持nant。或者,如果您使用的是MSTest,TFSBuild,您可能会发现MSBuild是一个更好的环境。我会学习这两种方法并使用哪种方式更适合您的环境。

答案 4 :(得分:1)

CC.NET只是构建服务器技术,而不是构建脚本技术。我们在工作中使用CC.NET非常成功地调用MSBuild构建脚本而没有任何问题。

NAnt是一种较旧且更成熟的构建脚本语言,但它们的工作方式相似。我在NAnt中做的事情很少,我在MSBuild中也做不到,所以它真的归结为哪一个你更舒服。至于NAnt的活跃程度,不要在最后一个版本的时候过去......而是在最后一次每晚构建时过去。 NAnt在发行版之间往往需要很长时间,但夜间版本通常非常稳定。

答案 5 :(得分:0)

就像许多人已经指出的那样,这里的答案是“它取决于”。有一些像重复操作这样的东西在NAnt中更简单,更清晰。有关此问题的讨论,请参阅the MSDN forums

答案 6 :(得分:0)

我发现你也可以使用混合方法,特别是在大型项目中。在开发新组件时,许多我们的nant脚本正在转换为msbuild。两者都支持相同的主要功能,如果您发现一个本地支持的任务而不是另一个任务,则可以相互调用。

对于新的.NET开发,从MSBuild开始可以节省大量时间,因为它可以直接运行解决方案文件。从主编译扩展到执行其他任务(源代码控制,部署等)非常有效。