利用 MSBuild 实现 Web Application 项目的每日构建(上)

每日构建,对于这个术语,大家已是耳熟能详。不管项目有多大或有多小,我们都在潜意识的进行持续性构建,无非就是自动化和方便性的程度高低而已。

最近几年我主要开发基于 .NET 平台的应用软件,其中又以 B/S 架构为多。既然是在.NET平台上开发,我倾向于尽量使用此平台上的工具来做每日构建。经过几番查找和实验,发现以 MSBuild 为主、以基于 MSBuild 的开源软件为辅的方法,即可完成 Web Application 项目的自动化每日构建。

我要实现的每日构建,其流程如下:

  1. 从源代码库获取最新源代码;
  2. 根据需要(Debug/Release)编译项目;
  3. 备份编译的项目程序集及其所需文件;
  4. 项目发布;
  5. 每日构建结果通知;

所用软件:

MSBuild,其用法请参考微软相关文档,MSBuild Community Tasks,则可以参考其文档。

至于我为什么要用 MSBuild Community Tasks,原因在于 MSBuild 提供的 Task 不足以达到我的要求,比如版本号维护、文件(夹)压缩、在 IIS 中创建/删除虚拟目录、EMail等等。

一旦准备好环境,就可以开始每日构建的具体步骤了。

考虑到每日构建的最后一步——结果通知——依赖编译及发布的结果,以及自动化的要求,故分为以下三个文件来完成调用:

  1. 步骤2、3、4放在 Project 文件 TestProject.proj 中;
  2. 步骤1和步骤5放在 Project 文件 DailyBuild.proj 中,其间调用 TestProject.proj,在步骤5中根据编译发布结果发送不同的 EMail;
  3. 批处理文件 DailyBuild.bat,调用 Project 文件 DailyProject.proj,记录日志,用以 Windows 任务调用;

以下是各个步骤的源代码。

步骤1:从源代码库获取源代码

<!--  忽略错误,我们需要自己控制结果。 -->
< Target  Name ="SyncSource" >
    
< Exec
        
Command ="[Your command line]"
        IgnoreExitCode
="true"
        
>
        
< Output  TaskParameter ="ExitCode"  PropertyName ="ExitCode"   />
    
</ Exec >

    
< Error  Text ="Failed to Sync source code."  Condition =" $(ExitCode) != 0 "   />
</ Target >

 步骤2:根据需要(Debug/Release)编译项目,及步骤3:备份编译的项目程序集及其所需文件

< Target  Name ="CoreBuild" >
    
< RemoveDir  Directories ="$(TempDir)"  Condition ="Exists('$(TempDir)')"   />

    
< MakeDir  Directories ="$(TempDir)%(Configuration.Identity)"   />

    
< MSBuild  Projects ="$(ProjectReferences)"  Targets ="Build"
        Properties
="Configuration=%(Configuration.Identity);OutDir=$(TempDir)%(Configuration.Identity)"
    
/>

    
< Copy
        
SourceFiles ="$(TempDir)%(Configuration.Identity)_PublishedWebsitesWebWeb.config.%(Configuration.Identity)"
        DestinationFiles
="$(TempDir)%(Configuration.Identity)_PublishedWebsitesWebWeb.config"
        SkipUnchangedFiles
="false"
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值