如何在可用的前提下对 TFS 2015 执行自定义任务

How do you make a custom task to TFS 2015 on premises avaliable

我遵循了多个指南并为我的构建步骤创建了一个 VSIX。我让管理员上传它们并将它们安装到我的团队项目 collection。问题是当我查看构建时,它们无法作为任务引入。我需要做什么才能让他们出现?

我附上了下面上传的屏幕截图。还有我的 json 配置文件的编辑副本。我不知道出了什么问题。我也尝试使用 tfx 工具上传它,但它要求个人访问令牌。

我不相信它在 2015 年可用。我尝试使用解决方法,但 fiddler 给我一个严重的 header 错误。如果有人能指出我的错误,将不胜感激。

vss-extension.json

   {
      "manifestVersion": 1,
      "id": "Archive-Source-Task",
      "name": "Archive Source",
      "public": false,
      "version": "1.0.1",
      "publisher": "redacted",
      "description": "Copy the source",
      "targets": [
        {
          "id": "Microsoft.VisualStudio.Services"
        }
      ],
      "categories": [
        "Build and release"
      ],
      "files": [
        {
          "path": "Task"
        },
        {
          "path": "bin"
        }
      ],
      "contributions": [
        {
          "id": "Archive Source",
          "type": "ms.vss-distributed-task.task",
          "targets": [
            "ms.vss-distributed-task.tasks"
          ],
          "properties": {
            "name": "task"
          }
        }
      ],
      "tags": [
        "Build",
        "Release",
        "Management",
        "Utility",
        "Tasks"
      ]
    }

task.json

    {
  "id": "27203bc5-f3f1-4f80-b2ea-8f62dd4790f1",
  "name": "Archive Source",
  "description": "Copies your source",
  "helpMarkDown": "",
  "category": "Utility",
  "author": "",
  "version": {
    "Major": 1,
    "Minor": 0,
    "Patch": 0
  },
  "groups": [
    {
      "name": "advanced",
      "displayName": "Advanced",
      "isExpanded": false
    }
  ],
  "instanceNameFormat": "Archive Source",
  "visibility": [
    "Build"
  ],
  "execution": {
    "PowerShell": {
      "target": "$(currentDirectory)\ArchiveSource.ps1",
      "argumentFormat": "",
      "workingDirectory": "$(currentDirectory)"
    }
  }
}

当我们使用 TFS 2015 时,我们按照本文所述部署了我们的任务:https://blogs.infosupport.com/custom-build-tasks-in-tfs-2015/

主要区别在于您不需要 vss-extension.json 并且您可以使用此 link.

中提供的强大 shell 脚本部署它

后来当我们迁移到 TFS 2017 时,我们不得不更改构建任务以像您一样部署它。

根据您的 vss-extension.json 文件中的文件部分:

  "files": [
    {
      "path": "Task"
    },
    {
      "path": "bin"
    }
  ],

我怀疑你用来放置任务文件的文件夹命名为"Task"而不是"task",所以在贡献部分,你也应该在属性中使用"Task" :

  "contributions": [
    {
      "id": "Archive Source",
      "type": "ms.vss-distributed-task.task",
      "targets": [
        "ms.vss-distributed-task.tasks"
      ],
      "properties": {
        "name": "Task"
      }
    }
  ],