如何将多个TFS 2012生成定义链接到单个生成定义中

如何将多个TFS 2012生成定义链接到单个生成定义中,tfs,build-automation,Tfs,Build Automation,如何在TFS 2012中创建生成定义的层次结构 我目前有一个主构建脚本(.cmd),它调用多个子脚本(.cmd)。 我想将其迁移到TFS构建系统并维护层次结构 我似乎不知道使用TFS 2012构建系统是否可以实现这一点 下面是我要说的: MasterBuildScript.cmd 调用组件脚本1 调用组件脚本2 调用componentscript3 呼叫 调用所有组件的打包例程 componentscript1.cmd 构建解决方案组件1 构建解决方案组件2 构建解决方案组件3 ... co

如何在TFS 2012中创建生成定义的层次结构

我目前有一个主构建脚本(.cmd),它调用多个子脚本(.cmd)。
我想将其迁移到TFS构建系统并维护层次结构

我似乎不知道使用TFS 2012构建系统是否可以实现这一点

下面是我要说的: MasterBuildScript.cmd 调用组件脚本1 调用组件脚本2 调用componentscript3 呼叫 调用所有组件的打包例程

componentscript1.cmd 构建解决方案组件1 构建解决方案组件2 构建解决方案组件3 ...

componentscript2.cmd 构建解决方案组件B1 构建解决方案组件B2 构建解决方案组件B3 ...

更多组件

有没有办法通过标准TFS 2012构建定义做到这一点?
-布鲁斯

有一种方法可以做到这一点,而无需进行任何自定义编码。但是,您必须对构建过程模板进行少量添加。它不使用代码,它使用Windows工作流基础。 基本上,您需要为当前拥有的每个.cmd构建脚本设置TFS团队构建定义。一个用于主构建,一个用于每个组件构建。这里涉及的实际工作是将.cmd脚本转换为TFS构建定义

然后,为了对“子”构建自动排队,您可以编辑主构建定义的流程模板,并添加“InvokeProcess”活动—这使您可以将shell输出到命令行,作为构建流程的一部分。可以使用命令行实用程序TFSBuild.exe启动“子”生成


我在过去使用过类似的东西,我为我的核心组件集构建了一个构建。然后,该生成将启动所有依赖于这些程序集的生成。

通过编写自定义代码/活动,确保可以从主生成定义中调用多个生成定义。但你到底想实现什么?如果您的CMD文件只是编译解决方案文件,为什么要继续使用它们?您使用这些子脚本是为了处理依赖关系还是其他原因?是什么情况迫使您保留多个构建定义?详细解释!是的,您可以通过使用InvokeProcess并调用CMD脚本来实现这一点,我知道这一点。但是你提到的解决方案有很多缺点。比方说,您创建了一个只调用CMD脚本的构建定义,然后您完全无法控制TFS中发生的事情。您正在生成一个新进程,该进程在启动时运行。如果您想停止正在运行的构建,那么如果您只是在TFS中停止构建,它不会停止它。批处理文件仍将运行。这只是一个例子。这就是为什么我想知道他的根本问题,然后提出解决方案。仅从TFS build def运行CMD脚本不是最佳解决方案。从构建定义中调用现有的.CMD脚本不是我建议的。你说得对,这是个糟糕的主意。重新阅读我的回答,我可以看出你可能会这样解释。这些.cmd脚本需要转换为TFS构建定义,这些定义执行与原始.cmd脚本相同的工作。InvokeProcess活动唯一应该使用的是通过TFSBuild.exe启动“子”构建。