Tworzenie pierwszego rozszerzenia Visual Studio

Ten dokument to krótki przewodnik pokazujący, jak utworzyć pierwsze rozszerzenie za pomocą VisualStudio.Extensibility. Rozszerzenie działa poza procesem, czyli poza procesem programu Visual Studio.

Prerequisites

  • Visual Studio 2022 w wersji 17.9 Preview 1 lub nowszej z zainstalowanym pakietem obciążeń Visual Studio extension development.

Tworzenie projektu rozszerzenia

  • Użyj szablonu VisualStudio.Extensibility Project, aby utworzyć nowy projekt rozszerzeń.

Zrzut ekranu przedstawiający szablon vsExtensibility.

Na tym etapie możesz rozpocząć rozszerzanie Visual Studio przez dodanie poleceń i składników edytora do rozszerzenia.

Klasa rozszerzenia

Szablon tworzy klasę, która rozszerza klasę Extension. Ta klasa jest pierwszą klasą instancjonowaną podczas ładowania Twojego rozszerzenia. W metodzie InitializeServices można dodać własne usługi do kolekcji usług, aby udostępnić je na potrzeby wstrzykiwania zależności.

[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.
    }
}

Można również zobaczyć atrybut VisualStudioContribution używany do oznaczania składników rozszerzeń, które mają być używane przez Visual Studio. Ten atrybut można zastosować do klas implementujących IVisualStudioContributionClass lub statycznych właściwości typu implementującego IVisualStudioContributionProperty.

Dodaj pierwsze polecenie

Szablon tworzy Command1.cs jako pierwszy program obsługi poleceń, którego można użyć jako punktu wyjścia. Ponieważ chcemy poinformować Visual Studio o tym poleceniu, a klasa Command implementuje IVisualStudioContributionClass, polecenie jest oznaczone atrybutem VisualStudioContribution.

[VisualStudioContribution]
internal class Command1 : Command
{

Polecenie ma właściwość konfiguracji o nazwie CommandConfiguration, która definiuje jego nazwę wyświetlaną, ikonę i położenie w Extensions menu.

    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 },
    };

Właściwości konfiguracji są przetwarzane przez kompilator języka C# podczas kompilowania rozszerzenia, a ich wartości są zapisywane jako metadane rozszerzenia, dzięki czemu program Visual Studio może je odczytać bez konieczności ładowania zestawu rozszerzenia. Z tego powodu właściwości konfiguracji mają dodatkowe ograniczenia w porównaniu z normalnymi właściwościami (na przykład muszą być tylko do odczytu).

Można zauważyć, że wyświetlana nazwa polecenia to "%MyExtension.Command1.DisplayName%", które odwołuje się do ciągu MyExtension.Command1.DisplayName w pliku .vsextension/string-resources.json, co umożliwia lokalizację tego ciągu.

Po wykonaniu polecenia Visual Studio wywołuje metodę ExecuteCommandAsync, w której można umieścić punkt przerwania. Do interakcji z Visual Studio można użyć argumentu context lub obiektu this.Extensibility.

Na przykład procedura obsługi poleceń może być następująca:

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

Aby uzyskać więcej informacji na temat dodawania poleceń, zobacz sekcję Polecenia .

Debugowanie rozszerzenia

  1. Upewnij się, że projekt rozszerzenia został wybrany jako projekt startowy w Visual Studio, a następnie naciśnij F5, aby rozpocząć debugowanie.

  2. Naciśnięcie klawisza F5 kompiluje rozszerzenie i wdraża je w eksperymentalnej instancji używanej wersji programu Visual Studio. Debuger powinien zostać dołączony po załadowaniu rozszerzenia.

  3. Nowe polecenie można znaleźć w Extensions menu, jak pokazano na poniższej ilustracji:

    Screenshot przedstawiający przykładowe polecenie w Visual Studio.

    Zrzut ekranu przedstawiający przykładowe polecenie.

Następne kroki

Jeśli nie widzisz materiałów wprowadzających, zobacz Welcome to the VisualStudio.Extensibility documentation.

Teraz utwórz nieco bardziej interesujące rozszerzenie; Zobacz Tworzenie prostego rozszerzenia.