为持续集成做准备:支持 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 构建时只会更新代码,不会提交代码。

已标记关键词 清除标记
相关推荐
<p> <span style="font-size:16px;">课程采用目前市面上比较热门技术Vue、Spring Boot、Spring Security开发,符合绝大多数公司开发主流技术,采用前后端分离完成项目开发;<br /></span> </p> <p> <span style="font-size:16px;">    课程分前端和后端两部分;前端采用Vue Element 完成界面布局,从零开始搭建前端项目,手把手带领搭建完成从0到1完成前端项目开发,数据接口对接,动态菜单加载,动态路由生成,token校验等;后端采用Spring Boot 、Spring Security开发接口,从0开始带领搭建后端项目,权限管理设计开发、Spring Security权限框架在前后端分离项目中使用等。课程了详细笔记文档,方便使用学习。<br /></span> </p> <p> <span style="font-size:16px;">    课程收货</span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span></span><span>掌握Vue Element 开发后台页面能力,从而深入理解Vue在后台管理系统中开发流程;</span></span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span></span><span>掌握运用Spring Boot开发后台接口能力;</span></span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span></span><span>掌握Spring Security开发权限管理能力;</span></span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span style="font-size:14px;"></span><span>掌握Redis缓存在开发中运用能力;</span></span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span style="font-size:14px;"></span><span>最终学会用Vue Element  Spring Boot 从0到1搭建小型前后端分离项目能力,从而更深入理解系统中整个数据流向,从哪里来,到哪里去;</span></span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span> </span></span></p><p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span>课程截图<br /></span></span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span>    <img src="https://img-bss.csdn.net/202005240214191169.png" alt="" /></span></span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span><br /></span></span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span><img src="https://img-bss.csdn.net/202005240215025050.png" alt="" /><br /></span></span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span><img src="https://img-bss.csdn.net/202005240215236455.png" alt="" /><br /></span></span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span><br /></span></span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span><img src="https://img-bss.csdn.net/202005240215342541.png" alt="" /><br /></span></span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <br /></p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span><br /></span></span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span><br /></span></span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span><br /></span></span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span><br /></span></span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span><br /></span></span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span><br /></span></span> </p> <p style="background-color:#FFFFFF;color:#333333;font-size:19px;text-align:justify;"> <span><span><br /></span></span> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页