Tfs VSTS生成变量更新在队列新建时不起作用

Tfs VSTS生成变量更新在队列新建时不起作用,tfs,azure-devops,azure-pipelines-build-task,Tfs,Azure Devops,Azure Pipelines Build Task,下面是我为在队列新建时更新构建变量而编写的变量声明和powershell脚本 声明: powershell脚本: $fileData = Get-Content -Path C:\builds\agent\PreviousRevisionUpdate.txt $temp=$fileData[1] ##vso[task.setvariable variable=ActualRevision;]$temp Write-Host "$temp - $env:ActualRevision" 输出:

下面是我为在队列新建时更新构建变量而编写的变量声明和powershell脚本

声明:

powershell脚本:

$fileData = Get-Content -Path C:\builds\agent\PreviousRevisionUpdate.txt
$temp=$fileData[1]

##vso[task.setvariable variable=ActualRevision;]$temp
Write-Host "$temp - $env:ActualRevision"
输出:

2018-02-06T15:29:19.6035251Z ##[section]Starting: Actual Build Number Update
2018-02-06T15:29:19.6035251Z ==============================================================================
2018-02-06T15:29:19.6035251Z Task         : PowerShell
2018-02-06T15:29:19.6035251Z Description  : Run a PowerShell script
2018-02-06T15:29:19.6035251Z Version      : 1.2.3
2018-02-06T15:29:19.6035251Z Author       : Microsoft Corporation
2018-02-06T15:29:19.6035251Z Help         : [More Information](https://go.microsoft.com/fwlink/?LinkID=613736)
2018-02-06T15:29:19.6035251Z ==============================================================================
2018-02-06T15:29:19.6095263Z ##[command]. 'C:\builds\agent\_work\_temp\dd262af4-0863-4f8d-a14e-1d9ea50b4c72.ps1' 
2018-02-06T15:29:20.1186281Z 11 - 1
2018-02-06T15:29:20.1386321Z ##[section]Finishing: Actual Build Number Update
从上面的输出来看,它仍然将变量值显示为“1”,而不是“11”

下一个任务-更新程序集信息->我没有得到更新值的地方


我错过了什么吗??请帮帮我。

您应该可以只使用:$env:ActualRevision=$temp

Powershell脚本

$temp=123
Write-Host "Before: $temp - $env:ActualRevision"

$env:ActualRevision = $temp
Write-Host "After: $temp - $env:ActualRevision"
VSTS输出

Task         : PowerShell
Description  : Run a PowerShell script
Version      : 1.2.3
Author       : Microsoft Corporation
Help         : [More Information](https://go.microsoft.com/fwlink/?LinkID=613736)
==============================================================================
. 'D:\a\1\s\test.ps1'
Before: 123 - 2
After: 123 - 123

是的,您遗漏了一些重要的内容,实际上,值已更新。但是,它只能用作以下任务,而不能用于您更新的任务,这就是为什么powershell脚本的输出仍然将变量值显示为“1”而不是“11”

在taskcontext的变量服务中设置变量。第一项任务 可以设置变量,并且以下任务可以使用 变量。变量作为一个变量暴露于以下任务中 环境变量。

源链接:

对于测试,您可以在更新生成变量的任务之后添加powershell脚本,如下所示:

Write-Host "After: - $env:ActualRevision"
从结果中可以看到,在下面的任务中,
ActualRevision
的值已更改为11


更新:

我的剧本:

$temp=11
Write-Host "Before: $temp - $env:ActualRevision"


Write-Host ##vso[task.setvariable variable=ActualRevision;]$temp

Write-Host "After: $temp - $env:ActualRevision"
测试脚本(另一个任务):


您需要输出任务日志记录命令。因此,powershell脚本的代码应该是:

Write-Host "##vso[task.setvariable variable=ActualRevision;]$temp"

然后您可以在以下任务中使用它。

ActualRevision是您在生成定义的变量选项卡中设置的变量吗?@DenverDev是。实际上,我只在下一个任务中使用它,即将程序集信息任务项更新为“$(ActualRevision)”@nag它用作环境变量,您是否尝试过其他格式,如
$env:ActualRevision
?您是否正在使用第三方扩展,不确定他们将如何使用和扩展变量?如果使用自己的powershell脚本设置程序集信息,结果会是什么?示例:供您参考。是的,我尝试了$env:ActualRevision,它给出了类似“Not A integer value”的错误,如果我使用$(ActualRevision),则结果为“1”。我正在使用VSTS的“更新程序集信息”内置任务。你能检查一下我编辑的帖子吗?我已经在Powershell之后添加了下一个任务的快照script@nag:)在我的VSTS任务中没有这样的内置任务,您正在使用此任务吗?他说应该
必须是一个数值。
我建议您直接使用powershell脚本来执行此操作。有关构建变量中环境变量的概念,请参阅。在这种情况下,您的使用看起来更像是一个变量到另一个变量(任务的修订版)的转换,可能不起作用。是的。我正在使用您在链接中提供的相同任务。实际上,仅基于变更集更改,我可以在版本中增加修订号,因此我添加了此任务,并使用powershell更新临时文件中的修订号,并在队列时间更新env变量以更新程序集。变量已更新,但当我在下一步“更新程序集信息”任务中使用这个变量时,我得到的值仍然是“1”。我已经更新了上面的查询,请检查。
Write-Host "##vso[task.setvariable variable=ActualRevision;]$temp"