Creare la prima estensione di Visual Studio
Questo documento è una guida introduttiva che illustra come creare la prima estensione usando VisualStudio.Extensibility. L'estensione è out-of-process, ovvero al di fuori del processo di Visual Studio.
Prerequisiti
- Visual Studio 2022 versione 17.9 Preview 1 o successiva con
Visual Studio extension development
carico di lavoro.
Creare un progetto di estensione
- Usare il
VisualStudio.Extensibility Project
modello per creare un nuovo progetto di estendibilità.
A questo punto, si è pronti per iniziare a estendere Visual Studio aggiungendo comandi e componenti dell'editor all'estensione.
Classe Extension
Il modello crea una classe che estende Extension
. Questa classe è la prima che viene creata un'istanza quando viene caricata l'estensione. InitializeServices
Nel metodo è possibile aggiungere servizi personalizzati alla raccolta di servizi per renderli disponibili per l'inserimento delle dipendenze.
[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.
}
}
È anche possibile visualizzare l'attributo VisualStudioContribution
usato per contrassegnare i componenti di estensione che devono essere utilizzati da Visual Studio. Questo attributo può essere applicato alle classi che implementano IVisualStudioContributionClass
o proprietà statiche di un tipo che implementa IVisualStudioContributionProperty
.
Aggiungere il primo comando
Il modello crea Command1.cs
come primo gestore di comandi, che è possibile usare come punto di partenza. Poiché si vuole rendere Visual Studio consapevole di questo comando e la Command
classe implementa IVisualStudioContributionClass
, il comando è contrassegnato con l'attributo VisualStudioContribution
.
[VisualStudioContribution]
internal class Command1 : Command
{
Il comando ha una proprietà di configurazione denominata CommandConfiguration
, che definisce il nome visualizzato, l'icona e la Extensions
posizione nel 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 },
};
Le proprietà di configurazione vengono valutate dal compilatore C# durante la compilazione dell'estensione e i relativi valori vengono salvati come metadati di estensione in modo che Visual Studio possa leggerlo senza caricare l'assembly di estensione. Per questo motivo, le proprietà di configurazione hanno restrizioni aggiuntive rispetto alle proprietà normali, ad esempio devono essere di sola lettura.
È possibile notare che il nome visualizzato del comando è "%MyExtension.Command1.DisplayName%"
, che fa riferimento alla MyExtension.Command1.DisplayName
stringa nel .vsextension/string-resources.json
file, consentendo la localizzazione di questa stringa.
Quando viene eseguito il comando, Visual Studio chiamerà al ExecuteCommandAsync
metodo in cui è possibile posizionare un punto di interruzione. È possibile utilizzare l'argomento context
o this.Extensibility
l'oggetto per interagire con Visual Studio.
Ad esempio, un gestore di comandi potrebbe essere il seguente:
public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken cancellationToken)
{
await context.ShowPromptAsync(
"Hello from an extension!",
PromptOptions.OK,
cancellationToken);
}
Per altre informazioni su come aggiungere comandi, vedere la sezione Comandi .
Eseguire il debug dell'estensione
Assicurarsi che il progetto di estensione sia selezionato come progetto di avvio in Visual Studio e premere
F5
per avviare il debug.Premendo
F5
build l'estensione e distribuirla nell'istanza sperimentale della versione di Visual Studio in uso. Il debugger deve essere collegato dopo il caricamento dell'estensione.È possibile trovare il nuovo comando nel
Extensions
menu come illustrato nell'immagine seguente:
Passaggi successivi
Se non sono state visualizzate le panoramiche introduttive, vedere Introduzione alla documentazione di VisualStudio.Extensibility.
Creare ora un'estensione leggermente più interessante; vedere Creare una semplice estensione.