Partager via


Concevoir des fichiers de table de commandes XML (.vsct)

Un fichier de table de commandes XML (.vsct) décrit la disposition et l’apparence des éléments de commande pour un VSPackage. Les éléments de commande incluent des boutons, des zones de liste déroulante, des menus, des barres d’outils et des groupes d’éléments de commande. Cet article décrit les fichiers de table de commandes XML, leur impact sur les éléments de commande et les menus, et comment les créer.

Commandes, menus, groupes et fichier .vsct

Les fichiers .vsct sont organisés autour des commandes, des menus et des groupes de commandes. Les balises XML dans le fichier .vsct représentent chacun de ces éléments, ainsi que d’autres éléments associés, tels que les boutons de commande, le placement des commandes et les bitmaps.

Lorsque vous créez un VSPackage en exécutant le modèle de package Visual Studio, le modèle génère un fichier .vsct avec les éléments nécessaires pour une commande de menu, une fenêtre d’outil ou un éditeur personnalisé, en fonction de vos sélections. Ce fichier .vsct peut ensuite être modifié pour répondre aux exigences d’un VSPackage spécifique. Pour obtenir des exemples de modification d’un fichier .vsct , consultez Étendre les menus et les commandes.

Pour créer un fichier .vsct vide, consultez Comment : créer un fichier .vsct. Une fois créé, vous ajoutez des éléments, des attributs et des valeurs XML au fichier pour décrire la disposition de l’élément de commande. Pour obtenir un schéma XML détaillé, consultez la référence de schéma XML VSCT.

Différences entre les fichiers .ctc et .vsct

Bien que la signification derrière les balises XML d’un fichier .vsct soit identique à celle des balises au format de fichier .ctc désormais déconseillé, leur implémentation est un peu différente :

  • La nouvelle <balise extern> est l’emplacement où vous référencez d’autres fichiers .h à compiler, tels que ces fichiers pour la barre d’outils Visual Studio.

  • Bien que les fichiers .vsct prennent en charge l’instruction /include , comme les fichiers .ctc le font, il dispose également d’un nouvel <élément d’importation> . La différence est que /include apporte toutes les informations, tandis que <l’importation> apporte uniquement les noms.

  • Bien que les fichiers .ctc nécessitent un fichier d’en-tête dans lequel vous définissez vos directives de préprocesseur, il n’est pas nécessaire pour les fichiers .vsct . Au lieu de cela, placez vos directives dans la table de symboles, situées dans les éléments Symbol>, situées en bas du fichier .vsct.<

  • Les fichiers .vsct comportent une <balise d’annotation> , qui vous permet d’incorporer toutes les informations que vous aimez, telles que des notes ou même des images.

  • Les valeurs sont stockées en tant qu’attributs sur l’élément.

  • Les indicateurs de commande peuvent être stockés individuellement ou empilés. IntelliSense ne fonctionne toutefois pas sur les indicateurs de commande empilés. Pour plus d’informations sur les indicateurs de commande, consultez l’élément CommandFlag.

  • Vous pouvez spécifier plusieurs types, tels que des listes déroulantes fractionnées, des combos, etc.

  • Les GUID ne sont pas validés.

  • Chaque élément d’interface utilisateur a une chaîne qui représente le texte affiché avec celui-ci.

  • Le parent est facultatif. S’il est omis, la valeur Groupe inconnu est utilisée.

  • L’argument Icône est facultatif.

  • Section Bitmap : cette section est identique à celle d’un fichier .ctc, sauf que vous pouvez maintenant spécifier un nom de fichier via Href qui sera extrait par le compilateur vsct.exe au moment de la compilation.

  • ResID : l’ancien ID de ressource bitmap peut être utilisé et fonctionne toujours de la même façon que dans les fichiers .ctc .

  • HRef : nouvelle méthode qui vous permet de spécifier un nom de fichier pour la ressource bitmap. Il part du principe que tous sont utilisés, de sorte que vous pouvez omettre la section Utilisée. Le compilateur recherche d’abord les ressources locales pour le fichier, puis sur tous les partages nets et toutes les ressources définies par le commutateur /I .

  • Keybinding : vous n’avez plus besoin de spécifier un émulateur. Si vous en spécifiez un, le compilateur suppose que l’éditeur et l’émulateur sont identiques.

  • Keychord : Keychord a été supprimé. Le nouveau format est Key1,Mod1,Key2,Mod2. Vous pouvez spécifier un caractère, une constante hexadécimale ou VK.

Le nouveau compilateur, vsct.exe, compile à la fois les fichiers .ctc et .vsct . Toutefois, l’ancien compilateur ctc.exe ne reconnaît pas ou ne compile pas les fichiers .vsct .

Vous pouvez utiliser le compilateur vsct.exe pour convertir un fichier .cto existant en fichier .vsct. Pour plus d’informations, consultez Guide pratique pour créer un fichier .vsct à partir d’un fichier .cto existant.

Éléments du fichier .vsct

La table de commandes comporte la hiérarchie et les éléments suivants :

  • Élément CommandTable : représente toutes les commandes, groupes de menus et menus associés au VSPackage.

  • Élément Extern : fait référence à tous les fichiers .h externes que vous souhaitez fusionner avec le fichier .vsct .

  • Élément Include : référence les fichiers d’en-tête (.h) supplémentaires que vous souhaitez compiler avec votre fichier .vsct. Un fichier .vsct peut inclure des fichiers .h contenant des constantes qui définissent des commandes, des groupes de menus et des menus que l’IDE ou un autre VSPackage fournit.

  • Élément Commands : représente toutes les commandes individuelles qui peuvent être exécutées. Chaque commande comporte les quatre éléments enfants suivants :

  • Élément Menus : représente tous les menus et barres d’outils dans VSPackage. Les menus sont des conteneurs pour les groupes de commandes.

  • Élément Groups : représente tous les groupes du VSPackage. Les groupes sont des collections de commandes individuelles.

  • Élément Buttons : représente tous les boutons de commande et les éléments de menu dans VSPackage. Les boutons sont des contrôles visuels qui peuvent être associés à des commandes.

  • Élément Bitmaps : représente toutes les bitmaps pour tous les boutons du VSPackage. Les bitmaps sont des images qui s’affichent en regard ou sur les boutons de commande, en fonction du contexte.

  • Élément CommandPlacements : indique des emplacements supplémentaires où les commandes individuelles doivent être placées dans les menus de votre VSPackage.

  • Élément VisibilityConstraints : spécifie si une commande s’affiche à tout moment, ou uniquement dans certains contextes, par exemple lorsqu’une boîte de dialogue ou une fenêtre particulière est affichée. Les menus et les commandes qui ont une valeur pour cet élément s’affichent uniquement lorsque le contexte spécifié est actif. Le comportement par défaut consiste à afficher la commande à tout moment.

  • Élément KeyBindings : spécifie toutes les liaisons de clé pour les commandes. Autrement dit, une ou plusieurs combinaisons de touches qui doivent être enfoncées pour exécuter la commande, par exemple Ctrl+S.

  • Élément UsedCommands : informe l’environnement Visual Studio que, bien que la commande spécifiée soit implémentée par d’autres codes, lorsque le VSPackage actuel est actif, il fournit l’implémentation de commande.

  • Élément Symboles : contient les noms de symboles et les ID GUID de toutes vos commandes dans le package.

Instructions de conception de fichier .vsct

Pour concevoir un fichier .vsct , suivez ces instructions.

  • Les commandes ne peuvent être placées que dans des groupes, les groupes ne peuvent être placés que dans les menus, et les menus ne peuvent être placés que dans des groupes. Seuls les menus sont réellement affichés dans l’IDE, les groupes et les commandes ne sont pas.

  • Les sous-menus ne peuvent pas être directement affectés à un menu, mais doivent être affectés à un groupe, qui est à son tour affecté à un menu.

  • Les commandes, sous-menus et groupes peuvent être affectées à un groupe ou un menu parent à l’aide du champ parent de leur directive de définition.

  • L’organisation d’une table de commandes uniquement par le biais des champs parents dans les directives a une limitation significative. Les directives qui définissent des objets ne peuvent prendre qu’un seul argument parent.

  • La réutilisation de commandes, de groupes ou de sous-menus nécessite l’utilisation d’une nouvelle directive pour créer une instance de l’objet avec sa propre GUID:ID paire.

  • Chaque GUID:ID paire doit être unique. La réutilisation d’une commande qui a, par exemple, été placée sur un menu, une barre d’outils ou dans un menu contextuel, est gérée par l’interface IOleCommandTarget .

  • Les commandes et sous-menus peuvent également être affectés à plusieurs groupes, et les groupes peuvent être affectés à plusieurs menus à l’aide de l’élément Commands.

Notes de fichier .vsct

Si vous apportez des modifications à un fichier .vsct après la compilation et placez-le dans une DLL satellite native, vous devez exécuter devenv.exe /setup /nosetupvstemplates. Cela force les ressources VSPackage spécifiées dans le registre expérimental à relire et la base de données interne qui décrit Visual Studio à reconstruire.

Au cours du développement, il est possible que plusieurs projets VSPackage soient créés et inscrits dans la ruche de Registre expérimental, ce qui peut entraîner un encombrement confus dans l’IDE. Pour résoudre ce problème, vous pouvez réinitialiser la ruche expérimentale aux paramètres par défaut pour supprimer tous les VSPackages inscrits et toutes les modifications qu’ils peuvent avoir apportées à l’IDE. Pour réinitialiser la ruche expérimentale, utilisez l’outil CreateExpInstance.exe fourni avec le Kit de développement logiciel (SDK) Visual Studio. Vous pouvez le trouver à l’adresse suivante :

%PROGRAMFILES(x86)%\Visual Studio\<version> SDK\VisualStudioIntegration\Tools\Bin\CreateExpInstance.exe

Exécutez l’outil à l’aide de la commande CreateExpInstance /Reset. N’oubliez pas que cet outil supprime de la ruche expérimentale tous les VSPackages inscrits qui ne sont pas normalement installés avec Visual Studio.