我们实际上使用了NAnt和MSBuild与CruiseControl的组合.NAnt用于脚本流控制并调用MSBuild来编译项目.触发物理构建后,NAnt用于将单个项目构建输出发布到共享位置.
我不确定这是最好的过程.我想我们中的许多人仍然在寻找一款出色的构建工具.我最近在.NET Rocks 第362集中听到的一个有希望的事情是James Kovac的PSake,一个完全基于PowerShell的构建系统.这听起来很有希望,因为你可以用PowerShell做的事情在理论上是相当无限的.
我们实际上使用了NAnt和MSBuild与CruiseControl的组合.NAnt用于脚本流控制并调用MSBuild来编译项目.触发物理构建后,NAnt用于将单个项目构建输出发布到共享位置.
我不确定这是最好的过程.我想我们中的许多人仍然在寻找一款出色的构建工具.我最近在.NET Rocks 第362集中听到的一个有希望的事情是James Kovac的PSake,一个完全基于PowerShell的构建系统.这听起来很有希望,因为你可以用PowerShell做的事情在理论上是相当无限的.
我只想把FinalBuilder投入到混音中.这不是免费的,但是如果你厌倦了编辑XML文件并想要一个更好的(IMO)环境来工作,我会试一试.
我和他们一起工作过,总是回到FinalBuilder.
我完全使用MSBuild进行构建.这是我的通用MSBuild脚本,它在树中搜索.csproj文件并构建它们:
Debug $(MSBuildProjectDirectory)\Build\$(Configuration) $(MSBuildProjectDirectory)\**\*.csproj $(DeployDir)\*.Test.dll
(对不起,如果它有点密集.Markdown似乎正在剥离空白行.)
虽然理解了概念并且所有依赖项都是自动处理的,但它非常简单.我应该注意到我们使用Visual Studio项目文件,它们内置了很多逻辑,但是这个系统允许人们在Visual Studio IDE或命令行中几乎完全相同地构建,并且仍然为您提供添加内容的灵活性您可以在上面的脚本中看到的xUnit测试中的规范构建.
一个PropertyGroup是所有配置发生的地方,可以自定义事物,例如从构建中排除某些项目或添加新的测试程序集掩码.
ItemGroup是发现树中所有.csproj文件的逻辑发生的地方.
然后有目标,大多数人熟悉make,nAnt或MSBuild应该能够遵循.如果调用Build目标,则调用__Compile,__Deploy和__Test.Clean目标在所有项目文件上调用MSBuild,以便清理它们的目录,然后删除全局部署目录.重建调用Clean然后Build.
还有另一个名为NUBuild的新构建工具(一个非常智能的包装器).它重量轻,开源,非常易于安装,几乎不需要维护.我非常喜欢这个新工具,我们已经将它作为我们项目持续构建和集成的标准工具(我们在75个开发人员中拥有大约400个项目).试试看.
http://nubuild.codeplex.com/
易于使用的命令行界面
能够定位所有.NET Framework版本,即1.1,2.0,3.0和3.5
支持基于XML的配置
支持项目和文件引用
自动为给定项目生成"完整订购的构建列表" - 无需维护.
能够检测和显示循环依赖关系
执行并行构建 - 自动决定生成的构建列表中的哪些项目可以独立构建.
能够处理代理程序集
提供构建过程的可视线索,例如,显示"%completed","当前状态"等.
以XML和文本格式生成详细的执行日志
与CruiseControl.NET持续集成系统轻松集成
在定位2.0 +版本时可以使用XMLLogger之类的自定义记录器
能够解析错误日志
能够将构建的程序集部署到用户指定的位置
能够将源代码与源代码控制系统同步
版本管理功能