TFS 2010:按顺序执行不同的构建和命令行任务?

时间:2011-12-22 08:37:30

标签: msbuild tfs2010 build-automation installshield

我使用TFS 2010的构建过程应该一个接一个地执行不同的任务,如:

  1. 在解决方案中构建第一个项目

  2. 通过命令行执行MSBuild(发布项目)

  3. 通过命令行执行第三方工具(混淆二进制文件)

  4. 在解决方案中构建第二个项目(InstallShield项目)

  5. 我怎样才能做到这一点?我可以在Build Definition中定义几个项目但是如何在这些构建步骤之间调用几个命令行任务?构建定义中的MSBuildArguments:每个项目/解决方案的每个msbuild调用都是这些参数吗?

    由于

    康拉德

2 个答案:

答案 0 :(得分:3)

首先,您需要在构建定义中添加不同的*.*proj而不是一个大*.sln - 或者(甚至更好)构建多个*.sln&命令他们在构建定义中构建。
所以你可以组织一个Project1.slnProject2.sln等仅用于构建的文件。

除此之外,您还必须在构建过程模板中进行更改才能实现此目的。
默认情况下,您可以获得类似的内容,在较大的foreach内执行每个集项目/解决方案:
enter image description here

一种好方法是将此增强为序列,其中所有自定义操作都设置为InvokeProcess个活动:
enter image description here

显然,您必须在此处插入流控制,以便Publish& Dotfuscator第一次执行(Project1.sln构建的地方),ISDEV第二次执行(Project2.sln生成switch)。在下面的示例中,我使用了Publish&打包Dotfuscator&新Sequence中的Assign 最后,你必须要有某种计数器。最直接的选择是使用默认值== 1设置新的Int32变量,并在执行期间手动增加它。在下面的示例中,这是在较低的Complie the Project
enter image description here

中完成的

{{1}}的最后覆盖以及更改的构建定义应该会得到你想要的东西。

答案 1 :(得分:1)

团队构建定义包含sln和msbuild项目文件的列表。您可以简单地将InstallShield项目拆分到它自己的解决方案中(大多数开发人员无论如何都不会有InstallShield的副本)并为步骤2和3编写msbuild目标文件。然后告诉您的构建定义构建解决方案1,目标文件和解决方案2.

你也可以选择将这些东西放在postbuild事件中的目标文件中,用于解决方案1中的一个项目。

我不会在工作流程中这样做。