我有一个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。
答案 0 :(得分:0)
在查看样本时,我在贡献属性下找到了额外的一行-registeredObjectId
。将其添加到清单后,这些命令将像以前一样工作。该属性的值必须与VSS.register()
的第一个参数(贡献ID曾经是该参数)匹配。
不酷,微软。 不酷。
编辑:扩展中的其他内容也坏了。一方面,JQuery的$
对象似乎不再可用。不再适合StackOverflow格式it's a blog post now。