【问题标题】:TFS 2015 Build Step using PS environment variables fails使用 PS 环境变量的 TFS 2015 构建步骤失败
【发布时间】:2016-04-05 18:13:07
【问题描述】:

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

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

...

[错误]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 更新必须发挥作用。

【问题讨论】:

    标签: powershell environment-variables tfsbuild tfs-2015


    【解决方案1】:

    在更新期间没有改变使用 PS 环境变量。使用我的 TFS 2015update2 测试通过。

    用下面的方法再试一次:

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

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

    【讨论】:

    • 我已根据您的建议结果更新了我的问题。没有骰子。 =/
    【解决方案2】:

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

    以下是 TFS 2015 Base 在 PS Arguments 字段中的工作原理:

    -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,上面写着[原文如此]

    任何文本输入都可以使用 $(variable_name) 语法引用变量,并在运行时用实际值替换。所有变量也以大写字母和任何 .替换为_。在脚本中,您可以通过环境引用变量,即 %VARIABLE_NAME%、$VARIABLE_NAME、$env:VARIABLE_NAME,具体取决于操作系统。

    根据我的反复试验,如果我在定义要提供给我的脚本的参数时遵循该文档的“全局构建变量”部分中的详细信息,则该段落的第一句话似乎是正确的并且有效。也许我使用的全大写和下划线在更新 2 中已被弃用并最终被删除。我认为这是问题 #1。

    我对剩下的两个关于环境变量的句子有疑问。由于问题 #1,当参数没有进入我的脚本时,尽管文档说了什么,但我没有看到这些环境变量的证据。这是问题 #2,这是我第一次看到的错误消息的内容。我已更改脚本以完全依赖参数。

    【讨论】:

      猜你喜欢
      • 2017-06-26
      • 2016-06-01
      • 2016-11-27
      • 1970-01-01
      • 2015-07-09
      • 2023-03-08
      • 2018-05-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多