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

TFS 2015 Can build variables access other build variables?

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

...好像没有展开$(System.DefaultWorkingDirectory).
有解决办法吗?

编辑:
至少它似乎并没有到处扩展。

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

编辑 2: 这是我的变量

这是我的工作流程步骤

这就是构建打印的内容

可以实现

您可能需要使用 % % 而不是 $ 来调用 cmd 中的变量来打印结果。还需要在命令前面加上call。这是一个简单的例子:

注意: System.DefaultWorkingDirectorycmd 中不可用(不知道为什么);您需要改用 System_DefaultWorkingDirectory 。详情可查看日志

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

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

不是我最初的想法,但至少它有效。缺点 - 如果我需要更改路径,我总是必须更改 PS 脚本而不是构建变量。

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

When you define a variable in the Variables screen and use other variables as value, they won't be expanded (as you may have expected). Instead the literal text is passed to the tasks in the workflow. Without this little task the following configuration won't work:

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

By adding the Expand variable(s) task to the top of your workflow, it will take care of the expansion, so any task below it will receive the value you're after.

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

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