Partager via


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é.

Screenshot of the VSExtensibility template.

À 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

  1. 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.

  2. 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.

  3. Vous trouverez la nouvelle commande dans Extensions le menu, comme illustré dans l’image suivante :

    Screenshot showing sample command.

É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.