Модель вклада
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Расширения добавляют новые возможности в систему, предоставляя вклады и определяя способы подключения к ним других расширений. Тип вклада определяет то, что можно добавить в систему. Вклад — это конкретный экземпляр типа вклада. Например, это тип вклада, hub
определенный основным расширением, предоставляемым корпорацией Майкрософт. Концентратор Explorer
в группе центров сборки является конкретным вкладом типа hub
.
Дополнительные сведения см. в следующих ресурсах.
Типы вкладов
Тип вклада определяет контракт, к которому должны соответствовать все вклады в систему этого типа. Тип вклада может также расшириться от другого типа вклада. В следующих примерах типов вкладов определяются свойства, заданные экземплярами этого типа:
hub
action
build-task
Каждое определение свойства определяет следующие аспекты:
- Тип свойства, например string, boolean и т. д.
- Требуется ли свойство
- Значение по умолчанию, если не указано вкладом (необязательно).
Пример
Ниже приведен пример объявления типа вклада в манифесте расширения:
{
...
"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": "An optional ordering value which can indicate in which position to place the hub within the hub group",
"type": "integer"
}
...
}
}
]
}
Участие в проекте
Вклад — это экземпляр типа вклада. Например, Queries
концентратор в группе "Рабочие центры" является вкладом типа hub
, а Publish Test Results
задача сборки — это вклад типа build-task
.
Все вклады должны указывать тип и указывать значения для любых свойств, необходимых для этого типа вклада.
Пример
Ниже приведен пример объявления вклада концентратора в манифесте расширения:
{
"contributions": [
{
"id": "build-explorer-hub",
"type": "ms.vss-web.hub",
"targets": [
".build-hub-group"
],
"properties": {
"name": "Explorer",
"uri": "/_build",
"order": 22
}
}
]
}
Целевые вклады
Вклад может нацелен на один или несколько других вкладов, что создает связь между вкладом и каждым из его целевых объектов. Система может обнаруживать вклады для целевого объекта во время выполнения. Например, hub
вклад (Explorer
) может быть нацелен на конкретный hub-group
вклад (Build
).
{
"id": "build-explorer-hub",
"type": "ms.vss-web.hub",
"targets": [
".build-hub-group"
]
}
Когда группа концентраторов отрисовывается, система может запрашивать все вклады концентратора, предназначенные для группы концентраторов, чтобы узнать, какие центры необходимо отобразить.
Определение вкладов и типов
Каждый тип вклада и вклада должен иметь уникальный идентификатор в расширении, объявленном в нем.
Полный идентификатор вклада включает следующие элементы, которые разделяются точкой .
:
- Идентификатор издателя
- Идентификатор расширения
- Идентификатор вклада и типа
Например, полный идентификатор для следующего вклада: ms.vss-web.hub
- Идентификатор издателя:
ms
- Идентификатор расширения:
vss-web
- Идентификатор вклада и типа:
hub
Ссылки на относительные вклады можно использовать в манифесте расширения для ссылки на другой вклад или тип вклада в рамках этого же расширения. В этом случае идентификаторы издателя и расширения не включаются, а идентификатор — точка .
, за которой следует идентификатор вклада. Например, .hub
можно использовать в vss-web
расширении, упоминание ранее в качестве ярлыкаms.vss-web.hub
.