Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TFS 2018 XAML构建迁移_Tfs_Azure Devops_Tfsbuild_Tfvc - Fatal编程技术网

TFS 2018 XAML构建迁移

TFS 2018 XAML构建迁移,tfs,azure-devops,tfsbuild,tfvc,Tfs,Azure Devops,Tfsbuild,Tfvc,我目前正在将我们的XAML构建定义升级到新的构建系统。我已经克服了一些错误,但现在我已经到了一个我无法再分辨什么是错误的地步。我们在大多数构建过程中都使用PowerShell脚本,尽管服务器上提供了所有必需的数据,但在运行构建时我遇到以下错误: 有人知道是什么导致了这个错误吗?或者至少我应该去哪里检查 提前谢谢 编辑: 该脚本准备外部工具无法完成的构建配置,并且特定于我们的项目。错误发生在行$teamProjectCollection=… Function Get-BuildNumberFro

我目前正在将我们的XAML构建定义升级到新的构建系统。我已经克服了一些错误,但现在我已经到了一个我无法再分辨什么是错误的地步。我们在大多数构建过程中都使用PowerShell脚本,尽管服务器上提供了所有必需的数据,但在运行构建时我遇到以下错误:

有人知道是什么导致了这个错误吗?或者至少我应该去哪里检查

提前谢谢

编辑: 该脚本准备外部工具无法完成的构建配置,并且特定于我们的项目。错误发生在行
$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扩展文件夹加载客户端对象模型
还有一个更简单但官方不支持的选项:

不要使用$(Agent.ServerOMDirectory)。任务作者依赖与代理捆绑的SDK是不安全的。agent.ServerOMDirectory是一个方便变量,指向与代理捆绑的最新SDK。SDK可能在不同版本之间有中断接口更改。根据代理附带的最新版本,任务将被取消值得信赖

找到号码了吗 正在填充一个生成变量以设置脚本中的生成编号。可以使用
$env:build.BuildNumber
引用该变量

要设置内部版本号,请使用向控制台写入特殊语句

$value = "$($env:Build.BuildNumber)_US`
Write-Host "##vso[build.updatebuildnumber]$Value"
或者,您可以使用

中的我的设置变量任务,问题是:

您正在使用新的生成系统。您需要后退一步,并根据新生成系统的功能重新评估现有脚本

您有一个大的PowerShell代码片段,可以检索版本号。这太棒了,除了两件事:

  • 它永远不会起作用——SOAP对象模型对“新的”(例如非XAML)构建没有任何意识,而是为它们提供了一个RESTAPI
  • 您可以通过查看
    $env:build\u BUILDNUMBER
    变量来检索当前版本号。无需特殊代码

  • 在生成过程中的什么时候?脚本在做什么?这是您的脚本中的一个错误;在没有看到脚本的情况下,“打开”可以帮助您排除故障。@DanielMann添加了脚本中的一个片段。它发生在生成任务开始之前,因为此脚本是在预生成任务中执行的。您可以更新生成编号。有一个特殊的日志注释以实现这一点。因此,为了保持与上面截图中相同的功能,我只需更改脚本以使用REST API?我们需要使用一个特殊的版本号,因为我们在末尾添加了一个内部国家代码。您可以在版本定义中设置版本号格式。
    $env:build\u BUILDNUMBER的内容正是您在生成定义中定义的内容。我认为创建生成后,您无法更改生成编号。从Team Explorer扩展文件夹加载成功,谢谢