Créer une extension avec une commande de menu
Cette procédure-à-pas montre comment créer une extension avec une commande de menu qui lance le Bloc-notes.
Créer une commande de menu
Créez un projet VSIX nommé FirstMenuCommand. Vous pouvez trouver le modèle de projet VSIX dans la boîte de dialogue Nouveau projet en recherchant « vsix ».
Lorsque le projet s'ouvre, ajoutez un modèle d'élément de commande personnalisé nommé FirstCommand. Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nœud du projet et sélectionnez Ajouter> un nouvel élément. Dans la boîte de dialogue Ajouter un nouvel élément, allez dans Éléments C#>Extensibilité et sélectionnez Commande. Dans le champ Nom en bas de la fenêtre, changez le nom du fichier de commande en FirstCommand.cs.
Générez le projet et commencez le débogage.
L'instance expérimentale de Visual Studio apparaît. Pour plus d'informations sur l'instance expérimentale, voir L'instance expérimentale.
Dans l'instance expérimentale, ouvrez la fenêtre Extensions>Gestion des extensions. Vous devriez voir l'extension FirstMenuCommand ici. (Si vous ouvrez Manage Extensions dans votre instance de travail de Visual Studio, vous ne verrez pas FirstMenuCommand).
Allez maintenant dans le menu Outils de l'instance expérimentale. Vous devriez voir la commande Invoke FirstCommand. À ce stade, la commande affiche une boîte de message qui indique FirstCommand Inside FirstMenuCommand.FirstCommand.MenuItemCallback(). Nous verrons comment démarrer le Bloc-notes à partir de cette commande dans la section suivante.
Modifiez le gestionnaire de la commande de menu
Mettons à présent à jour le gestionnaire de commandes pour lancer le Bloc-notes.
Arrêtez le débogage et retournez dans votre instance de travail de Visual Studio. Ouvrez le fichier FirstCommand.cs et ajoutez l'instruction using suivante :
using System.Diagnostics;
Trouvez le constructeur privé FirstCommand. C'est là que la commande est gérée par le service de commande et que le gestionnaire de commande est spécifié. Modifiez le nom du gestionnaire de commandes en StartNotepad, 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); }
Supprimez la méthode
Execute
et ajoutez une méthodeStartNotepad
, qui lancera simplement le Bloc-notes :private void StartNotepad(object sender, EventArgs e) { ThreadHelper.ThrowIfNotOnUIThread(); Process proc = new Process(); proc.StartInfo.FileName = "notepad.exe"; proc.Start(); }
Essayez maintenant. Lorsque vous commencez à déboguer le projet et que vous cliquez sur Outils>Invocation de la première commande, vous devriez voir apparaître une instance de Notepad.
Vous pouvez utiliser une instance de la classe Process pour exécuter n'importe quel exécutable, et pas seulement le Bloc-notes. Essayez avec
calc.exe
, par exemple.
Nettoyer l'environnement expérimental
Si vous développez plusieurs extensions, ou si vous vous contentez d'explorer les résultats avec différentes versions du code de votre extension, il se peut que votre environnement expérimental ne fonctionne plus comme il le devrait. Dans ce cas, vous devez exécuter le script de réinitialisation. Elle s'appelle Réinitialiser l'instance expérimentale de Visual Studio et fait partie du SDK de Visual Studio. Ce script supprime toutes les références à vos extensions de l'environnement expérimental, afin que vous puissiez repartir de zéro.
Vous pouvez accéder à ce script de deux manières :
Sur le bureau, recherchez Réinitialiser l'instance expérimentale de Visual Studio.
À 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 votre extension fonctionne comme vous le souhaitez, il est temps de penser à la partager avec vos amis et collègues. C'est facile, à condition que Visual Studio 2015 soit installé. Il vous suffit de leur envoyer le fichier .vsix que vous avez créé. (Veillez à le construire en mode Release).
Vous trouverez le fichier .vsix de cette extension dans le répertoire bin de FirstMenuCommand. Plus précisément, en supposant que vous ayez construit la configuration Release, elle sera dans le mode Release :
<répertoire du code>\FirstMenuCommand\FirstMenuCommand\bin\Release\FirstMenuCommand.vsix
Pour installer l'extension, votre ami doit fermer toutes les instances ouvertes de Visual Studio, puis double-cliquer sur le fichier .vsix, ce qui fait apparaître le programme d'installation VSIX. Les fichiers sont copiés dans le répertoire %LocalAppData%\Microsoft\VisualStudio<version>\Extensions.
Lorsque votre ami lancera à nouveau Visual Studio, il trouvera l'extension FirstMenuCommand dans Outils>Extensions and Updates. Ils peuvent également aller dans Extensions et mises à jour pour désinstaller ou désactiver l'extension.
Étapes suivantes
Cette procédure-à-pas vous a montré seulement 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 :
Vous pouvez faire beaucoup plus de choses avec une simple commande de menu :
Ajoutez votre propre icône : Ajouter des icônes aux commandes de menu
Changez le texte de la commande de menu : Modifier le texte d'une commande de menu
Ajouter un raccourci de menu à une commande : Associer des raccourcis clavier à des éléments de menu
Ajouter différents types de commandes, de menus et de barres d'outils : Étendre les menus et les commandes
Ajoutez des fenêtres d'outils et étendez les fenêtres d'outils intégrées de Visual Studio : Étendre et personnaliser les fenêtres d'outils
Ajoutez IntelliSense, des suggestions de code et d'autres fonctionnalités aux éditeurs de code existants : Étendre l'éditeur et les services linguistiques
Ajoutez des pages d'options et de propriétés et des paramètres utilisateur à votre extension : Étendre les propriétés et la fenêtre des propriétés et Étendre les paramètres et options de l'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) ou la création d'un nouveau type d'éditeur (Créer des éditeurs et des concepteurs personnalisés).