我目前使用楠,CCNET(巡航控制),SVN,MbUnit的。 我使用的MSBuild做我的前哨淋巴结建设只因为它是简单掏出。
是否有任何好处,以交换我的整个构建脚本MSBuild的? 我需要能够运行测试,风格的Watir测试,XCOPY部署。 这是更容易?
更新:任何强大的功能,将导致我从恶性转向的MSBuild?
我目前使用楠,CCNET(巡航控制),SVN,MbUnit的。 我使用的MSBuild做我的前哨淋巴结建设只因为它是简单掏出。
是否有任何好处,以交换我的整个构建脚本MSBuild的? 我需要能够运行测试,风格的Watir测试,XCOPY部署。 这是更容易?
更新:任何强大的功能,将导致我从恶性转向的MSBuild?
我喜欢的MSBuild。 原因之一是.csproj的文件的MSBuild文件,建设VS就像在命令行建设。 另一个原因是从TeamCity的良好支持,这是我一直在使用CI服务器。 如果你开始使用的MSBuild,并且要在构建过程中做更多的事情定制,得到的MSBuild社区任务 。 他们给你一堆不错的额外任务。 我没有使用楠几年来,我也没有后悔过。
此外,由于鲁本提到,也有SDC任务 CodePlex上的任务。
更好玩,还有就是MSBuild扩展包CodePlex上 ,其中包括Twitter的任务。
我的建议是正好相反 - 避免的MSBuild像瘟疫。 NANT是远远更容易设置你的构建做自动测试,部署到多个生产环境中,使用CruiseControl中集成的输入环境,与源代码控制集成。 我们通过与TFS /的MSBuild这么多的痛苦(使用TFSDeployer,自定义PowerShell脚本等)去得到它做什么,我们能够与NANT做到开箱即用。 不要浪费你的时间。
最有说服力的理由使用的MSBuild(至少在.NET 3.5及以后) - 生成引擎可以同时建造。
这意味着在你构建你有多个内核/处理器的巨大加快。
上一页至3.5,MSBuild的没有做平行的基础之上。
我觉得MSBuild的和南特是相当具有可比性。 如果您正在使用其中的一个,我一般不会在它们之间,除非有令人信服的功能,在你已经选择的产品缺少切换。
我个人使用的MSBuild任何新的项目,但您的里程可能会有所不同。
希望帮助!
编辑:@ChanChan - @乔恩提到,南特不构建.NET 3.5应用程序。 这可能是足够的理由要么改变,或并联至少使用它们。 正如我已经走向MSBuild的多动,我可能不是最知情人士强调任何其他搅局者有两种技术。
编辑:看来现在南特构建.NET 3.5应用程序。
楠一直围绕更长的时间,而且是相当多的成熟的产品,也海事组织更容易使用。 有很多社区诀窍在那里挖掘到,它也是跨平台的,你应该有兴趣,可以在Mono下运行,以及.NET和Silverlight开发应用程序。 开箱即用,它做了一大堆以上的MSBuild做。 哦,是的,你可以从恶性调用的MSBuild(OK,从NAntContrib):-)
在消极的一面,南特和它的姊妹项目NAntContrib似乎已经停滞不前,最近一次更新是2007年年底。
我看到的MSBuild的主要优点是,它附带的.NET框架,所以这是一个安装较少的产品; 并有更积极的发展事(虽然在某些地方赶上老南特)。
就个人而言,我觉得它的语法多一点难有起色,但我敢肯定,持续暴露于TI会使事情变得更容易。
结论? 如果您正在使用现有的恶性脚本工作,坚持使用他们,这是不值得移植的麻烦。 如果你开始一个新的项目,你喜欢冒险,然后给予的MSBuild一去。
我们也从恶性切换到的MSBuild。 如果你的版本是非常标准的,那么你不会有太大问题设置它,但如果你有很多的具体的构建任务,您必须编写自定义毫秒建设的任务,因为有这样的MSBuild的少自定义任务。
如果你想显示合理构建结果,你将不得不使用自定义记录程序等,整个团队建设并不像成熟的恶性是一团糟。
但真正的好处是TFS中源控制和报告服务的集成。 如果您没有使用TFS作为源代码控制系统,这是不值得的。
@Brad利奇
我一般除非有令人信服的功能,缺少不会在它们之间切换
什么是使用的MSBuild令人信服的理由? 有没有缺点?
到目前为止,我发现了一个相当不错的,“没有不打扰”从你的答案。
我觉得他们无论是在功能和易用性的相对可比性。 刚刚从被基于C#的,我觉得MSBuild的更容易使用比nants,虽然这是很难令人信服的理由来切换。
到底是恶性不为你做什么? 或者,你只是希望有一个你可能错过了一些很酷的功能? :)
关于C#的一个超好处是,如果你有.NET框架,你有你需要运行的MSBuild一切。 这是当您正在使用的大型团队/项目,才有人/硬件营业额太棒了。
我个人更喜欢他们两个SCons的:)
我还是用在南特的MSBuild我的自动化生成的主要理由是,我有我的建立更精细的控制。 由于使用的csproj的MSBuild有它的构建文件,在该项目中的所有源被编译成一个程序集。 这使我有很多项目在我的地方,我分开逻辑大型项目的解决方案。 那么与恶性,我可以安排我的体型在那里我可以编译我想要的东西分成多个组件从一个项目。
我很喜欢这条路线,因为它让我不必多项目文件在我的解决方案。 我可以有文件夹分裂出来的一个层项目,然后使用楠打造每一层到它自己的组件。
但是,我使用结合这两种恶性和MSBuild的一些建设任务,比如构建WPF应用程序。 这仅仅是一个更容易编译恶性内的MSBuild目标WPF应用程序。
要结束这一点,我的回答的一点是,我喜欢一边使用他们的一面,但是当我在这个配置中使用的MSBuild,它通常是直的编译,不执行喜欢将文件复制到目录中的任何构建自动化任务,产生帮助文档,或运行,例如我的单元测试。
实际上,我仍然试图找出这个问题了自己,但有一个大的奖金为MSBuild的位置:使用本地持续集成在同一构建文件通过直接调用msbuild.exe,同时还能够使用VSTS的服务器端连续与同构建文件(尽管很可能是不同的属性/设置)的集成。
即相比的TeamCity对MSBuild的脚本的支持,VSTS 只支持MSBuild的脚本! 我已经从的MSBuild exec'ing恶性解决这个黑客在过去的; 我看到别人推荐这种做法以及反向的,但它只是似乎kludgey给我,所以我尽量不这样做,如果我能避免它。 所以,当你使用“完整的微软产品”(VSTS和TFS),我建议只是MSBuild的脚本坚持。
南特拥有更多功能开箱即用,但MSBuild的具有更好的基本结构(项目元数据的岩石),这使得它更容易构建可重用的MSBuild脚本。
的MSBuild需要一段时间才能明白,但一旦你做到这一点是非常好的。
学习材料:
我看不出有任何理由要切换。 本身的MSBuild锁入你正在使用的框架。 如果您使用楠,你可以用它在许多框架,并掏出来的MSBuild为你真正做建设任务。
我在这方面恶性的粉丝,因为它分离从框架一点点。
我创建了一个框架,使公约为自动构建和我建立了它的恶性。 这就是所谓的勾拳,它是出奇的好用构建框架。
自动构建为:(1)解决方案的名称,(2)源控制路径,(3)公司名称对于大多数项目一样容易!
http://code.google.com/p/uppercut/
有一些很好的解释在这里: 勾拳
的MSBuild正在与Visual Studio集成给程序员使用的编译系统减少摩擦。 它主要归结为他们唯一不必去“生成解决方案”,它的所有作品,与不必使用自定义生成步骤和其他类似的东西,或者更糟糕的,迫使开发商通过推出某种形式的外部脚本来构建。
现在,我大多倾向于更喜欢的MSBuild在南特,因为它更简单。 当然,南特有很多更多的功能,更强大,等等,但它可以很快失控。 如果你和你的工程师建立有纪律,保持南特简单的脚本,那么这一切都很好。 但是,我见过太多的基于楠系统南下到一个地步,没有人明白它在做什么了,而且还有调试它除了做一个好醇”的printf相当于没有真正的方法。 你开始使用一些if / else语句或for循环的那一刻,这其中,恕我直言,它开始闻。
在另一方面,拥有的MSBuild基于元数据和更简洁的语法了坚实的基础。 它的简单(或缺乏的功能...这取决于你怎么看它),你的力量通过新的任务写的,而不是在XML标记编写逻辑在.NET代码逻辑。 这鼓励重用性,最重要的事情,让你实际上调试构建系统在真正的调试。
与MSBuild的唯一问题是不那么偶然的错误(尤其是在第一个版本)或含糊不清(尽管文件)的行为。 而且,如果是这样的一种东西,使你感到困扰,被捆绑到微软。
我从NANT切换到的MSBuild。 该项目是在.NET 4.0中运行。
我在南特的经验是好的。 该项目那种死亡。 当.NET 4.0来了,是时候重新评估的构建过程。
由于南特最后一次发布的MSBuild已经沿方式来。 在这一点上,MSBuild的是要走的路。 它易于使用,拥有众多的扩展。 我改写了我的南特脚本在一天半的时间。 该脚本的MSBuild是1/3南特脚本的大小。
许多在南特脚本的工作是建立在不同的环境。 在的MSBuild / .NET 4.0它的内置。
我使用的MSBuild南特一起 ,因为南特的当前版本尚无法编译.NET 3.5的应用程序(也是如此,当.NET 2.0刚出来)。
我可以看到使用的MSBuild的唯一理由是,如果你想使用像巡航控制的自动化构建服务器。 如果你不打算开关,那么我不要管它。
我使用南特,我喜欢它。 我用的MSBuild,恨它,因为这些:
微软强迫你按照自己的构建过程是其内在的所作所为,我至少没有能够使它发挥作用(我不得不编译NET1.1,所以我不得不混合南特和MSBuild的)。 我知道你可以创建自己的MSBuild文件,但我认为这是复杂的理解和维护。
ItemTypes做文件操作实在是太难以遵循。 你可以有南特做同样的事情,更容易和直接(我不得不创建一个ItemType的列表,然后传递到文件操作)。
在的MSBuild,你必须创建自己的任务的DLL,在南特你可以做到这一点,或者你可以在你的脚本中嵌入C#代码,因此它更容易推进,只是编译整个项目。
南特工程与Net1.1,的MSBuild没有。
要安装楠,我甚至可以解压,找到我自己的仓库里运行它。 要安装的MSBuild是更难,因为它依赖于从Visual Studio等很多东西(也许我错了这里,但似乎是事实)。
那么这是我的观点...