Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сервисы Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022
Расширения добавляют возможности в Azure DevOps с помощью вкладов и типов вкладов, объявленных в манифесте расширения. Тип вклада определяет контракт — свойства и поведение, которые должны реализовывать вклады этого типа. Вклад — это конкретный экземпляр типа вклада (например, концентратор или задача сборки).
Подсказка
Если вы создаёте новое расширение Azure DevOps, попробуйте сначала использовать эти поддерживаемые образцы коллекций — они работают с текущими сборками продуктов и охватывают современные сценарии (например, добавление вкладок на страницы pull request).
- Пример расширения Azure DevOps (GitHub) — компактный начальный пример, демонстрирующий распространенные шаблоны расширений: https://github.com/microsoft/azure-devops-extension-sample
- Примеры расширений Azure DevOps (коллекция устаревших версий и руководство по вкладам) — установите, чтобы проверить цели пользовательского интерфейса, или просмотрите исходный код: https://marketplace.visualstudio.com/items/ms-samples.samples-contributions-guidehttps://github.com/Microsoft/vso-extension-samples/tree/master/contributions-guide
- Примеры Microsoft Learn (просмотр примеров Azure DevOps) — подобранные, актуальные примеры в документации Microsoft: /samples/browse/?terms=azure%20devops%20extension
Если пример не работает в вашей организации, установите его в личную или тестовую организацию и сравните целевые идентификаторы манифеста расширения и версии API с текущими документами. Справочные материалы и API см. в статье:
Дополнительные сведения можно найти здесь
Типы вкладов
Тип вклада определяет свойства и правила, которые должны соответствовать вкладу этого типа. Типы вкладов могут расширить другие типы вкладов, наследуя их свойства.
К общим встроенным типам вкладов относятся:
-
ms.vss-web.hub— страница в веб-интерфейсе -
ms.vss-web.action— действие меню -
ms.vss-distributed-task.task— задача сборки и выпуска
Каждое определение свойства в типе вклада указывает:
-
type — тип данных (например,
string, ,booleaninteger) - обязательный — необходимо ли указать свойство.
- по умолчанию — необязательное значение по умолчанию
Пример типа вклада
Объявление типа вклада в манифесте выглядит следующим образом:
{
"contributionTypes": [
{
"id": "hub",
"name": "Web Access Hub",
"description": "A hub that appears in the hubs menu at the top of web pages.",
"properties": {
"name": {
"description": "The text to display for the hub",
"type": "string",
"required": true
},
"uri": {
"description": "URI of the contents of the hub page",
"type": "string",
"required": true
},
"order": {
"description": "Optional ordering value indicating the hub's position within the hub group",
"type": "integer"
}
}
}
]
}
Взносы
Вклад — это экземпляр типа вклада. Например, Queries концентратор в группе "Рабочий центр" является вкладом типа ms.vss-web.hub, а Publish Test Results задача сборки — это вклад типа ms.vss-distributed-task.task.
Каждый вклад должен указывать тип и предоставлять значения для любых свойств, необходимых для этого типа.
Пример вклада
Следующее объявление о вкладе концентратора в манифесте расширения добавляет концентратор с именем Explorer в группу концентратора сборки:
{
"contributions": [
{
"id": "build-explorer-hub",
"type": "ms.vss-web.hub",
"targets": [
".build-hub-group"
],
"properties": {
"name": "Explorer",
"uri": "/_build",
"order": 22
}
}
]
}
Целевые вклады
Вклад может быть направлен на один или несколько других вкладов, создавая отношение родитель-потомок. Система обнаруживает эти связи во время выполнения, чтобы определить, что нужно отрисовать. Например, вклад hub направлен на вклад hub-group так, чтобы система знала, какие центры принадлежат каким группам.
{
"id": "build-explorer-hub",
"type": "ms.vss-web.hub",
"targets": [
".build-hub-group"
]
}
При визуализации группы концентраторов система выполняет запросы на все относящиеся к ней вкладки концентраторов, чтобы определить, какие концентраторы отображать.
Идентификаторы вкладов
Каждый вклад и его тип должны иметь уникальный идентификатор в рамках его расширения.
Полный идентификатор состоит из трех частей, разделенных точками (.):
| Часть | Пример |
|---|---|
| Идентификатор издателя | ms |
| Идентификатор расширения | vss-web |
| Идентификатор типа вклада | hub |
Полный идентификатор: ms.vss-web.hub
В том же манифесте расширения можно использовать относительные ссылки — точка, за которой следует идентификатор вклада. Например, .hub служит сочетанием клавиш для ms.vss-web.hub, когда используется внутри расширения vss-web.