1

我正在尝试使用 Azure DevOps (TFS) 扩展中的选择列表来显示项目列表。以下是我在 task.json 中的代码片段:

输入:

{
      "name": "project",
      "type": "pickList",
      "label": "Project",
      "defaultValue": "",
      "required": false,
      "helpMarkDown": "Select the root area.",
      "properties": {
        "DisableManageLink": "True"
      }
    }

来源定义:

{
      "target": "project",
      "endpoint": "http://localhost:8080/tfs/DefaultCollection/_apis/projects?api-version=1.0",
      "selector": "jsonpath:$.name",
      "keySelector": "jsonpath:$.name",
      "authKey": "tfs:teamfoundation"
    }

我的本地环境有 TFS 2015,并且 URL 在浏览器中工作正常。但是,选择列表没有在扩展中填写。

知道这里出了什么问题吗?

顺便说一句,当我查看浏览器控制台时,我可以看到“400(错误请求)”。

谢谢你。

4

1 回答 1

0

这行得通!(甚至让我感到惊讶):

"inputs": [
        {
            "name": "sourceProject",
            "type": "pickList",
            "label": "Source project",
            "defaultValue": "",
            "required": true,
            "helpMarkDown": "Select the TFS Project.",
            "properties": {
                "EditableOptions": "True"
            }
        }
    ],
    "dataSourceBindings": [
        {
            "target": "sourceProject",
            "endpointId": "tfs:teamfoundation",
            "endpointURL": "{{endpoint.url}}/_apis/projects?api-version=1.0",
            "resultSelector": "jsonpath:$.value[*]",
            "resultTemplate": "{ \"Value\" : \"{{{id}}}\", \"DisplayValue\" : \"{{{name}}}\" }"
        }
    ]

在此处输入图像描述 请注意,“runSelector”和“resultTemplate”已正确定义。真正的关键是“resultSelector”和“endpointId”中正确的 JSON 路径查询,它使用的是您贴错标签的“tfs:teamfoundation”。resultTemplate 用于格式化下拉列表。

我创建了一个带有工作扩展的 GitHub 存储库,我能够在我自己的 TFS 集合上进行测试。 https://github.com/Antebios/vsts-projectlist-task

编辑:这适用于 Azure Devops,但会引发我正在使用的 TFS 2015 的错误。看起来这"endpointId": "tfs:teamfoundation"可能对 TFS 无效。

于 2018-12-04T23:13:34.590 回答