使用PS环境变量的TFS 2015构建步骤失败

时间:2016-04-05 18:13:08

标签: powershell environment-variables tfsbuild tfs2015

我有一个vNext构建步骤,在MSBuild之后运行PowerShell脚本。我收到了这个错误:

  

[error] BUILD_SOURCESDIRECTORY:术语“BUILD_SOURCESDIRECTORY”未被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。

     

...

     

[error] BUILD_BUILDNUMBER:术语“BUILD_BUILDNUMBER”无法识别为cmdlet,函数,脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并尝试   试。

这是脚本:

if([string]::IsNullOrEmpty($BuildNumber)){
    $BuildNumber = $Env:TF_BUILD_BUILDNUMBER
}
if([string]::IsNullOrEmpty($SolutionRoot)){
    $SolutionRoot = $Env:TF_BUILD_SOURCESDIRECTORY
}
Write-Output "-BuildName: $BuildNumber"
Write-Output "-BuildRoot: $SolutionRoot"

脚本在几周内没有变化。构建定义在几个月内没有变化。 TFS昨晚更新了更新1和2:

我尝试过另外一个版本,但它有同样的问题,所以它不是第一个煎饼类型的问题。我找不到更新可能对环境变量做了什么,使它们无法识别。

我很感激任何想法,我知道如何标记答案! =)

更新 我尝试删除TF_,但失败的错误相同

$BuildNumber = $Env:BUILD_BUILDNUMBER
$SolutionRoot = $Env:BUILD_SOURCESDIRECTORY

更新 我们确实让这个工作重新开始了,但是我仍然不知道为什么工作从一夜之间工作到不工作。 TFS更新必须发挥作用。

2 个答案:

答案 0 :(得分:0)

在更新期间,没有任何关于使用PS环境变量的信息。使用我的TFS 2015update2测试通过。

请尝试使用以下内容:

$BuildNumber = $Env:TF_BUILD_BUILDNUMBER更改为$BuildNumber = $Env:BUILD_BUILDNUMBER

$SolutionRoot = $Env:TF_BUILD_SOURCESDIRECTORY更改为$SolutionRoot = $Env:BUILD_SOURCESDIRECTORY

答案 1 :(得分:0)

好的,我的构建工作再次起作用,因为我调整了TFS Build定义如何将参数传递到PS脚本中。我认为有两个略有不同的问题在起作用。

以下是在PS Arguments字段中对TFS 2015 Base起作用的内容:

-SolutionRoot $(BUILD_SOURCESDIRECTORY) -BuildNumber $(BUILD_BUILDNUMBER)

这里有关于PS Arguments字段中TFS 2015 Update 2的作用:

-SolutionRoot $(Build.SourcesDirectory) -BuildNumber $(Build.BuildNumber)

此处有相关文档:https://msdn.microsoft.com/en-us/library/vs/alm/build/scripts/variables,其中说[sic]

  

任何文本输入都可以使用$(variable_name)语法引用变量,并在运行时将替换为实际值。所有变量也以upppercase和any的形式导出到环境中。用_代替。在脚本中,您可以通过环境引用变量,即%VARIABLE_NAME%,$ VARIABLE_NAME,$ env:VARIABLE_NAME,取决于操作系统。

根据我的试验和错误,该段落的第一句似乎是正确的,如果我在定义要提供给我的脚本的参数时遵守该文档的全局构建变量部分中的详细信息,则可以正常工作。也许我对全部大写和下划线的使用已被弃用,最后在更新2中被删除。我认为这是问题#1。

我对其余两个关于环境变量的句子表示怀疑。当问题没有因为问题#1而进入我的脚本时,尽管文档说的是什么,我没有看到这些环境变量的证据。这是问题#2,这是我第一次看到的错误消息。我已经改变了我的脚本,完全依赖于这些论点。