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.
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 IVisualStudioContributionClass
polecenie , 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
Upewnij się, że projekt rozszerzenia został wybrany jako projekt startowy w programie Visual Studio, a następnie naciśnij klawisz
F5
, aby rozpocząć debugowanie.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.Nowe polecenie można znaleźć w
Extensions
menu, jak pokazano na poniższej ilustracji:
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.