Vytvoření prvního rozšíření sady Visual Studio
Tento dokument je rychlý start, který ukazuje, jak vytvořit první rozšíření pomocí visualStudio.Extensibility. Rozšíření běží mimo proces sady Visual Studio, což znamená mimo proces sady Visual Studio.
Požadavky
- Visual Studio 2022 verze 17.9 Preview 1 nebo vyšší s úlohou
Visual Studio extension development
Vytvoření projektu rozšíření
- Pomocí
VisualStudio.Extensibility Project
šablony vytvořte nový projekt rozšiřitelnosti.
V tuto chvíli jste připraveni začít rozšiřovat Sadu Visual Studio přidáním příkazů a součástí editoru do rozšíření.
Třída Extension
Šablona vytvoří třídu, která rozšiřuje Extension
. Tato třída je první, která se vytvoří instance při načtení rozšíření. InitializeServices
V metodě můžete do kolekce služeb přidat vlastní služby, aby byly k dispozici pro injektáž závislostí.
[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.
}
}
Můžete také zobrazit VisualStudioContribution
atribut, který slouží k označení komponent rozšíření, které mají být využívány sadou Visual Studio. Tento atribut lze použít u tříd implementovaných IVisualStudioContributionClass
nebo statických vlastností typu implementace IVisualStudioContributionProperty
.
Přidání prvního příkazu
Šablona se vytvoří Command1.cs
jako první obslužná rutina příkazu, kterou můžete použít jako výchozí bod. Vzhledem k tomu, že chceme, aby sada Visual Studio věděla o tomto příkazu a Command
třída implementuje IVisualStudioContributionClass
, příkaz je označen atributem VisualStudioContribution
.
[VisualStudioContribution]
internal class Command1 : Command
{
Příkaz má vlastnost konfigurace s názvem CommandConfiguration
, která definuje jeho zobrazovaný název, ikonu a umístění v Extensions
nabídce.
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 },
};
Vlastnosti konfigurace se vyhodnocují kompilátorem jazyka C# při sestavování rozšíření a jejich hodnoty se ukládají jako metadata rozšíření, aby ji Visual Studio mohlo číst bez načtení sestavení rozšíření. Z tohoto důvodu mají vlastnosti konfigurace v porovnání s normálními vlastnostmi další omezení (například musí být jen pro čtení).
Uvidíte, že zobrazovaný název příkazu je "%MyExtension.Command1.DisplayName%"
, který odkazuje na MyExtension.Command1.DisplayName
řetězec v .vsextension/string-resources.json
souboru, což umožňuje lokalizovat tento řetězec.
Když se příkaz spustí, Visual Studio zavolá metodu ExecuteCommandAsync
, kde můžete umístit zarážku. K interakci se sadou Visual Studio můžete použít context
argument nebo this.Extensibility
objekt.
Například obslužná rutina příkazu může být následující:
public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken cancellationToken)
{
await context.ShowPromptAsync(
"Hello from an extension!",
PromptOptions.OK,
cancellationToken);
}
Další informace o tom, jak přidat příkazy, najdete v části Příkazy .
Ladění rozšíření
Ujistěte se, že je projekt rozšíření vybraný jako spouštěný projekt v sadě Visual Studio, a spusťte ladění stisknutím klávesy
F5
.Stisknutím
F5
sestavení sestavíte rozšíření a nasadíte ho do experimentální instance verze sady Visual Studio, kterou používáte. Ladicí program by se měl připojit po načtení rozšíření.Nový příkaz najdete v
Extensions
nabídce, jak je znázorněno na následujícím obrázku:
Další kroky
Pokud jste zmeškali úvodní přehledy, přečtěte si téma Vítá vás dokumentace k rozšíření VisualStudio.Extensibility.
Nyní vytvořte trochu zajímavější rozšíření; viz Vytvoření jednoduchého rozšíření.