自定义发布def上下文命令在Azure DevOps 2019中中断

时间:2019-03-22 21:23:56

标签: azure-devops azure-devops-extensions

我有一个TFS扩展,其中包含一些用于发布定义的上下文命令。清单中的贡献记录为:

    {
        "id": "foo",
        "type": "ms.vss-web.action",
        "description": "...",
        "targets": ["ms.vss-releaseManagement-web.release-definition-explorer-context-menu"],
        "properties":
        {
            "title": "Foo",
            "text": "Foo",
            "icon": "images/foo-16.png",
            "group": "actions",
            "uri": "web/main.html"
        }
    },

实现命令的main.html进入:

function OnFoo(SrcCtxt)
{
    //...
}

VSS.init({ usePlatformScripts: true });
VSS.register("foo", {execute: OnFoo});

它在TFS 2015..2018中工作,于2019年中断。在菜单中可以看到Foo命令,当您单击它时,main.html加载(您可以通过开发工具看到),但是{{ 1}}函数不会被调用。

控制台显示以下内容:

  

在任何通道上找不到消息处理程序:{“ id”:1,“ methodName”:“”,“ instanceId”:“ MyPublisher.myext.foo”,“ instanceContext”:{“ definition”:{“ id “:1,”名称“:”示例发布定义“,”路径“:” \“}},”参数“:null}

VSS.SDK.js的版本为最新版本,只需重新下载即可。

编辑:我的工作原理是我没有注册命令权限。从历史上看,有两种注册方式-通过对象和通过函数。将我的代码替换为后者,在控制台中又收到一条消息:

  

未捕获(已承诺)找不到注册的对象MyPublisher.myext.foo。

1 个答案:

答案 0 :(得分:0)

在查看样本时,我在贡献属性下找到了额外的一行-registeredObjectId。将其添加到清单后,这些命令将像以前一样工作。该属性的值必须与VSS.register()的第一个参数(贡献ID曾经是该参数)匹配。

不酷,微软。 不酷。


编辑:扩展中的其他内容也坏了。一方面,JQuery的$对象似乎不再可用。不再适合StackOverflow格式it's a blog post now