我有一个使用 TFS 构建和发布的 Web 应用程序。发布定义包含一个任务组,其中包含部署 Web 应用程序所需的所有步骤。
我想要做的是确定某个值并将其存储在一个变量中,以便稍后在其他发布任务的发布过程中使用。
此时,任务组中的第一步是一个 Powershell 任务,该任务确定必要的值并将其存储在环境变量中,使用:
Write-Output ("##vso[task.setvariable variable=MyVar;]$var")
当我在下一个任务(同样,一个 PowerShell 任务)中使用此环境变量时,它使用以下命令完美运行:
Write-Host "Doing stuf for: $env:MyVar"
当它变得奇怪时,我想将变量用作(多个)不同任务的参数。当环境变量没有默认值时,使用第一个 PowerShell 任务的计算值,一切正常。但是当环境变量没有默认值并在能够再次保存发布定义之前强制提供一个时,TFS 不喜欢它。当我提供默认值时,使用该变量作为任务参数的任务使用默认值,而不是计算值。我希望应该使用计算值,因为第二个 PowerShell 任务可确保正确存储计算值。
所以,我看到的症状:
- 当不提供默认值时,脚本中的代码以及任务参数使用计算值
- 提供默认值时,脚本中的代码使用计算值,任务参数使用默认值
是我做错了什么,还是我使用了错误的环境变量,我应该使用不同的方法吗?