У меня есть расширение 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 (вы можете увидеть это с помощью инструментов dev), но функция OnFoo
не вызывается.
На консоли отображаетсяследующее:
Ни в одном канале не найдено обработчика для сообщения: {"id": 1, "methodName": "", "instanceId": "MyPublisher.myext.foo", "instanceContext": {"definition": {"id": 1, "name": "Пример определения выпуска", "path": "\"}}, "params": null}
Версияиз VSS.SDK.js является последней, только что загруженной.
РЕДАКТИРОВАТЬ: моя теория работы заключается в том, что я не регистрирую команду правильно.Исторически, было два способа зарегистрировать один - через объект и через функцию.Заменил мой код на последний, получил другое сообщение в консоли:
Uncaught (в обещании) Зарегистрированный объект MyPublisher.myext.foo не найден.