为持续集成做准备:支持 MSBuild + Xunit + NCover + FxCop + StyleCop 的构建脚本

    公司现在的构建脚本用的是 MSBuild ,这次也不打算换,只不过要加上测试和代码质量检查的功能。测试框架就用 Xunit ,这是 NUnit 开发者重新建立的一个开源项目,比 NUnit 要简洁,但因为相对比较新,和其他工具结合使用的时候要稍微多花点功夫。

 

    覆盖测试工具就用 NCover 了,因为 Caslte 就用这个,开发过程中没有少研究 Caslte 的构建脚本,我用的是 NCover 3.4,低版本的有可能出现 No data collected 错误。NCover 是收费的,所以 license 只有 XX 了。

 

   Xunit 也是开源的,我用的版本是 1.6.1,去 sourceforge 下载一个就行,里面有 Xunit 的 MSBuild 任务,生成的测试结果是 XML 需要一个 XmlTransform 任务转换。

 

   FxCop 用的是 10.0,现在集成到 Windows SDK 7.1 里面,安装了 SDK 以后再挖出来的,这个东西由免费。

 

   SytleCop 就到 CodePlex 上去找,我用的版本是 4.4。

 

   另外还需要 MSBuildCommunityTasks 和 MSBuild ExtensionPack 这个两个 MSBuild 任务扩展包。FxCop 任务在两个包里面都有,功能差不多,但 MSBuild ExtensionPack 的任务支持在 GAC 查找依赖,因此就用它了。MSBuild ExtensionPack 里面有个 StyleCop 任务,不过不能输出 XML 文件,不便于集成到 TeamCity,而且它需要 Microsoft.Dynamic.dll 和 Microsoft.Scripting.dll ,这个东西还要从 IronPython 的包里面挖出来,感觉很麻烦,于是使用 StyleCop 自带的任务,再用一个 XmlTransform 任务把输出的 XML 文件转换成 HTML 文件。

 

   构建时自动增加程序集版本号的功能用 MSBuild ExtensionPack 实现,与 Caslte 用的 MSBuildCommunityTasks 不同,这个任务不是每次新建 AssemblyInfo.cs 而是直接修改项目中的 AssemblyInfo.cs 文件,这就要求设置的条目必须在文件中存在, 否则会产生异常。但它的确能实现版本号自动增长,还有好几种增加方式。但有一点,为了不让 SVN 发现它修改源文件,它居然连 .svn 目录中的 base 文件都改,但还是会在提交的时候被 SVN 检查出来。所以目前的实现方式为:ClickToBuild 的时候不自增版本号,在 CI 服务器上构建时才自增,因为 CI 构建时只会更新代码,不会提交代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值