TFS 2015可以构建变量访问其他构建变量吗?

时间:2015-12-02 09:56:55

标签: variables tfs tfsbuild tfs2015 azure-pipelines

当我在新的TFS 2015团队构建中定义自定义变量时,如下所示:
姓名:SomeOutput
价值:$(System.DefaultWorkingDirectory)\Some

......它似乎没有展开$(System.DefaultWorkingDirectory) 有办法解决这个问题吗?

修改:
至少它似乎没有在任何地方扩展。

例如,在MSBuild-Arguments中,/p:OUTPUT="$(SomeOutput)"已扩展为/p:OUTPUT="C:\TfsData\BuildAgents\_work\3\s\Some"但是当我添加cmd行构建任务时,工具设置为cmd且参数设置为/k set },它打印
SOMEOUTPUT=$(System.DefaultWorkingDirectory)\Some

编辑2: 这是我的变量
variables

这是我的工作流程步骤
workflow

这就是构建打印的内容 build output

3 个答案:

答案 0 :(得分:10)

您可以使用Visual Studio Marketplace中的VSTS Variable Tasks extension

  

在“变量”屏幕中定义变量并使用其他变量作为值时,它们不会被展开(如您所料)。而是将文字文​​本传递给工作流中的任务。如果没有这个小任务,以下配置将不起作用:

Variable              Value
Build.DropLocation    \\share\drops\$(Build.DefinitionName)\$(Build.BuildNumber)
     

通过将Expand变量任务添加到工作流程的顶部,它将负责扩展,因此它下面的任何任务都将获得您所追求的价值。

https://github.com/jessehouwing/vsts-variable-tasks/wiki/Expand-Variable

PS:新代理(版本2.x)现在自动扩展变量。

答案 1 :(得分:4)

可以实现。

您可能需要使用Geckofx-Winforms代替% %来调用$中的变量来打印结果。还需要在命令的前面添加cmd。这是一个简单的例子: cmd prompt expansion of variables example

注意:<{strong> callSystem.DefaultWorkingDirectory中不可用(不确定原因);您需要使用cmd代替。可以在日志中查看详细信息。

答案 2 :(得分:2)

我遇到了同样的问题 - 希望拼凑一个由几个内置变量组成的路径并将其传递给PS脚本。

解决方法: 我最终通过相应的生成环境变量(例如$env:BUILD_SOURCESDIRECTORY)将实际脚本中的变量组合在一起。

不是我原本想到的,但它起码至少。缺点 - 如果我需要更改路径,我总是需要更改PS脚本而不是构建变量。