【发布时间】:2018-03-15 13:17:12
【问题描述】:
好的 - 我已经阅读了有关环境变量的所有内容以及它们如何无法通过同一进程设置和读取(即使在构建的后续步骤中也无法读取):
Environment.SetEnvironmentVariable("Major_Build_Number", BaseReleaseNumber, EnvironmentVariableTarget.Machine)
那么有没有人想出一种简单的方法来将信息从一个构建步骤传递到另一个构建步骤?在我的第一步中,我确定了内部版本号(这是一个相当复杂的过程,信不信由你),我需要将该内部版本号传递给最后一个构建步骤(这是一个复制文件步骤),以便它可以将构建复制到以内部版本号命名的文件夹。我试过设置一个环境变量,但不幸的是不能从同一个会话中设置和读取。必须有一个简单的方法来做到这一点。是的,我可以编写一个 PS 或批处理脚本来执行此操作并将值存储在文件或注册表中,但我更喜欢使用 Copy Files 任务,但我不知道如何传递该值。
我尝试在构建定义中定义一个变量并将值存储在那里,但在构建定义中设置后我似乎无法更改该值。
顺便说一句,这是本地安装 - 不是 VSTS。
有人有什么想法吗?
感谢安迪您的回复。所以我在 SetBuildNumberENVVar.ps1 中尝试了这个
param([Int32]$MajorBuildNumber=0,[Int32]$MinorBuildNumber=0)
Write-Host "##vso[task.setvariable variable=MajorBuildNumber]$MajorBuildNumber"
Write-Host "##vso[task.setvariable variable=MinorBuildNumber]$MinorBuildNumber"
然后我从命令行运行它:
c:\powershell .\SetBuildNumberENVVar.ps1 23 45
然后尝试回显变量:
echo %MajorBuildNumber%
%MajorBuildNumber%
如您所见,它似乎不起作用。我从 C# 脚本中尝试过这个:
int.TryParse("$(MajorBuildNumber)", out mbn);
运行后 mbn = 0。
知道我做错了什么吗?
【问题讨论】:
标签: environment-variables tfsbuild