我目前正在尝试设置CruiseControl.net,所以我想知道如何拆分我的任务。
一般来说,我想运行单元测试(xUnit.net),帮助文件生成(Sandcastle)和FxCop。
现在我只是想知道是否应该在msbuild配置(“文档”)中指定一个新目标并使用它来运行SandCastle,或者如果它属于一个单独的脚本?另外,msbuild用于构建某些东西,所以我猜ncover,xunit和FxCop不应该是它的一部分,或者它们应该是什么?
msbuild的预期范围是什么?
答案 0 :(得分:6)
将几乎所有内容都放入MSBuild脚本中,以便您和其他开发人员可以通过命令行在本地运行相同的步骤。否则,当构建出现问题时,您必须在CC服务器上进行调试。不是一个很好的调试经验。此外,您希望在提交之前在本地运行构建以确保其有效。
我不会在MSBuild脚本中添加的一些内容是:
svn up && msbuild
,但这太短了,我不需要把它放到脚本中。)至于构建MSBuild文件,您需要一个“主”构建脚本,您可以使用它来构建或所有内容,例如
。MSBuild /t:Build
以增量方式构建代码MSBuild /t:Rebuild
进行干净重建MSBuild /t:UnitTest
只运行单元测试MSBuild
最常见的选择,例如,相当于t:Build;UnitTest
MSBuild /t:All
干净地构建代码,文档和设置,运行所有测试并打包结果您还可以为常用变体添加“快捷方式”目标。
拥有单个主构建文件并不意味着所有内容都在此单个文件中定义;您可以包含其他msbuild文件,和/或递归调用msbuild来组织您的构建。例如:
答案 1 :(得分:2)
我有一个单独项目的构建脚本,我只是在构建套件时从第二个构建文件中链接它们...例如,我的protobuf-net构建文件处理版本控制(SVN) ,汇编(MSBuild + NAnt for mono),测试(NUnit),打包(zip)等。这是你的构建过程;做你需要的事情;-p例如,如果我愿意,还可以进行部署和文档编制。
这还取决于你的工作方式;如果您使用的是CruiseControl,它可能会为您处理大部分内容。对我自己来说,我喜欢命令行“构建”步骤。