Créer votre première extension Visual Studio
Ce document est un guide de démarrage rapide qui montre comment créer votre première extension à l’aide de VisualStudio.Extensibility. L’extension s’exécute hors processus, ce qui signifie en dehors du processus Visual Studio.
Prérequis
- Visual Studio 2022 version 17.9 Preview 1 ou ultérieure avec
Visual Studio extension development
la charge de travail.
Créer le projet d’extension
- Utilisez
VisualStudio.Extensibility Project
un modèle pour créer un projet d’extensibilité.
À ce stade, vous êtes prêt à commencer à étendre Visual Studio en ajoutant des commandes et des composants d’éditeur à votre extension.
Classe Extension
Le modèle crée une classe qui s’étend Extension
. Cette classe est la première instanciée lorsque votre extension est chargée. Dans la InitializeServices
méthode, vous pouvez ajouter vos propres services à la collection de services pour les rendre disponibles pour l’injection de dépendances.
[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.
}
}
Vous pouvez également voir l’attribut VisualStudioContribution
utilisé pour marquer les composants d’extension destinés à être consommés par Visual Studio. Cet attribut peut être appliqué aux classes implémentant IVisualStudioContributionClass
ou statiques des propriétés d’un type implémentant IVisualStudioContributionProperty
.
Ajouter votre première commande
Le modèle crée Command1.cs
en tant que premier gestionnaire de commandes, que vous pouvez utiliser comme point de départ. Étant donné que nous voulons rendre Visual Studio conscient de cette commande et que la Command
classe implémente IVisualStudioContributionClass
, la commande est marquée avec l’attribut VisualStudioContribution
.
[VisualStudioContribution]
internal class Command1 : Command
{
La commande a une propriété de configuration nommée CommandConfiguration
, qui définit son nom d’affichage, son icône et son positionnement sous le 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 },
};
Les propriétés de configuration sont évaluées par le compilateur C# lors de la génération de l’extension et leurs valeurs sont enregistrées en tant que métadonnées d’extension afin que Visual Studio puisse le lire sans charger l’assembly d’extension. Pour cette raison, les propriétés de configuration ont des restrictions supplémentaires par rapport aux propriétés normales (par exemple, elles doivent être lues en lecture seule).
Vous pouvez voir que le nom complet de la commande est "%MyExtension.Command1.DisplayName%"
, qui fait référence à la MyExtension.Command1.DisplayName
chaîne dans le .vsextension/string-resources.json
fichier, ce qui permet à cette chaîne d’être localisée.
Lorsque la commande est exécutée, Visual Studio appelle à ExecuteCommandAsync
la méthode où vous pouvez placer un point d’arrêt. Vous pouvez utiliser l’argument context
ou this.Extensibility
l’objet pour interagir avec Visual Studio.
Par exemple, un gestionnaire de commandes peut être comme indiqué ci-dessous :
public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken cancellationToken)
{
await context.ShowPromptAsync(
"Hello from an extension!",
PromptOptions.OK,
cancellationToken);
}
Pour plus d’informations sur l’ajout de commandes, reportez-vous à la section Commandes .
Déboguer votre extension
Assurez-vous que votre projet d’extension est sélectionné comme projet de démarrage dans Visual Studio, puis appuyez
F5
pour démarrer le débogage.Appuyez sur les builds de votre extension et déployez-la
F5
sur l’instance expérimentale de la version de Visual Studio que vous utilisez. Le débogueur doit être attaché une fois votre extension chargée.Vous trouverez la nouvelle commande dans
Extensions
le menu, comme illustré dans l’image suivante :
Étapes suivantes
Si vous avez manqué les présentations d’introduction, consultez la documentation Bienvenue dans la documentation VisualStudio.Extensibility.
Créez maintenant une extension légèrement plus intéressante ; consultez Créer une extension simple.