Modello di contributo

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

Le estensioni aggiungono nuove funzionalità al sistema fornendo contributi e definendo modi per collegarsi ad altre estensioni. Un tipo di contributo definisce un elemento che può essere aggiunto al sistema. Un contributo è un'istanza specifica di un tipo di contributo. Ad esempio, hub è un tipo di contributo definito da un'estensione fornita da Microsoft di base. L'hub Explorer nel gruppo Hub di compilazione è un contributo specifico di tipo hub.

Per altre informazioni, consultare i riferimenti seguenti:

Tipi di contributo

Un tipo di contributo definisce un contratto a cui devono essere conformi tutti i contributi al sistema di tale tipo. Un tipo di contributo può anche estendersi da un altro tipo di contributo. Gli esempi seguenti di tipi di contributo definiscono le proprietà impostate dalle istanze di quel tipo:

  • hub
  • action
  • build-task

Ogni definizione di proprietà specifica gli aspetti seguenti:

  • Tipo di proprietà, ad esempio stringa, booleano e così via.
  • Indica se la proprietà è obbligatoria
  • Valore predefinito, se non specificato da un contributo (facoltativo).

Esempio

Ecco un esempio di dichiarazione di tipo di contributo in un manifesto dell'estensione:

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

Contributi

Un contributo è un'istanza di un tipo di contributo. Ad esempio, l'hub Queries nel gruppo Hub di lavoro è un contributo di tipo hub e l'attività Publish Test Results di compilazione è un contributo di tipo build-task.

Tutti i contributi devono specificare un tipo e specificare i valori per tutte le proprietà richieste da tale tipo di contributo.

Esempio

Ecco un esempio di dichiarazione di contributo dell'hub in un manifesto dell'estensione:

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

Contributi di destinazione

Un contributo può essere destinato a uno o più contributi, che crea una relazione tra il contributo e ognuno dei relativi obiettivi. Il sistema può individuare i contributi per la destinazione in fase di esecuzione. Ad esempio, un hub contributo (Explorer) potrebbe essere destinato a un contributo specifico hub-group (Build).

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

Quando viene eseguito il rendering del gruppo hub, il sistema può eseguire una query per tutti i contributi dell'hub destinati al gruppo hub per sapere quali hub eseguire il rendering.

Identificare contributi e tipi

Ogni tipo di contributo e contributo deve avere un ID univoco all'interno dell'estensione in cui è dichiarato.

Un identificatore completo del contributo include gli elementi seguenti, separati da un punto . :

  • Publisher ID (ID editore)
  • ID estensione
  • ID contributo/tipo

Ad esempio: ms.vss-web.hub è l'identificatore completo per il contributo seguente:

  • ID editore: ms
  • ID estensione: vss-web
  • ID contributo/tipo: hub

È possibile usare riferimenti relativi ai contributi all'interno di un manifesto dell'estensione per il riferimento di un contributo a un altro tipo di contributo o di contributo all'interno della stessa estensione. In questo caso, gli ID di pubblicazione e estensione non sono inclusi e l'ID è un punto . seguito dall'ID contributo. Ad esempio, .hub può essere usato all'interno dell'estensione vss-web menzionata in precedenza come collegamento per ms.vss-web.hub.