Tworzenie pierwszego rozszerzenia programu Visual Studio

Ten dokument to przewodnik Szybki start pokazujący, jak utworzyć pierwsze rozszerzenie przy użyciu rozszerzenia VisualStudio.Extensibility. Rozszerzenie kończy się procesem, co oznacza poza procesem programu Visual Studio.

Wymagania wstępne

  • Program Visual Studio 2022 w wersji 17.9 (wersja zapoznawcza 1 lub nowsza) z obciążeniem Visual Studio extension development .

Tworzenie projektu rozszerzenia

  • Użyj VisualStudio.Extensibility Project szablonu, aby utworzyć nowy projekt rozszerzalności.

Screenshot of the VSExtensibility template.

Na tym etapie możesz rozpocząć rozszerzanie programu Visual Studio, dodając polecenia i składniki edytora do rozszerzenia.

Klasa Extension

Szablon tworzy klasę, która rozszerza klasę Extension. Ta klasa jest pierwszą klasą, która jest tworzone podczas ładowania rozszerzenia. W metodzie InitializeServices można dodać własne usługi do kolekcji usług, aby udostępnić je do 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ć VisualStudioContribution atrybut używany do oznaczania składników rozszerzeń, które mają być używane przez program Visual Studio. Ten atrybut można zastosować do klas implementowania IVisualStudioContributionClass lub statycznych właściwości typu implementowania IVisualStudioContributionProperty.

Dodaj pierwsze polecenie

Szablon tworzy Command1.cs jako pierwszą procedurę obsługi poleceń, której można użyć jako punktu początkowego. Ponieważ chcemy poinformować program Visual Studio o tym poleceniu, a Command klasa implementuje IVisualStudioContributionClasspolecenie , 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ą oceniane przez kompilator języka C# podczas kompilowania rozszerzenia i ich wartości są zapisywane jako metadane rozszerzenia, aby program Visual Studio mógł go odczytać bez ł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).

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

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

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 programie Visual Studio, a następnie naciśnij klawisz F5 , aby rozpocząć debugowanie.

  2. Naciśnięcie klawisza F5 kompiluje rozszerzenie i wdraża je w eksperymentalnym wystąpieniu 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 showing sample command.

Następne kroki

Jeśli pominięto przeglądy wprowadzające, zobacz dokumentację Welcome to the VisualStudio.Extensibility (Witamy w dokumentacji visualstudio.rozszerzalności).

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