如何将MSBuild参数从构建定义传递到MSBuild工作流活动

时间:2013-02-13 10:46:43

标签: msbuild tfs2012 team-build

我在TFS工作流模板中定义了一个MSBuild活动,但是目前我必须将'property'命令行参数直接硬编码到模板中。

我希望能够通过高级设置'MSBuild Arguments'

在构建定义中指定参数

我可以看到我可能必须使用字符串replace / concat来构建命令行,如上所述here,但是我看不出我需要放什么,可能是这样的:

"/P:MyProperty=" + BuildDetail.Properteis("MyProperty")

1 个答案:

答案 0 :(得分:3)

这是默认的MsBuild任务使用的:

  

String.Format(“/ p:SkipInvalidConfigurations = true {0}”,MSBuildArguments)

您可以通过多个步骤更改构建过程模板中的MSBuildArguments变量。例如,我向流程模板添加了一个Run Architecture Validation属性,然后编辑了工作流,只需将/ValidateArchitecture=true附加到MSBuildArguments,然后再将它们传递给MsBuild活动。

 <If Condition="[PerformArchitectureValidation]" DisplayName="Configure Architecture Validation MSBuild Arguments">
  <If.Then>
   <Assign>
    <Assign.To>
     <OutArgument x:TypeArguments="x:String">[MSBuildArguments]</OutArgument>
    </Assign.To>
    <Assign.Value>
      <InArgument x:TypeArguments="x:String">[MSBuildArguments + " /p:ValidateArchitecture=true"]</InArgument>
    </Assign.Value>
   </Assign>
  </If.Then>
 </If>

PerformArchitectureValidation变量在类型Boolean的构建过程模板级别定义为属性。


更新:Wrote a blogpost that explains this with steps and screenshots