Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure DevOps Services
Die vertikale Navigation bringt Änderungen mit sich, die sich auf einige Erweiterungen auswirken. Diese Ergebnisse umfassen die Unterstützung von Erweiterungssymbolen sowie Änderungen am Teamkontext.
Tipp
Für die neuesten Anleitungen zur Erweiterungsentwicklung, einschließlich Themengestaltung und Migration von VSS.SDK, besuchen Sie das Entwicklerportal des Azure DevOps Extension SDK.
Teamkontext
In der herkömmlichen horizontalen Navigation können Benutzer zu einem Projekt oder Team wechseln, indem sie in einem Menü eine Option wählen, das sich oben links in der Kopfzeile befindet. Diese Auswahl stellte eine Liste der zuletzt verwendeten Teams und eine Möglichkeit, alle Teams zu durchsuchen, bereit. In der neuen vertikalen Navigation kann ein Benutzer nur zu einem Projekt (und nicht zu einem Team) navigieren. Diese Änderung wurde vorgenommen, um die Gesamterfahrung zu vereinfachen. Es wurde jedoch eine Herausforderung für Weberweiterungen eingeführt, die auf die Fähigkeit der Benutzer angewiesen sind, Teams mithilfe der herkömmlichen Teamauswahl im Seitenkopf zu wechseln.
SDK.getWebContext() ist eine clientseitige API, die vom SDK bereitgestellt wird, die Informationen über die aktuelle Organisation, das Projekt und das Team bereitstellt, in denen der Benutzer arbeitet:
{
"account": {
"name": "Fabrikam",
"id": "50e49b94-4bb6-40e7-8c85-a6d756d8a4d8"
},
"project": {
"name": "Fabrikam Dev",
"id": "049b1af2-fc87-4e50-95e4-151357f04b7f"
},
"team": {
"name": "Ops Team",
"id": "9b3a6b80-fe95-4c8c-8aa1-1e5d535d7af1"
}
}
Wir empfehlen nicht, sich auf SDK.getWebContext().team zu verlassen. Befolgen Sie stattdessen die nachstehenden Anleitungen, basierend auf der Kategorie, unter der Ihre Erweiterung fällt.
Teamorientierte Huberweiterungen
Wenn Ihre Erweiterung Benutzern eine Möglichkeit zum Auswählen eines Teams bereitstellen muss, können Sie die Teams-REST-API verwenden, um eine Liste der Teams für das aktuelle Projekt abzurufen. Das folgende Beispiel zeigt, wie Sie diese API aus Ihrer Erweiterung aufrufen.
import { getClient } from "azure-devops-extension-api";
import { CoreRestClient } from "azure-devops-extension-api/Core";
import * as SDK from "azure-devops-extension-sdk";
private async getTeams() {
const client = getClient(CoreRestClient);
client.getTeams(SDK.getWebContext().project.id).then(
function(teams) {
console.log(teams);
}
);
}
Ein Beispiel für eine Erweiterung, die ein Teamauswahl-Steuerelement bereitstellt, finden Sie unter "Teamkalender".
Pivot- und Panelerweiterungen
Ihre Erweiterung kann das Konfigurationsobjekt überprüfen, das an Ihren Beitrag übergeben wurde. Dieses Objekt weist je nach Beitragstyp unterschiedliche Eigenschaften auf und wo der Beitrag gehostet wird. Das Beispiel zeigt das Auslesen des Teams aus der Konfiguration und den Rückgriff auf das Auslesen des Teams aus dem webContext, um sowohl die neue vertikale als auch die ältere horizontale Navigation in On-Premise-Versionen zu unterstützen.
function getCurrentTeam() {
let webContext = SDK.getWebContext();
let configuration = SDK.getConfiguration();
if ("team" in configuration) {
return configuration.team;
} else if ("team" in webContext) {
return webContext.team;
} else {
return null; // should only happen if not in a project context
}
}
Aktionserweiterungen
Ihre Erweiterung kann das actionContext-Objekt überprüfen, das an den Rückruf übergeben wird, wenn ein Benutzer das beigetragene Menüelement auswählt. Beispiel zeigt, wie das Team aus dem actionContext ausgelesen wird.
var menuContributionHandler = (function () {
"use strict";
return {
// This is a callback that gets invoked when a user selects the newly contributed menu item
// The actionContext parameter contains team information.
execute: function (actionContext) {
if("team" in actionContext) {
alert(`Team. Id is ${actionContext.team.id}, Name is ${actionContext.team.name}`);
}
}
};
}());
Hubsymbol
Sie können optional ein Objekt (z. B. ein .png oder .jpg) als Symbol für Ihren Hub festlegen. Dieses Symbol wird neben dem Hub in der vertikalen Navigationsleiste angezeigt. Es muss mit Ihrer Erweiterung verpackt werden.
Hinweis
Diese Symbole werden nicht in der horizontalen Navigation angezeigt.
Führen Sie die folgenden Schritte aus, um ein Symbol für Ihren Hub festzulegen.
Legen Sie die
iconAsset-Eigenschaft des Hub-Beitrags auf die vollqualifizierte Asset-ID fest, die dem Muster folgt:{publisher-id}.{extension-id}/{asset-path}.Fügen Sie einen Eintrag für diese Ressource in der
includesDataBeitragseigenschaft hinzu.Packen Sie die Ressource mit Ihrer Erweiterung, indem Sie sie in der
filesEigenschaft im Stammverzeichnis Ihres Manifests auflisten.
Beispiel 1:
{
"id": "my-extension",
"publisherId": "my-publisher",
...
"contributions": [
{
"id": "example-hub",
"type": "ms.vss-web.hub",
"targets": [
"ms.vss-code-web.code-hub-group"
],
"properties": {
"name": "My Hub",
"iconAsset": "my-publisher.my-extension/images/fabrikam-logo.png",
"includesData": {
"assets": [
"my-publisher.my-extension/images/fabrikam-logo.png"
]
}
}
}
],
"files": [
{
"path": "images/fabrikam-logo.png",
"addressable": true
}
]
}
Beispiel 2:
Wenn Themen wie helle und dunkle angewendet werden, können Sie die Symbole im Erweiterungsmanifest folgendermaßen angeben.
{
"id": "hub",
"type": "ms.vss-web.hub",
"targets": [
"ms.vss-work-web.work-hub-group"
],
"properties": {
"name": "Hub",
"description": "Something",
"uri": "pages/Hub.html",
"icon": {
"light": "img/hub-light.png",
"dark": "img/hub-dark.png"
}
}
}