Модель вклада

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.