一个初学者的问题,跟我说:我只是想知道在什么情况下应该使用像nant或msbuild这样的构建工具?我正在开发一个中型应用程序(.net 3.0),每个开发人员都在做他的工作并在他的机器上构建,在他去的时候检查他的代码更改到存储库中。完成所有操作后,我将从存储库中获取所有代码,在我的机器上进行清理构建,然后部署二进制文件。出于好奇,构建工具在哪里?
答案 0 :(得分:15)
简短的回答总是如此。
每个开发人员都应该在检查代码之前使用构建脚本构建。构建版本的人应该使用构建脚本来构建版本。您的buildbots应该使用构建脚本来构建和测试已签入的代码。
这样做可以让所有开发人员,测试人员和buildbots都具有一致,可重复的构建。毕竟,The F5 Key Is Not a Build Process。
答案 1 :(得分:6)
听起来您正在使用IDE来进行构建。它本质上是一个构建工具;你已经在使用了一个。当您使用的工具变得比解决方案更具问题时,您应该切换工具。
答案 2 :(得分:4)
当您的构建过程变得超过一个命令时,应该使用构建工具。它应该用于将标准构建过程恢复为一个命令。如果您的构建过程超过一个命令,那么您有机会在构建期间从错过/重复/不正确的命令中爬出错误。
答案 3 :(得分:2)
我认为任何非平凡的应用程序都需要一个“构建工具”。我在工作中使用术语持续集成。有非常特殊的情况(例如:我正在构建一个示例应用程序来了解X功能的工作原理),但除此之外,您永远不会后悔拥有可靠的构建过程。
我想如果开发团队由一个人组成......我仍然建立一个构建系统,包括一个存储库,一个构建工具和多个测试套件。 是的,维护构建系统需要花费时间和金钱,但它会得到回报(我现在已经开始工作了40个月,这个项目是从6个开发人员开始的,现在包括大约30个开发人员;它确实为我们付出了代价在质量控制方面,并且越早发现质量问题,他们就要解决这个问题。
答案 4 :(得分:2)
当你开始做版本或你的构建超过一定数量的手动步骤时(你会注意到它开始变得烦人的时候。)我在这个主题上写了一个旧的blog entry,你可能会感兴趣。
答案 5 :(得分:0)
如果你想自动化任何东西,最好使用nant / msbuild。例如: 办理登机手续 建立 3.测试和代码覆盖率
答案 6 :(得分:0)
您是否正在使用Visual Studio进行开发?在这种情况下,您已经在使用msbuild,因为这是Visual Studio的底层构建引擎。实际上,Visual Studio项目文件只不过是一个msbuild脚本。
除此之外,您可以在专用的构建系统上使用构建引擎,这样您的二进制文件就可以在无人值守的情况下构建,而无需安装Visual Studio。您也可以将其用于单元测试。
答案 7 :(得分:0)
同意并扩展zacherates的答案......是的,你应该总是有一些可重复的构建过程。虽然技术上Visual Studio项目是MSBuild文件,但最好将“官方”构建过程与开发环境分开。
在我看来,无论团队有多大(或小),都是如此。我在家里使用NAnt和CruiseControl.NET ,我倾向于使用的是临时项目和实验。在工作中,我们使用类似的设置,但在NAnt脚本的组合方式上有点结构化。
绝对值得您花时间去研究它。它并不是万灵药,但它是一种最佳实践,可以准确地了解哪些构建在何时以及在野外发布了什么。能够识别已编译的代码是故障排除战斗的一半! :)