Tfs 来自生成列表的Azure DevOps字段值

Tfs 来自生成列表的Azure DevOps字段值,tfs,azure-devops,tfs-workitem,azure-devops-server-2019,azure-devops-server,Tfs,Azure Devops,Tfs Workitem,Azure Devops Server 2019,Azure Devops Server,我们公司正在prem上使用Azure DevOps 2019,我想在我们的Bug工作项中创建一个选项框字段,我希望它是一个组合框,其中的值是项目下所有构建定义的构建 通过查看系统的文档,我没有找到任何方法,也没有找到通过API查询系统或查询数据库是否更好的方法 我认为没有像这样的内置功能 您可以做的是创建一个字符串字段,该字段从globallist中获取值,在globallist中第一次使用项目名称创建globallist,例如: <GLOBALLIST name="MyProject-b

我们公司正在prem上使用Azure DevOps 2019,我想在我们的Bug工作项中创建一个选项框字段,我希望它是一个组合框,其中的值是项目下所有构建定义的构建


通过查看系统的文档,我没有找到任何方法,也没有找到通过API查询系统或查询数据库是否更好的方法

我认为没有像这样的内置功能

您可以做的是创建一个字符串字段,该字段从globallist中获取值,在globallist中第一次使用项目名称创建globallist,例如:

<GLOBALLIST name="MyProject-builds">
</GLOBALLIST>
您可以设置每天更新此脚本的计划生成,使其始终更新


您还可以改进脚本以获取所有项目、创建它们、获取生成定义名称并更新globallist文件。

您使用继承过程还是托管XML过程?托管XML过程
Param(
   [string]$collection = "http://tfs-server:8080/tfs/collection",
   [string]$project = "MyProject",
   [string]$filePath  = "C:\Globallist.xml"
)

$url = "$collection/$project/_apis/build/definitions?api-version=4.0"
$builds = (Invoke-RestMethod -Uri $url -Method Get -UseDefaultCredentials -ContentType application/json).value.name

witadmin exportgloballist /collection:$collection /f:$filePath
[xml]$gloabllist = Get-Content $filePath
$gloabllist.GLOBALLISTS.GLOBALLIST.Where({ $_.name -eq "$project-builds" }).LISTITEM | %{ $_.ParentNode.RemoveChild($_) | Out-Null }
$node = $gloabllist.GLOBALLISTS.GLOBALLIST.Where({ $_.name -eq "$project-builds" })
$builds.ForEach({

    $child = $gloabllist.CreateElement("LISTITEM")
    $att = $gloabllist.CreateAttribute("value")
    $child.Attributes.Append($att)
    $child.value = "$_"
    $node.AppendChild($child)
})

$gloabllist.Save($filePath)
witadmin importgloballist /collection:$collection /f:$filePath