在我的powershell步骤中考虑以下内容:
-source "c:\builds\$(Build.BuildNumber).zip"
结果是“c:\ builds \ 20171005.1.zip”
如果我尝试在我发布的版本变量的配置选项卡中设置以下内容,就像这样 Name = MyBuildNumber Value = $(Build.BuildNumber)
如果我改变我的poweshell看起来像这样
-source "c:\builds\$(MyBuildNumber).zip"
结果是“c:\ builds \ $(Build.BuildNumber).zip”
我在这做错了什么?我尝试了几种不同风格的存储变量都具有相同的效果。真的可以使用一些建议。
---------作为ANDY-MSFT ---- 我可以确认我使用的是版本14.102.25423.0。我安装了可变扩展包..没有区别。日志显示文字输出。我很确定我使用的是完全相同的设置。请检查我的定义变量和powershell语法的屏幕截图。
答案 0 :(得分:1)
您使用的TFS 2015的确切版本是什么?是什么版本?
我在TFS 2015 Update4(Version 14.114.26403.0
,Agent.Version:1.95.4
)上测试过,一切都按预期工作。
因此,请检查What version of Team Foundation Server do you have,如果您使用的是早期版本,则可以尝试升级到Update4或更高版本,然后重试。
此外,如果您仍想保留当前版本,可以使用VSTS Variable Tasks扩展:Variable Toolbox来扩展构建/发布变量。 (以及源代码here供您参考。)
在“变量”屏幕中定义变量并使用其他变量作为值时,它们不会被扩展(正如您所预期的那样)。而是将文字文本传递给工作流中的任务。如果没有这个小任务,以下配置将无法运行:
Variable Value Build.DropLocation \\share\drops\$(Build.DefinitionName)\$(Build.BuildNumber)
通过将Expand变量任务添加到工作流程的顶部,它将负责扩展,因此它下面的任何任务都将获得您之后的价值。
PS:新代理(版本2.x)现在自动扩展变量。
这个类似的帖子供您参考: TFS 2015 Can build variables access other build variables?
<强>更新强>
根据您的TFS版本,它应该是TFS 2015 update3(您可以升级到Update4或更高版本,如果这是一个选项,也可以相应地升级构建代理)。要检查代理版本:Go Manager Server(齿轮图标)&gt;&gt; AgentPool&gt;&gt;选择一个游泳池&gt;&gt;选择代理商&gt;&gt;切换到功能,您将在该页面中看到代理版本。