Freigeben über


Erstellen Ihrer ersten Visual Studio-Erweiterung

Dieses Dokument ist eine Schnellstartanleitung, die zeigt, wie Sie Ihre erste Erweiterung mit VisualStudio.Extensibility erstellen. Die Erweiterung läuft außerhalb des Visual Studio-Prozesses aus.

Voraussetzungen

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

Erstellen des Erweiterungsprojekts

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

Screenshot of the VSExtensibility template.

An diesem Punkt können Sie mit dem Erweitern von Visual Studio beginnen, indem Sie Ihrer Erweiterung Befehle und Editorkomponenten hinzufügen.

Die Extension-Klasse

Die Vorlage erstellt eine Klasse, die erweitert wird Extension. Diese Klasse ist der erste, der instanziiert wird, wenn die 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 VisualStudioContribution Attribut sehen, das zum Markieren von Erweiterungskomponenten verwendet wird, die von Visual Studio verwendet werden sollen. Dieses Attribut kann auf Klassen angewendet werden, die implementierungs IVisualStudioContributionClass - oder statische Eigenschaften eines Typs implementieren IVisualStudioContributionProperty.

Hinzufügen des ersten Befehls

Die Vorlage erstellt Command1.cs als ersten Befehlshandler, den Sie als Ausgangspunkt verwenden können. Da visual Studio diesen Befehl und die Command Klasse implementiert IVisualStudioContributionClass, wird der Befehl mit dem VisualStudioContribution Attribut 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 und deren Werte als Erweiterungsmetadaten ausgewertet, 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 ExecuteCommandAsync Methode auf, in der Sie einen Haltepunkt platzieren können. Sie können context Argument oder this.Extensibility Objekt verwenden, um mit Visual Studio zu interagieren.

Ein Befehlshandler könnte 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 der Erweiterung

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

  2. Wenn Sie Die Erweiterung drücken F5 und diese in der experimentellen Instanz von Visual Studio-Version bereitstellen, die Sie verwenden. Der Debugger sollte nach dem Laden der Erweiterung angefügt werden.

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

    Screenshot showing sample command.

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.