TFS 2018 XAML构建迁移
我目前正在将我们的XAML构建定义升级到新的构建系统。我已经克服了一些错误,但现在我已经到了一个我无法再分辨什么是错误的地步。我们在大多数构建过程中都使用PowerShell脚本,尽管服务器上提供了所有必需的数据,但在运行构建时我遇到以下错误: 有人知道是什么导致了这个错误吗?或者至少我应该去哪里检查 提前谢谢 编辑: 该脚本准备外部工具无法完成的构建配置,并且特定于我们的项目。错误发生在行TFS 2018 XAML构建迁移,tfs,azure-devops,tfsbuild,tfvc,Tfs,Azure Devops,Tfsbuild,Tfvc,我目前正在将我们的XAML构建定义升级到新的构建系统。我已经克服了一些错误,但现在我已经到了一个我无法再分辨什么是错误的地步。我们在大多数构建过程中都使用PowerShell脚本,尽管服务器上提供了所有必需的数据,但在运行构建时我遇到以下错误: 有人知道是什么导致了这个错误吗?或者至少我应该去哪里检查 提前谢谢 编辑: 该脚本准备外部工具无法完成的构建配置,并且特定于我们的项目。错误发生在行$teamProjectCollection=… Function Get-BuildNumberFro
$teamProjectCollection=…
Function Get-BuildNumberFromUri() {
<#
.SYNOPSIS
Reads the build number from the current TFS build ($Env:BUILD_BUILDURI)
.DESCRIPTION
Reads the build number from the current TFS build ($Env:BUILD_BUILDURI)
.NOTES
May fail if $env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI or $env:BUILD_BUILDURI
are not set
#>
[String] $CollectionUrl = "$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"
[String] $BuildUrl = "$env:BUILD_BUILDURI"
if (-not $CollectionUrl -or -not $BuildUrl) {
return "0"
}
[void[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Client")
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Build.Client")
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.VersionControl.Client")
$teamProjectCollection = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($CollectionUrl)
$buildServer = $teamProjectCollection.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])
$buildDetail = $buildServer.GetBuild($BuildUrl)
$buildNumber = $buildDetail.BuildNumber
return $buildNumber
函数Get-BuildNumberFromUri(){
[字符串]$CollectionUrl=“$env:SYSTEM\u TEAMFOUNDATIONCOLLECTIONURI”
[String]$BuildUrl=“$env:BUILD\u BUILDURI”
if(-not$CollectionUrl-或-not$BuildUrl){
返回“0”
}
[void[System.Reflection.Assembly]::LoadWithPartialName(“Microsoft.TeamFoundation.Client”)
[void][System.Reflection.Assembly]::LoadWithPartialName(“Microsoft.TeamFoundation.Build.Client”)
[void][System.Reflection.Assembly]::LoadWithPartialName(“Microsoft.TeamFoundation.VersionControl.Client”)
$teamProjectCollection=[Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($CollectionUrl)
$buildServer=$teamProjectCollection.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])
$buildDetail=$buildServer.GetBuild($BuildUrl)
$buildNumber=$buildDetail.buildNumber
返回$buildNumber
}/P>< P>在Team Foundation Server的以前版本中,客户端对象模型在GAC中注册,并且在运行XAML时由构建代理预加载。在新代理中,构建步骤独立于客户端对象模型。
有两个选项可以定位客户端对象模型程序集:- 通过引用客户机对象模型Nuget包,随powershell脚本一起提供客户机对象模型。
- 并从Team Explorer扩展文件夹加载客户端对象模型
$env:build.BuildNumber
引用该变量
要设置内部版本号,请使用向控制台写入特殊语句
$value = "$($env:Build.BuildNumber)_US`
Write-Host "##vso[build.updatebuildnumber]$Value"
或者,您可以使用中的我的设置变量任务,问题是:
您正在使用新的生成系统。您需要后退一步,并根据新生成系统的功能重新评估现有脚本
您有一个大的PowerShell代码片段,可以检索版本号。这太棒了,除了两件事:
$env:build\u BUILDNUMBER
变量来检索当前版本号。无需特殊代码在生成过程中的什么时候?脚本在做什么?这是您的脚本中的一个错误;在没有看到脚本的情况下,“打开”可以帮助您排除故障。@DanielMann添加了脚本中的一个片段。它发生在生成任务开始之前,因为此脚本是在预生成任务中执行的。您可以更新生成编号。有一个特殊的日志注释以实现这一点。因此,为了保持与上面截图中相同的功能,我只需更改脚本以使用REST API?我们需要使用一个特殊的版本号,因为我们在末尾添加了一个内部国家代码。您可以在版本定义中设置版本号格式。
$env:build\u BUILDNUMBER的内容代码>正是您在生成定义中定义的内容。我认为创建生成后,您无法更改生成编号。从Team Explorer扩展文件夹加载成功,谢谢