自定义发布 def context 命令在 Azure DevOps 2019 中中断
Custom release def context command broke in Azure DevOps 2019
我有一个 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 加载(您可以通过开发工具看到),但未调用 OnFoo
函数。
控制台显示如下:
No handler found on any channel for message: {"id":1,"methodName":"","instanceId":"MyPublisher.myext.foo","instanceContext":{"definition":{"id":1,"name":"Sample release definition","path":"\"}},"params":null}
VSS.SDK.js的版本是最新的,刚刚重新下载。
编辑:我的工作理论是我没有正确注册命令。从历史上看,有两种注册方式——通过对象和通过函数。用后者替换了我的代码,在控制台中得到了另一条消息:
Uncaught (in promise) The registered object MyPublisher.myext.foo could not be found.
在查看样本时,我在贡献属性下发现了额外的一行 - registeredObjectId
。一旦我将它添加到我的清单中,这些命令就会像以前一样工作。 属性 的值必须与 VSS.register()
的第一个参数匹配,其中贡献 ID 曾经是。
不酷,微软。 不酷。
编辑:扩展中的其他内容也损坏了。一方面,JQuery 的 $
对象似乎不再可用。不再适合 Whosebug 格式,it's a blog post now.
我有一个 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 加载(您可以通过开发工具看到),但未调用 OnFoo
函数。
控制台显示如下:
No handler found on any channel for message: {"id":1,"methodName":"","instanceId":"MyPublisher.myext.foo","instanceContext":{"definition":{"id":1,"name":"Sample release definition","path":"\"}},"params":null}
VSS.SDK.js的版本是最新的,刚刚重新下载。
编辑:我的工作理论是我没有正确注册命令。从历史上看,有两种注册方式——通过对象和通过函数。用后者替换了我的代码,在控制台中得到了另一条消息:
Uncaught (in promise) The registered object MyPublisher.myext.foo could not be found.
在查看样本时,我在贡献属性下发现了额外的一行 - registeredObjectId
。一旦我将它添加到我的清单中,这些命令就会像以前一样工作。 属性 的值必须与 VSS.register()
的第一个参数匹配,其中贡献 ID 曾经是。
不酷,微软。 不酷。
编辑:扩展中的其他内容也损坏了。一方面,JQuery 的 $
对象似乎不再可用。不再适合 Whosebug 格式,it's a blog post now.