我有一个 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
调用该函数。
控制台显示以下内容:
在任何消息通道上找不到处理程序:{"id":1,"methodName":"","instanceId":"MyPublisher.myext.foo","instanceContext":{"definition":{"id":1 ,"name":"示例发布定义","path":"\"}},"params":null}
VSS.SDK.js的版本是最新的,刚刚重新下载。
编辑:我的工作理论是我没有正确注册命令。从历史上看,有两种注册方式——通过对象和通过函数。用后者替换我的代码,在控制台中收到另一条消息:
Uncaught (in promise) 找不到已注册的对象 MyPublisher.myext.foo。