Erstellen Ihrer ersten Visual Studio-Erweiterung

Dieses Dokument ist eine Schnellstartanleitung, die zeigt, wie Sie Ihre erste Erweiterung mit VisualStudio.Extensibility erstellen. Die Erweiterung wird in einem separaten Prozess ausgeführt, also außerhalb des Visual-Studio-Prozesses.

Prerequisites

  • Visual Studio 2022 Version 17.9 Preview 1 oder höher mit Visual Studio extension development Workload.

Erstellen des Erweiterungsprojekts

  • Verwenden Sie die Vorlage VisualStudio.Extensibility Project, um ein neues Erweiterbarkeitsprojekt zu erstellen.

Screenshot der VSExtensibility-Vorlage.

Nun können Sie damit beginnen, Visual Studio zu erweitern, indem Sie Ihrer Erweiterung Befehle und Editorkomponenten hinzufügen.

Die Extension-Klasse

Die Vorlage erstellt eine Klasse, die von Extension erbt. Diese Klasse ist die erste, die instanziiert wird, wenn Ihre Erweiterung geladen wird. In der InitializeServices Methode können Sie der Dienstauflistung eigene Dienste hinzufügen, um sie für die Abhängigkeitseinfügung verfügbar zu machen.

[VisualStudioContribution]
internal class ExtensionEntrypoint : Extension
{
    protected override void InitializeServices(IServiceCollection serviceCollection)
    {
        base.InitializeServices(serviceCollection);

        // You can configure dependency injection here by adding services to the serviceCollection.
    }
}

Sie können auch das attribut VisualStudioContribution sehen, das zum Markieren von Erweiterungskomponenten verwendet wird, die von Visual Studio verwendet werden sollen. Dieses Attribut kann auf Klassen angewendet werden, die IVisualStudioContributionClass implementieren, oder auf statische Eigenschaften eines Typs, der IVisualStudioContributionProperty implementiert.

Hinzufügen des ersten Befehls

Die Vorlage erstellt Command1.cs als ersten Befehlshandler, den Sie als Ausgangspunkt verwenden können. Da wir Visual Studio auf diesen Befehl aufmerksam machen möchten und da die Command-Klasse IVisualStudioContributionClass implementiert, wird der Befehl mit dem Attribut VisualStudioContribution gekennzeichnet.

[VisualStudioContribution]
internal class Command1 : Command
{

Der Befehl verfügt über eine Konfigurationseigenschaft namens CommandConfiguration, die den Anzeigenamen, das Symbol und die Extensions Platzierung im Menü definiert.

    public override CommandConfiguration CommandConfiguration => new("%MyExtension.Command1.DisplayName%")
    {
        // Use this object initializer to set optional parameters for the command. The required parameter,
        // displayName, is set above. DisplayName is localized and references an entry in .vsextension\string-resources.json.
        Icon = new(ImageMoniker.KnownValues.Extension, IconSettings.IconAndText),
        Placements = new[] { CommandPlacement.KnownPlacements.ExtensionsMenu },
    };

Konfigurationseigenschaften werden vom C#-Compiler beim Erstellen der Erweiterung ausgewertet, und ihre Werte werden als Erweiterungsmetadaten gespeichert, sodass Visual Studio sie lesen kann, ohne die Erweiterungsassembly zu laden. Aus diesem Grund weisen Konfigurationseigenschaften im Vergleich zu normalen Eigenschaften zusätzliche Einschränkungen auf (z. B. müssen sie schreibgeschützt sein).

Sie können sehen, dass der Anzeigename des Befehls lautet "%MyExtension.Command1.DisplayName%", der auf die MyExtension.Command1.DisplayName Zeichenfolge in der .vsextension/string-resources.json Datei verweist, sodass diese Zeichenfolge lokalisiert werden kann.

Wenn der Befehl ausgeführt wird, ruft Visual Studio die Methode ExecuteCommandAsync auf, in der Sie einen Haltepunkt setzen können. Sie können context Argument oder this.Extensibility-Objekt verwenden, um mit Visual Studio zu interagieren.

Ein Befehlshandler kann z. B. wie folgt sein:

public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken cancellationToken)
{
    await context.ShowPromptAsync(
        "Hello from an extension!", 
        PromptOptions.OK, 
        cancellationToken);
}

Weitere Informationen zum Hinzufügen von Befehlen finden Sie im Abschnitt "Befehle ".

Debuggen Sie Ihre Erweiterung

  1. Stellen Sie sicher, dass Ihr Erweiterungsprojekt in Visual Studio als Startprojekt ausgewählt ist, und drücken Sie F5, um mit dem Debuggen zu beginnen.

  2. Wenn Sie F5 drücken, wird Ihre Erweiterung erstellt und in der experimentellen Instanz der von Ihnen verwendeten Visual Studio-Version bereitgestellt. Der Debugger sollte sich verbinden, sobald Ihre Erweiterung geladen ist.

  3. Wie in der folgenden Abbildung dargestellt, finden Sie den neuen Befehl im Extensions Menü:

    Screenshot mit Beispielbefehlen in Visual Studio.

    Screenshot des Beispielbefehls.

Nächste Schritte

Wenn Sie die Einführungsübersichten verpasst haben, lesen Sie "Willkommen in der Dokumentation zu VisualStudio.Extensibility".

Erstellen Sie nun eine etwas interessantere Erweiterung; siehe Erstellen einer einfachen Erweiterung.