TFS Build 2010中调用外部程序的示例

1 问题

由于以前公司使用的是TFS 2008.现在已经升级到了TFS 2010.生成构建大不一样。因此2008的脚本基本上被放弃了。于是尝试使用TFS Build 2010来实现以前脚本中的一些功能。

以前脚本内有一个使用exec调用devenv的功能,用来生成工程的Setup文件。2010里面完全不同了。下面记录了我如何使用TFS Build 2010来完成上述操作。

2 简介

新的构建系统使用了xaml格式,打开后类似流程图。不需要直接写代码,所有操作都在工具箱里拖动到流程图中即可。如下图

可以看到有么的工具箱中有一个Sequence,就是"顺序执行"的意思。对应了右面流程图中最外面的框。有了顺序执行的框,才可以将里面的各个执行操作连接起来

上左图中,可以看到一次生成的主要顺序为

获取生成

设置放置文生成文件的地方。这里会包括设置生成版本号、建立存放生成文件文件夹等操作

这里是重点。就是在Agent上进行编译。我们一会的脚本也会写在这里面。

检查门签入。

每个双击打开都可以看到他们下面的工作。

3 思路

当初有一个项目的安装文件时这样进行的

在生成服务器获取所有源码后,调用devenv编译sln文件。这样会在其制作生成文件的脚本下生成安装文件。然后将其拷贝到编译文件夹下。

因此我们大概思路就是

1 在其完成源码获取后进行编译sln(也可以是在其用msbuild编译成功后进行,msbuild编译不会生成安装文件)

2 将生成后的安装文件拷贝到相应目录。

4 实现

由于要进入编译成功后。我们进入

Run On Agent-àTry Compile, Test, and Associate Changesets and Work Items-àTry

在控制流中加入一个IF做判断是否编译成功。我取名叫"If Compilation Successful(Make Setup Files)"如下图

双击后在其Condition下加入"BuildDetail.CompilationStatus = Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Succeeded

"

这样只有在生产成功后才会执行如下"Then"的操作。

在Then中添加一个Sequence。这样可以执行多步操作。我们将会把调用devenv和拷贝放进去。如下图

首先我们拉入一个"Invoke Process"这个工具可以调用外部命令。

在其属性中我们再其FileName中写入

"C:/Program Files (x86)/Microsoft Visual Studio 8/Common7/IDE/devenv.exe"

这个是devenv的路径。

在其Arguments中写入

String.Format(SourcesDirectory + "/" + "Project_VS2005.sln /Build" + " " + """release""")

这个是执行的命令。编译sln

在拉入一个"CopyDirectory"这个工具可以做拷贝目录操作

在其属性中Source中写入

String.Format(SourcesDirectory + "/EMSetup/Release")

在执行编译sln后会在这个目录中生成安装文件。

在其属性Destination中写入

String.Format(BinariesDirectory + "/SetupFile")

我们将安装文件拷贝到BinariesDirectory目录中。这个目录最终会被拷贝到Drop目录下。

生成工作就完成了。比TFS Build 2008 简单明了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值