Créer une extension avec une commande de menu

Cette procédure pas à pas montre comment créer une extension avec une commande de menu qui lance Bloc-notes Windows.

Créer une commande de menu

  1. Créez un projet VSIX nommé FirstMenuCommand. Vous trouverez le modèle de projet VSIX dans la boîte de dialogue Nouveau projet en recherchant « vsix ».

  2. Lorsque le projet s’ouvre, ajoutez un modèle d’élément de commande personnalisé nommé FirstCommand. Dans le Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet, puis sélectionnez Ajouter>un nouvel élément. Dans la boîte de dialogue Ajouter un nouvel élément, accédez à L’extensibilité des éléments>C# et sélectionnez Commande. Dans le champ Nom en bas de la fenêtre, remplacez le nom du fichier de commande par FirstCommand.cs.

  3. Générez le projet et commencez le débogage.

    L’instance expérimentale de Visual Studio s’affiche. Pour plus d’informations sur l’instance expérimentale, consultez l’instance expérimentale.

  4. Dans l’instance expérimentale, ouvrez la fenêtre Extensions Gérer les extensions>. Vous devez voir l’extension FirstMenuCommand ici. (Si vous ouvrez Gérer les extensions dans votre instance de travail de Visual Studio, vous ne verrez pas FirstMenuCommand).

Accédez maintenant au menu Outils de l’instance expérimentale. Vous devez voir la commande Invoke FirstCommand . À ce stade, la commande affiche une boîte de message qui indique FirstCommand Inside FirstMenuCommand.FirstCommand.MenuItemCallback(). Nous allons voir comment démarrer Bloc-notes Windows à partir de cette commande dans la section suivante.

Modifier le gestionnaire de commandes de menu

Nous allons maintenant mettre à jour le gestionnaire de commandes pour démarrer Bloc-notes Windows.

  1. Arrêtez le débogage et revenez à votre instance de travail de Visual Studio. Ouvrez le fichier FirstCommand.cs et ajoutez l’instruction using suivante :

    using System.Diagnostics;
    
  2. Recherchez le constructeur FirstCommand privé. C’est là que la commande est connectée au service de commandes et que le gestionnaire de commandes est spécifié. Remplacez le nom du gestionnaire de commandes par Start Bloc-notes Windows, comme suit :

    private FirstCommand(AsyncPackage package, OleMenuCommandService commandService)
    {
        this.package = package ?? throw new ArgumentNullException(nameof(package));
        commandService = commandService ?? throw new ArgumentNullException(nameof(commandService));
    
        CommandID menuCommandID = new CommandID(CommandSet, CommandId);
        // Change to StartNotepad handler.
        MenuCommand menuItem = new MenuCommand(this.StartNotepad, menuCommandID);
        commandService.AddCommand(menuItem);
    }
    
  3. Supprimez la Execute méthode et ajoutez une StartNotepad méthode, qui démarre simplement Bloc-notes Windows :

    private void StartNotepad(object sender, EventArgs e)
    {
        ThreadHelper.ThrowIfNotOnUIThread();
    
        Process proc = new Process();
        proc.StartInfo.FileName = "notepad.exe";
        proc.Start();
    }
    
  4. Essayez-le maintenant. Lorsque vous démarrez le débogage du projet et cliquez sur Outils>Invoke FirstCommand, vous devriez voir une instance de Bloc-notes Windows apparaître.

    Vous pouvez utiliser une instance de la Process classe pour exécuter n’importe quel exécutable, pas seulement Bloc-notes Windows. Essayez-le avec calc.exe, par exemple.

Nettoyer l’environnement expérimental

Si vous développez plusieurs extensions ou que vous explorez simplement les résultats avec différentes versions de votre code d’extension, votre environnement expérimental peut cesser de fonctionner comme il le doit. Dans ce cas, vous devez exécuter le script de réinitialisation. Elle est appelée Réinitialiser l’instance expérimentale de Visual Studio et elle est fournie dans le cadre du Kit de développement logiciel (SDK) Visual Studio. Ce script supprime toutes les références à vos extensions de l’environnement expérimental, ce qui vous permet de commencer à partir de zéro.

Vous pouvez accéder à ce script de deux façons :

  1. À partir du bureau, recherchez Réinitialiser l’instance expérimentale Visual Studio.

  2. À partir de la ligne de commande, exécutez ce qui suit :

    <VSSDK installation>\VisualStudioIntegration\Tools\Bin\CreateExpInstance.exe /Reset /VSInstance=<version> /RootSuffix=Exp && PAUSE
    
    

Déployer votre extension

Maintenant que vous avez votre extension d’outil en cours d’exécution comme vous le souhaitez, il est temps de réfléchir au partage avec vos amis et vos collègues. C’est facile, tant qu’ils ont installé Visual Studio 2015. Il vous suffit de les envoyer le fichier .vsix que vous avez créé. (Veillez à la générer en mode Release.)

Vous trouverez le fichier .vsix pour cette extension dans le répertoire bin FirstMenuCommand . Plus précisément, en supposant que vous avez créé la configuration Release, elle se trouve dans :

<répertoire> de code\FirstMenuCommand\FirstMenuCommand\bin\Release\FirstMenuCommand.vsix

Pour installer l’extension, votre ami doit fermer toutes les instances ouvertes de Visual Studio, puis double-cliquez sur le fichier .vsix , qui affiche le programme d’installation VSIX. Les fichiers sont copiés dans le répertoire %LocalAppData%\Microsoft\VisualStudio<version>\Extensions .

Lorsque votre ami renvoie Visual Studio, il trouve l’extension FirstMenuCommand dans Tools>Extensions et Mises à jour. Ils peuvent également accéder aux extensions et Mises à jour pour désinstaller ou désactiver l’extension.

Étapes suivantes

Cette procédure pas à pas vous a montré une petite partie de ce que vous pouvez faire avec une extension Visual Studio. Voici une courte liste d’autres choses (raisonnablement faciles) que vous pouvez faire avec les extensions Visual Studio :

  1. Vous pouvez effectuer de nombreuses opérations supplémentaires avec une commande de menu simple :

    1. Ajouter votre propre icône : ajouter des icônes aux commandes de menu

    2. Modifier le texte de la commande de menu : modifier le texte d’une commande de menu

    3. Ajouter un raccourci de menu à une commande : lier les raccourcis clavier aux éléments de menu

  2. Ajouter différents types de commandes, menus et barres d’outils : étendre les menus et les commandes

  3. Ajouter des fenêtres d’outils et étendre les fenêtres d’outils intégrées de Visual Studio : Étendre et personnaliser les fenêtres d’outils

  4. Ajouter IntelliSense, des suggestions de code et d’autres fonctionnalités aux éditeurs de code existants : étendre l’éditeur et les services linguistiques

  5. Ajouter des options et des pages de propriétés et des paramètres utilisateur à votre extension : étendre les propriétés et la fenêtre Propriété et étendre les paramètres et options utilisateur

    D’autres types d’extensions nécessitent un peu plus de travail, comme la création d’un nouveau type de projet (étendre les projets), la création d’un nouveau type d’éditeur (créer des éditeurs et des concepteurs personnalisés) ou l’implémentation de votre extension dans un interpréteur de commandes isolé : Shell isolé Visual Studio