0

我有一个使用 TFS 构建和发布的 Web 应用程序。发布定义包含一个任务组,其中包含部署 Web 应用程序所需的所有步骤。

我想要做的是确定某个值并将其存储在一个变量中,以便稍后在其他发布任务的发布过程中使用。

此时,任务组中的第一步是一个 Powershell 任务,该任务确定必要的值并将其存储在环境变量中,使用:

Write-Output ("##vso[task.setvariable variable=MyVar;]$var")

当我在下一个任务(同样,一个 PowerShell 任务)中使用此环境变量时,它使用以下命令完美运行:

Write-Host "Doing stuf for: $env:MyVar"

当它变得奇怪时,我想将变量用作(多个)不同任务的参数。当环境变量没有默认值时,使用第一个 PowerShell 任务的计算值,一切正常。但是当环境变量没有默认值并在能够再次保存发布定义之前强制提供一个时,TFS 不喜欢它。当我提供默认值时,使用该变量作为任务参数的任务使用默认值,而不是计算值。我希望应该使用计算值,因为第二个 PowerShell 任务可确保正确存储计算值。

所以,我看到的症状:

  • 当不提供默认值时,脚本中的代码以及任务参数使用计算值
  • 提供默认值时,脚本中的代码使用计算值,任务参数使用默认值

是我做错了什么,还是我使用了错误的环境变量,我应该使用不同的方法吗?

4

1 回答 1

2

据我了解,您想在任务组内的 powershell-task 中定义变量,但您也被迫在环境变量中提供一个值,导致变量有时在 powershell 中设置值,有时具有在环境变量中定义的值。

解决方案是只提供环境变量本身的名称,因此它总是被您在 powershell 任务中设置的值覆盖。

来源https ://blogs.msdn.microsoft.com/harshillodhi/2016/11/29/vststfs-understanding-task-groups-and-its-various-use-cases-with-setvariable-logging-command/ 下标题“什么是 setvariable 日志记录命令以及如何将其与任务组一起使用? ”,引用了三个场景。听起来第二种情况可能适合您的需求。

于 2018-08-01T10:24:26.133 回答