Freigeben über


Beitragsmodell

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

Erweiterungen fügen Azure DevOps Funktionen über Beiträge und Beitragstypen hinzu, die im Erweiterungsmanifest deklariert sind. Ein Beitragstyp definiert einen Vertrag – die Eigenschaften und das Verhalten, die Beiträge dieses Typs implementieren müssen. Ein Beitrag ist eine konkrete Instanz eines Beitragstyps (z. B. ein Hub oder eine Build-Aufgabe).

Tipp

Wenn Sie eine neue Azure DevOps-Erweiterung starten, probieren Sie diese verwalteten Beispielsammlungen zuerst aus – sie arbeiten mit aktuellen Produktbuilds und behandeln moderne Szenarien (z. B. Hinzufügen von Registerkarten auf Pullanforderungsseiten).

Wenn ein Beispiel in Ihrer Organisation nicht funktioniert, installieren Sie es in einer persönlichen oder Testorganisation und vergleichen Sie die Ziel-IDs und API-Versionen des Erweiterungsmanifests mit den aktuellen Dokumenten. Weitere Informationen und APIs finden Sie unter:

Weitere Informationen finden Sie unter:

Beitragstypen

Ein Beitragstyp definiert die Eigenschaften und Regeln, denen Beiträge dieses Typs entsprechen müssen. Beitragstypen können andere Beitragstypen erweitern und ihre Eigenschaften erben.

Zu den gängigen integrierten Beitragstypen gehören:

  • ms.vss-web.hub — eine Seite in der Web-UI
  • ms.vss-web.action — eine Menüaktion
  • ms.vss-distributed-task.task — eine Build-/Release-Aufgabe

Jede Eigenschaftsdefinition in einem Beitragstyp gibt Folgendes an:

  • type — der Datentyp (zum Beispiel string, boolean, integer)
  • erforderlich – ob die Eigenschaft bereitgestellt werden muss
  • default – ein optionaler Standardwert

Beispiel für den Beitragstyp

Eine Beitragstypdeklaration in einem Manifest sieht wie folgt aus:

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

Beiträge

Ein Beitrag ist eine Instanz eines Beitragstyps. Beispielsweise ist der Queries Hub unter der Arbeits-Hub-Gruppe ein Beitrag vom Typ ms.vss-web.hub, und die Publish Test Results Build-Aufgabe ist ein Beitrag vom Typ ms.vss-distributed-task.task.

Jeder Beitrag muss einen Typ angeben und Werte für alle eigenschaften bereitstellen, die für diesen Typ erforderlich sind.

Beispiel für Beiträge

Die folgende Deklaration des Hubbeitrags in einem Erweiterungsmanifest fügt einer Build-Hubgruppe einen Hub mit dem Namen "Explorer" hinzu:

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

Zielbeiträge

Ein Beitrag kann auf einen oder mehrere andere Beiträge abzielen , wodurch eine Beziehung zwischen Eltern und Kind entsteht. Das System ermittelt diese Beziehungen zur Laufzeit, um zu bestimmen, was gerendert werden soll. Beispielsweise zielt ein hub Beitrag auf einen hub-group Beitrag ab, damit das System weiß, welche Hubs zu welcher Gruppe gehören.

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

Wenn die Hubgruppe gerendert wird, fragt das System alle Hubbeiträge ab, die darauf abzielen, um zu bestimmen, welche Hubs angezeigt werden sollen.

Bezeichner für Beiträge

Jeder Beitrag und Beitragstyp muss innerhalb der Erweiterung eine eindeutige ID besitzen.

Ein vollqualifizierter Bezeichner weist drei Teile auf, die durch Punkte getrennt sind (.):

Bauteil Example
Herausgeber-ID ms
Erweiterungs-ID vss-web
Beitrags-/Typ-ID hub

Vollständiger Bezeichner: ms.vss-web.hub

Innerhalb desselben Erweiterungsmanifests können Sie relative Verweise verwenden – einen Punkt gefolgt von der Beitrags-ID. Beispielsweise ist .hub eine Abkürzung für ms.vss-web.hub, wenn es innerhalb der Erweiterung vss-web verwendet wird.