Modelo de contribución

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Las extensiones agregan nuevas funcionalidades al sistema proporcionando contribuciones y definiendo formas para que otras extensiones se conecten a ellas. Un tipo de contribución define algo que se puede agregar al sistema. Una contribución es una instancia específica de un tipo de contribución. Por ejemplo, hub es un tipo de contribución definido por una extensión básica proporcionada por Microsoft. El Explorer centro en el grupo concentrador de compilación es una contribución específica del tipo hub.

Para obtener más información, consulte las referencias siguientes:

Tipos de contribución

Un tipo de contribución define un contrato al que deben adherirse todas las contribuciones al sistema de ese tipo. Un tipo de contribución también puede extenderse desde otro tipo de contribución. En los ejemplos siguientes de tipos de contribución se definen las propiedades establecidas por instancias de ese tipo:

  • hub
  • action
  • build-task

Cada definición de propiedad especifica los siguientes aspectos:

  • Tipo de propiedad, por ejemplo, cadena, booleano, etc.
  • Indica si se requiere la propiedad
  • Valor predeterminado, si no se especifica mediante una contribución (opcional).

Ejemplo

Este es un ejemplo de una declaración de tipo de contribución en un manifiesto de extensión:

{
    ...
    "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"
                }
				...
            }
        }
    ]
}

Contribuciones

Una contribución es una instancia de un tipo de contribución. Por ejemplo, el Queries centro en el grupo centro de trabajo es una contribución de tipo hub y la Publish Test Results tarea de compilación es una contribución de tipo build-task.

Todas las contribuciones deben especificar un tipo y especificar valores para las propiedades necesarias para ese tipo de contribución.

Ejemplo

Este es un ejemplo de una declaración de contribución del centro en un manifiesto de extensión:

{
    "contributions": [
        {
            "id": "build-explorer-hub",
            "type": "ms.vss-web.hub",
            "targets": [
                ".build-hub-group"
            ],
            "properties": {
                "name": "Explorer",
                "uri": "/_build",
                "order": 22
            }
        }
    ]
}

Contribuciones de destino

Una contribución puede tener como destino una o varias contribuciones, lo que crea una relación entre la contribución y cada uno de sus objetivos. El sistema puede detectar contribuciones para el destino en tiempo de ejecución. Por ejemplo, una contribución (Explorer) podría tener como hub destino una contribución específica hub-group (Build).

{
    "id": "build-explorer-hub",
    "type": "ms.vss-web.hub",
    "targets": [
        ".build-hub-group"
    ]
}

Cuando se representa el grupo concentrador, el sistema puede consultar todas las contribuciones del centro que tienen como destino el grupo concentrador para saber qué concentradores se van a representar.

Identificación de contribuciones y tipos

Cada tipo de contribución y contribución debe tener un identificador único dentro de la extensión en la que se declara.

Un identificador de contribución completo incluye los siguientes elementos, que se separan con un punto . :

  • Id. del editor
  • Id. de extensión
  • Id. de contribución y tipo

Por ejemplo: ms.vss-web.hub es el identificador completo de la siguiente contribución:

  • Id. del publicador: ms
  • Id. de extensión: vss-web
  • Identificador de contribución/tipo: hub

Puede usar referencias de contribución relativas dentro de un manifiesto de extensión para la referencia de una contribución a otro tipo de contribución o contribución dentro de esa misma extensión. En este caso, los identificadores de editor y extensión no se incluyen y el identificador es un punto . seguido del identificador de contribución. Por ejemplo, .hub puede usarse dentro de la vss-web extensión mencionada anteriormente como acceso directo para ms.vss-web.hub.