有没有办法在Visual Studio Team Services中的任务之间保持环境值的更改?我正在使用Powershell来改变它,但它只是在任务中改变它而不是整个过程。
Write-Verbose "Before: $Env:SuperVersion"
$Env:SuperVersion = $NewVersion
Write-Verbose "After: $Env:SuperVersion"
Write-Verbose "Final: $Env:SuperVersion"
我看到之后的变化,但最终始终获得原始值
答案 0 :(得分:16)
根据this问题,以下行可以解决问题。
Write-Host ("##vso[task.setvariable variable=SuperVersion;]$NewVersion")
您可以在here
中找到更多类似的命令
答案 1 :(得分:1)
下面已经针对此问题发布了正确的答案,但我认为以下博客中的讨论专门针对设置构建变量的两种不同方式:一种变量仅在特定任务中可用它是设置的,另一个用于在一个任务中设置构建变量然后在另一个任务中访问它:
答案 2 :(得分:0)
使用$env
创建的环境变量:Process
个变量,因此当进程退出时它们会丢失,您无法从其他进程(PowerShell实例)访问它们。
您需要创建User
或Machine
环境变量:
[Environment]::SetEnvironmentVariable('SuperVersion', $NewVersion, 'User')
[Environment]::SetEnvironmentVariable('SuperVersion', $NewVersion, 'Machine')
我不确定它会在VS Team Services中运行,你必须对它进行测试。
参考:
答案 3 :(得分:0)
我发现使用后
写主机(“ ## vso [task.setvariable variable = SuperVersion;] $ NewVersion”)
在同一任务中,该值没有更改,但是在以后的任务中,该值已更改。
这是在TFS 2018上使用嵌入式Powershell
第一次任务
$ENV:SuperVersion = "2.0"
Write-Host ("##vso[task.setvariable variable=SuperVersion;]"3.2"")
# Output will be "2.0"
Write-Output $ENV:SuperVersion
$ENV:SuperVersion = "5.5"
# Output will be "5.5" but only within the scope of this task.
Write-Output $ENV:SuperVersion
下一步任务
Write-Output $ENV:SuperVersion
# Output is "3.2"