我目前使用nant,ccnet(巡航控制),svn,mbunit.我用msbuild做我的sln建立的,只是因为它是简单的外壳了。

是否有任何案情来交换我的整个建立脚本MSBuild?我需要能够运行测试,watir风格的测试,xcopy部署。这是更容易?

更新:任何引人注目的特点,这会导致我的转变,从nant到msbuild?

有帮助吗?

解决方案

我喜欢MSBuild。其中一个原因是这样。csproj文件msbuild文件,并建立在VS是只喜欢建筑物在命令行。另一个原因是良好的支持,从TeamCity其CI服务器我一直在使用。如果你开始使用MSBuild,你想要做更多的定的东西在你的建立过程中,得到的 MSBuild社会的任务.他们给你一堆不错的额外任务。我没有用NAnt几年来,现在,我还没有感到遗憾。

此外,作为鲁本中提到的,有的 SDC任务 任务更.

甚至更多的乐趣,还有就是 MSBuild扩展组上更, ,其中包括一个twitter的任务。

其他提示

我的忠告正好相反-避免MSBuild像瘟疫。NANT是远远更容易设置你的建立做自动测试,将其部署到多个生产环境的整合与cruisecontrol的一项环境,与源控制。我们已经经历了这么多的痛苦与TFS/MSBuild(使用TFSDeployer,定powershell脚本,等等)得到这来做什么,我们是能够做到与NANT。不要浪费你的时间。

最令人信服的理由使用MSBuild(至少在。净3.5外)-的建立引擎可以建立同时进行。

这意味着一个巨大的加速在建立在你有多个核心/处理器。

以前为3.5,MSBuild没做并行的基础之上。

我觉得,但这并不说明人们Nant是相当的可比性。如果您使用的是其中的一个,我一般不会之间切换他们,除非有一个引人注目的特点就是缺少产品中的你有选择的。

我个人使用MSBuild的任何新项目,但是你的里程可能会有所不同。

希望这可以帮助!

编辑: @ChanChan-@乔恩提到,Nant没有建立。净3.5应用程序。这可能是足够的理由要更改,或至少使他们在平行的。因为我已经搬更多的MSBuild,我可能不是最明智的人以突出的任何其他搅局者与技术。

编辑: 它的出现Nant现在的基础之上。净3.5应用程序。

NAnt已经更长,并且是一个相当多的成熟产品,而且国际海事组织更容易使用。有很多社区的知识有利,它也是交叉平台,你应该会感兴趣的建筑应用程序,可以运行的单。净。.开箱,它并一大堆比MSBuild。哦,是的,你可以叫MSBuild从NAnt(确定,从NAntContrib):-)

在消极方面,NAnt和它的姊妹项目NAntContrib做似乎已经停滞不前,与最近的更新迟到2007年。

主要的优点,我看到的MSBuild是,它船舶。净框架,因此它是一个较少的产品进行安装;并且还有更多积极的发展事(尽管是在地方赶上的老年NAnt).

就个人而言,我找到它的语法多一点难以接,但后来我敢肯定,继续暴露于ti会让事情变得更容易。

结论呢?如果你的工作与现有的NAnt脚本,坚持他们的,这不值得麻烦的移植。如果你在开始一个新项目,而你喜欢冒险的感觉,然后给MSBuild去。

我们还交换从nant到msbuild。如果你的建立是非标准,然后你不会有太多的问题,但是如果你有一个很大的具体建立的任务,你将必须编写定义ms建立任务,如有下定义的任务msbuild。

如果你想要显示的合理建立的结果,你会惹定记录仪等。整个团队建设是不成熟的作nant。

但真正的益处是整合与TFS源的控制和报告服务。如果你不使用TFS与源控制系统,这是不值得的。

  • 不要开除非你有一个非常有说服力的原因(至少).
  • NAnt开放源如果不是我会不能够自我们建立系统,MSBuild不是。
  • NAnt可以很容易地运行MSBuild,我不知道有关其他方式。
  • MSBuild脚本已经为你写的如果你使用VS2005或更新的版本(项目的文件 MSBuild文件。)
  • 如果你使用NAnt,并使用VS编辑项目文件、设置和结构,你必须要写一个转换器/同步的工具来更新你的NAnt文件从VS的项目文件。

@布拉德利奇

我一般不会之间切换他们,除非有一个引人注目的特点就是失踪

有什么令人信服的理由使用msbuild?是有缺点?

到目前为止,我得到一个很好,"没有不要打扰"从你的答案。

我觉得他们比较可比较两者的功能和便于使用。只是从C#基于我找到msbuild容易的工作与比nants,虽然这是一个很难令人信服的理由来开关。

到底是什么nant没为你做什么?或者是你只是希望那里有一些很酷的功能,你可能会错过了?:)

一个超级好的事情C#是的,如果你有.净框架,你有你需要的一切运行msbuild。这是梦幻般的当你是工作上的大型团队/项目,并拥有人/硬件的营业额。

我个人喜欢SCons过他们两个:)

主要的原因,我仍然使用nAnt过msbuild用我的自动化的建立是我有更精确地控制我的生成。由于msbuild使用csproj有它的建造文件,所有来源的项目是汇编成一个大会。这使我有一个很大的项目在我的解决方案对于大型项目在我分离的逻辑。好nant,我可以安排我的建立,在那里我可以编纂有什么我想成多个组件是从一个项目。

我喜欢这条路线,因为它让我有许多的项目文件在我的解决方案。我可以有一个项目文件夹中分裂出来的层,然后使用nant建立各个层到它自己的议会。

但是,我使用的两nant和msbuild结合对于一些建的任务,如建筑WPF应用程序。这仅仅是一个很容易编纂WPF申请参阅目标内nant.

结束这点我的回答是,我喜欢用他们,但当我用msbuild在这种配置,这是通常为直接编制,不进行任何建立自动化的任务,如文件复制一个目录,生成了帮助文件,或跑我的单元测试的例子。

实际上,我仍然在试图这个问题出自己,但那里是一个巨大的奖赏,对MSBuild在这里:使用同样的建造文件,用于当地持续的一体化通过调用msbuild.exe 直接,同时还能够使用ONLINE的服务器侧连续合同建立的文件(尽管是最有可能的不同性质/设置)。

即相比TeamCity支持MSBuild脚本,ONLINE 支持MSBuild剧本!我砍死这周围在过去通过执行清NAnt从MSBuild;我已经看到其他人建议这种做法以及反向的,但它似乎只是kludgey要我,所以我尽量不要这样做,如果我可以避免它。所以,当你用的是"整个Microsoft叠"(ONLINE和TFS),我建议只是坚持MSBuild脚本。

Nant 有更多的功能,但是 MSBuild 有一个更好的基本结构(项目元数据的岩石),这使它更容易建立可重复使用的MSBuild脚本。

MSBuild需要一段时间以理解的,但是一旦你做的非常好的。

学习材料:

我看不出有任何理由开关。MsBuild本身锁定你进入框架使用。如果你使用NAnt,你可以用它在许多框架和掏出来msbuild实际做建筑物的任务。

我的粉丝NAnt在这方面,因为它分离了你从框架的一点点。

我已经创建了一个框架,使公约成的自动生成,我建在NAnt.这就是所谓的拳的,它是疯狂的易于使用,建立框架。

自动生成为容易,因为(1)解决方案的名称,(2)来源控制的道路,(3)公司名称为大多数项目!

http://code.google.com/p/uppercut/

一些很好的解释: 上勾拳

MSBuild正在综合与Visual Studio给程序员小摩擦到使用建立系统。它主要涉及到他们才有去"建立方案"和它的所有工作,而具有使用定制的步骤和其他这样的事情,或者,更糟糕的是,迫使开发商建立通过启动一些种类的外部剧本。

现在,我主要是往往更喜欢MSBuild过NAnt因为它是更简单。当然,NAnt有更多的功能,功能更强大等等, 但它可以迅速得出的手。如果你和你的建造工程师有纪律,保持NAnt脚本很简单,然后这一切都很好。然而,我看到过太多的NAnt为基础的系统向南走到一个点,在那里没有人明白什么这样做了,并没有真正的方式调试这一做相当于一个良好的ol'printf.当你开始使用一些如果/其他发言或对于循环,这就是,恕我直言,它开始闻。

另一方面,非常冗长乏味,因此也坚实基础上的元数据和较不详细的语法。它的简单性(或缺的功能...取决于你怎么看它的)部队的你写的逻辑。净码通过新的任务,而不是写逻辑的XML标记。这鼓励重用性,上述所有事情,可以让你实际上调试建立系统在一个真正的调试器。

唯一的问题与MSBuild是不偶尔的错误(特别是在第一版本)或含糊不清的(虽然记录在案)的行为。而且,如果这种事情真的让你心烦,被绑Microsoft。

我从NANT到MSBuild。该项目正在运行中。净4.0.

我的经验,在Nant是好的。该项目种类的死亡。及时。净4.0来了,这是一次重新评估的建立过程。

由于Nant最后释放了非常冗长乏味,因此也一起来的方式。在这一点上,MSBuild是的路要走。它容易使用,具有许多扩展。我重写了我的Nant脚本在一天半。请参阅脚本是1/3的大小Nant脚本。

许多工作在Nant脚本是设置不同的环境。在MsBuild/.净4.0它的建立。

我用MSBuild 旁边 Nant,因为目前的版本Nant不能作为未编译。净3.5应用程序(同样是事实的时候。网2.0第一次出来).

唯一的理由我可以看到对于使用msbuild是如果您想使用自动化建立服务器喜欢巡航控制。如果你不打算交换机,然后我将独自一人离开。

我用Nant,我喜欢它。我用但这并不讨厌它,因为这些:

  1. Microsoft部队可以遵循自己的建立过程所固有的对他们的所作所为,我至少是不能够使它的工作(我已经汇编NET1。1因此,我不得不混合Nant和MSbuild).我知道你可以创建自己的MSBuild文件,但我认为这是复杂的理解和维护。

  2. ItemTypes做的文件的行动都只是太难以遵循。你可以有Nant做同样的事情和更容易和直接(I必须建立一项类型清单,然后通过的文件的操作)。

  3. 在MsBuild你必须创建自己的任务dll,在Nant你可以做这个或者你可以嵌入C#码在你的脚本,使其更容易前和刚刚建立的整个项目。

  4. Nant与Net1。1,MsBuild不。

  5. 安装nant,我甚至可以解,并找到在我自己的储存库的运行。安装MsBuild是非常困难的,因为它取决于许多东西从Visual Studio,等等。(也许我错了这里,但是,这似乎是真话).

那么这些都是我的意见...

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