Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该从nant切换到msbuild吗?_Msbuild_Build Process_Build Automation_Nant - Fatal编程技术网

我应该从nant切换到msbuild吗?

我应该从nant切换到msbuild吗?,msbuild,build-process,build-automation,nant,Msbuild,Build Process,Build Automation,Nant,我目前使用nant、ccnet(巡航控制)、svn、mbunit。我使用msbuild来进行sln构建,只是因为它更容易进行shell构建 将整个构建脚本切换到MSBuild有什么好处吗?我需要能够运行测试,watir风格的测试,xcopy部署。这容易吗 更新:是否有任何引人注目的特性会让我从nant转换到msbuild?我觉得msbuild和nant相当相似。如果您正在使用其中一个,我通常不会在它们之间切换,除非您选择的产品中缺少一个引人注目的特性 我个人将MSBuild用于任何新项目,但您的

我目前使用nant、ccnet(巡航控制)、svn、mbunit。我使用msbuild来进行sln构建,只是因为它更容易进行shell构建

将整个构建脚本切换到MSBuild有什么好处吗?我需要能够运行测试,watir风格的测试,xcopy部署。这容易吗


更新:是否有任何引人注目的特性会让我从nant转换到msbuild?

我觉得msbuild和nant相当相似。如果您正在使用其中一个,我通常不会在它们之间切换,除非您选择的产品中缺少一个引人注目的特性

我个人将MSBuild用于任何新项目,但您的里程可能会有所不同

希望有帮助

编辑:@ChanChan-@Jon提到Nant不构建.NET 3.5应用程序。这可能是一个足够的理由来改变,或者至少并行使用它们。随着我对MSBuild的进一步了解,我可能不是最了解这两种技术的人

编辑:看来Nant现在正在构建.NET 3.5应用程序。

@Brad Leach

我通常不会在它们之间切换,除非缺少一个引人注目的特性

使用msbuild的主要原因是什么?有犯人吗


到目前为止,我从你的回答中得到了一个很好的答案,“不,不,不麻烦”。

我在Nant旁边使用了MSBuild,因为Nant的当前版本还不能编译.NET 3.5应用程序(在.NET 2.0首次问世时也是如此).

我能看到的使用msbuild的唯一原因是,如果您想使用像cruise control这样的自动生成服务器。如果您不打算切换,那么我就不去管它了。

我认为它们在功能和易用性方面都是相对可比的。仅仅因为基于C#,我发现msbuild比nants更容易使用,尽管这并不是切换的一个令人信服的理由

南特到底在为你做什么?或者你只是希望有一些很酷的功能你可能错过了

关于C#的一个非常好的地方是,如果您拥有.net framework,那么您就拥有了运行msbuild所需的一切。当你在大型团队/项目中工作,并且有人员/硬件流动时,这是非常棒的


就个人而言,我更喜欢烤饼而不是两者:)

我喜欢MSBuild。一个原因是.csproj文件是msbuild文件,在VS中构建就像在命令行中构建一样。另一个原因是我一直使用的CI服务器TeamCity提供了良好的支持。如果开始使用MSBuild,并且希望在生成过程中执行更多自定义操作,请获取。他们给了你很多额外的任务。我已经好几年没用NAnt了,我也不后悔

此外,正如鲁本所提到的,CodePlex上还有一些任务


更有趣的是,还有一个任务,其中包括一个twitter任务。

使用MSBuild(至少在.NET 3.5及更高版本中)最有说服力的原因是构建引擎可以并发构建

这意味着在您拥有多个核心/处理器的情况下,您的构建速度将大大提高


在3.5之前,MSBuild没有进行并行构建。

我的建议正好相反-像瘟疫一样避免MSBuild。NANT更容易设置您的构建以进行自动测试、部署到多个生产环境、与cruisecontrol集成以进入环境、与源代码管理集成。我们在使用TFS/MSBuild(使用TFSDeployer、自定义powershell脚本等)时经历了太多的痛苦,让它完成了我们能够用NANT开箱即用的功能。不要浪费您的时间。

我仍然在自动生成中使用nAnt over msbuild的主要原因是我对生成有更精确的控制。由于使用csproj的msbuild具有其生成文件,因此该项目中的所有源代码都被编译成一个程序集。这使得我在大型项目的解决方案中有很多项目,其中我分离了逻辑。使用nant,我可以安排我的构建,在那里我可以从一个项目中将我想要的编译成多个程序集

我喜欢这条路线,因为它避免了我的解决方案中有太多的项目文件。我可以有一个项目,其中文件夹将层拆分,然后使用nant将每个层构建到它自己的组件中

但是,我确实将nant和msbuild结合用于某些构建任务,如构建WPF应用程序。在nant中使用msbuild目标编译WPF应用程序要容易得多


最后,我的回答是,我喜欢同时使用它们,但在这种配置中使用msbuild时,它通常用于直接编译,不执行任何生成自动化任务,例如将文件复制到目录,生成帮助文档,或者运行我的单元测试。

实际上我自己仍在试图解决这个问题,但MSBuild有一个很大的好处:通过直接调用MSBuild.exe,使用相同的生成文件进行本地连续集成,同时还能够使用VSTS的服务器端连续集成和相同的生成文件(尽管很可能是不同的属性/设置)


i、 e.与TeamCity对MSBuild脚本的支持相比,VSTS只支持MSBuild脚本!我过去曾通过从MSBuild执行NAnt来解决这一问题;我见过其他人推荐这种做法以及相反的做法,但对我来说这似乎很难,所以如果可以避免的话,我尽量不这样做。所以,当你使用“完整的Microsoft堆栈”(VST和TFS),我建议只使用MSBuild脚本。

我们也从nant切换到了MSBuild。如果您的生成非常标准,那么设置它不会有太多问题,但是如果您有很多特定的生成任务,则必须编写自定义ms生成任务,因为MSBuild的自定义任务要少得多

如果你想