我使用TFS 2010的构建过程应该一个接一个地执行不同的任务,如:
在解决方案中构建第一个项目
通过命令行执行MSBuild(发布项目)
通过命令行执行第三方工具(混淆二进制文件)
在解决方案中构建第二个项目(InstallShield项目)
我怎样才能做到这一点?我可以在Build Definition中定义几个项目但是如何在这些构建步骤之间调用几个命令行任务?构建定义中的MSBuildArguments:每个项目/解决方案的每个msbuild调用都是这些参数吗?
由于
康拉德
答案 0 :(得分:3)
首先,您需要在构建定义中添加不同的*.*proj
而不是一个大*.sln
- 或者(甚至更好)构建多个*.sln
&命令他们在构建定义中构建。
所以你可以组织一个Project1.sln
,Project2.sln
等仅用于构建的文件。
除此之外,您还必须在构建过程模板中进行更改才能实现此目的。
默认情况下,您可以获得类似的内容,在较大的foreach
内执行每个集项目/解决方案:
一种好方法是将此增强为序列,其中所有自定义操作都设置为InvokeProcess
个活动:
显然,您必须在此处插入流控制,以便Publish
& Dotfuscator
第一次执行(Project1.sln
构建的地方),ISDEV
第二次执行(Project2.sln
生成switch
)。在下面的示例中,我使用了Publish
&打包Dotfuscator
&新Sequence
中的Assign
最后,你必须要有某种计数器。最直接的选择是使用默认值== 1设置新的Int32变量,并在执行期间手动增加它。在下面的示例中,这是在较低的Complie the Project
:
{{1}}的最后覆盖以及更改的构建定义应该会得到你想要的东西。
答案 1 :(得分:1)
团队构建定义包含sln和msbuild项目文件的列表。您可以简单地将InstallShield项目拆分到它自己的解决方案中(大多数开发人员无论如何都不会有InstallShield的副本)并为步骤2和3编写msbuild目标文件。然后告诉您的构建定义构建解决方案1,目标文件和解决方案2.
你也可以选择将这些东西放在postbuild事件中的目标文件中,用于解决方案1中的一个项目。
我不会在工作流程中这样做。