Concevoir des fichiers XML command table (.vsct)Design XML command table (.vsct) files

Une table de commande XML (.vsct) fichier décrit la disposition et l’apparence des éléments de commande pour un VSPackage.An XML command table (.vsct) file describes the layout and appearance of command items for a VSPackage. É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 la commande.Command items include buttons, combo boxes, menus, toolbars, and groups of command items. Cet article décrit les fichiers de table de commande XML, comment elles affectent les menus et éléments de commande et comment les créer.This article describes XML command table files, how they affect command items and menus, and how to create them.

Commandes, menus, groupes et le fichier .vsctCommands, menus, groups, and the .vsct file

Le .vsct fichiers sont organisés autour des commandes, des menus et des groupes de commandes.The .vsct files are organized around commands, menus, and command groups. Les balises XML dans le .vsct représentent chacun de ces éléments, ainsi que d’autres éléments associés tels que des boutons de commande, le placement de commande et les bitmaps de fichiers.XML tags in the .vsct file represent each of these items, along with other associated items such as command buttons, command placement, and bitmaps.

Lorsque vous créez un nouveau VSPackage s’affiche en exécutant la Visual StudioVisual Studio modèle de package, le modèle génère un .vsct fichier avec les éléments nécessaires pour une commande de menu, une fenêtre outil ou un éditeur personnalisé, en fonction de vos sélections.When you create a new VSPackage by running the Visual StudioVisual Studio package template, the template generates a .vsct file with the necessary elements for a menu command, tool window, or custom editor, depending on your selections. Cela .vsct fichier peut ensuite être modifié pour répondre aux exigences d’un VSPackage spécifique.This .vsct file can then be modified to meet the requirements of a specific VSPackage. Pour obtenir des exemples montrant comment modifier un .vsct de fichiers, consultez étendre des menus et commandes.For examples of how to modify a .vsct file, see Extend menus and commands.

Pour créer un nouveau, vide .vsct de fichiers, consultez Comment : créer un .vsct fichier.To create a new, blank .vsct file, see How to: Create a .vsct file. Une fois créé, ajoutez les éléments XML, les attributs et les valeurs dans le fichier pour décrire la disposition d’élément de commande.Once created, you add XML elements, attributes, and values to the file to describe the command item layout. Pour un schéma XML détaillé, consultez le référence du schéma XML VSCT.For a detailed XML schema, see the VSCT XML schema reference.

Différences entre les fichiers .ctc et .vsctDifferences between .ctc and .vsct files

Tandis que la signification derrière le code XML des balises dans un .vsct fichier sont les mêmes que ces balises dans désormais déconseillé .ctc format de fichier, leur implémentation est un peu différente :While the meaning behind the XML tags in a .vsct file are the same as those tags in the now deprecated .ctc file format, their implementation is a bit different:

  • La nouvelle <extern > balise est où vous font référence à d’autres .h fichiers à compiler, tels que ces fichiers pour le Visual StudioVisual Studio barre d’outils.The new <extern> tag is where you reference other .h files to be compiled, such as those files for the Visual StudioVisual Studio toolbar.

  • Tandis que .vsct fichiers de prise en charge la / include instruction, en tant que .ctc font des fichiers, il comporte également un nouveau <Importer > élément.While .vsct files support the /include statement, as .ctc files do, it also features a new <import> element. La différence est, / include permet d’utiliser tous les des informations, tandis que <Importer > permet d’utiliser uniquement les noms.The difference is, /include brings in all of the information, while <import> brings in only the names.

  • Bien que .ctc fichiers nécessitent un fichier d’en-tête dans lequel vous définissez vos directives de préprocesseur, un n’est pas obligatoire pour .vsct fichiers.While .ctc files require a header file in which you define your preprocessor directives, one is not required for .vsct files. Au lieu de cela, placez vos directives dans la table de symboles, située dans le <symbole > éléments, situés en bas de la .vsct fichier.Instead, place your directives in the symbol table, located in the <Symbol> elements, located at the bottom of the .vsct file.

  • .VSCT fonctionnalité des fichiers d’un <Annotation > balise, qui vous permet d’incorporer des informations que vous le souhaitez, telles que des notes ou même d’images..vsct files feature an <Annotation> tag, which allows you to embed any information you like, such as notes or even pictures.

  • Les valeurs sont stockées en tant qu’attributs sur l’élément.Values are stored as attributes on the item.

  • Indicateurs de commande peuvent être stockées individuellement ou empilés.Command flags can be stored individually or stacked. Toutefois, IntelliSense, ne fonctionne pas sur les indicateurs de commande empilées.IntelliSense, however, does not work on stacked command flags. Pour plus d’informations sur les indicateurs de commande, consultez le CommandFlag élément.For more information about command flags, see the CommandFlag element.

  • Vous pouvez spécifier plusieurs types, tels que les listes déroulantes de fractionnement, combos, etc.You can specify multiple types, such as split dropdowns, combos, etc.

  • Ne valident pas les GUID.GUIDs don't validate.

  • Chaque élément d’interface utilisateur a une chaîne qui représente le texte qui s’affiche avec lui.Each UI element has a string that represents the text that is displayed with it.

  • Le parent est facultatif.The parent is optional. Si omis, la valeur groupe inconnu est utilisé.If omitted, the value Group Unknown is used.

  • Le icône argument est facultatif.The Icon argument is optional.

  • Bitmap de section : cette section est le même que dans un .ctc de fichiers, à ceci près que vous pouvez désormais spécifier un nom de fichier par le biais de Href qui est extraites à par le vsct.exe compilateur au moment de la compilation.Bitmap section: This section is the same as in a .ctc file, except that you can now specify a file name via Href that will be pulled in by the vsct.exe compiler at compile time.

  • ResID : L’ancienne image bitmap ID peut être utilisé et toujours sur le fonctionnement identique à celui de .ctc fichiers.ResID: The old bitmap resource ID can be used and still works the same as in .ctc files.

  • HRef : Une nouvelle méthode qui vous permet de spécifier un nom de fichier pour la ressource bitmap.HRef: A new method that allows you to specify a file name for the bitmap resource. Il suppose que toutes sont utilisées, donc vous pouvez omettre la section utilisée.It assumes that all are used, so you can omit the Used section. Le compilateur recherche tout d’abord pour les ressources locales pour le fichier, puis sur tous les partages réseau, et toutes les ressources définies par le /I basculer.The compiler will first search for local resources for the file, then on any net shares, and any resources defined by the /I switch.

  • Combinaison de touches : Vous n’avez plus à spécifier un émulateur.Keybinding: You no longer have to specify an emulator. Si vous ne spécifiez pas un, le compilateur suppose que l’éditeur et l’émulateur sont les mêmes.If you do specify one, the compiler will assume that the editor and the emulator are the same.

  • Keychord : Keychord a été supprimé.Keychord: Keychord has been dropped. Le nouveau format est Mod1, Key1, Key2, le Mod2.The new format is Key1,Mod1,Key2,Mod2. Vous pouvez spécifier un caractère, hexadécimal ou constante VK.You can specify either a character, hexadecimal, or VK constant.

Le nouveau compilateur vsct.exe, compile les deux .ctc et .vsct fichiers.The new compiler, vsct.exe, compiles both .ctc and .vsct files. L’ancien ctc.exe compilateur, toutefois, ne reconnaissent pas ou ne sera pas compiler .vsct fichiers.The old ctc.exe compiler, however, will not recognize or compile .vsct files.

Vous pouvez utiliser la vsct.exe compilateur de convertir un existant .cto de fichiers dans un .vsct fichier.You can use the vsct.exe compiler to convert an existing .cto file into a .vsct file. Pour plus d’informations, consultez Comment : créer un fichier .vsct à partir d’un fichier .cto existant.For more information, see How to: Create a .vsct file from an existing .cto file.

Les éléments du fichier .vsctThe .vsct file elements

La table de commande présente la hiérarchie et les éléments suivants :The command table has the following hierarchy and elements:

Élément CommandTable: représente toutes les commandes, les groupes de menus et les menus associés le VSPackage.CommandTable element: Represents all of the commands, menu groups, and menus associated with the VSPackage.

Élément extern: fait référence à tous les fichiers .h externe que vous voulez fusionner avec le .vsct fichier.Extern element: References any external .h files you want to merge with the .vsct file.

Élément include: fait référence à tous les fichiers supplémentaires en-tête (.h) pour effectuer une compilation avec votre .vsct fichier.Include element: References any additional header (.h) files you want to compile along with your .vsct file. Un .vsct fichier peut inclure .h fichiers contenant des constantes qui définissent des commandes, les groupes de menus et les menus qui fournit de l’IDE ou un autre package Visual Studio.A .vsct file can include .h files containing constants that define commands, menu groups, and menus that the IDE or another VSPackage provides.

Élément Commands: représente toutes les commandes individuelles qui peuvent être exécutés.Commands element: Represents all of the individual commands that can be executed. Chaque commande possède les quatre éléments enfants suivants :Each command has the following four child elements:

Élément menus: représente tous les menus et barres d’outils dans le VSPackage.Menus element: Represents all of the menus and toolbars in the VSPackage. Les menus sont des conteneurs de groupes de commandes.Menus are containers for groups of commands.

Élément Groups: représente tous les groupes dans le VSPackage.Groups element: Represents all of the groups in the VSPackage. Les groupes sont des ensembles de commandes individuelles.Groups are collections of individual commands.

Élément Buttons: représente tous les boutons de commande et les éléments de menu dans le VSPackage.Buttons element: Represents all of the command buttons and menu items in the VSPackage. Boutons sont des contrôles visuels qui peuvent être associés à des commandes.Buttons are visual controls that can be associated with commands.

Élément bitmaps: représente tous les bitmaps pour tous les boutons dans le VSPackage.Bitmaps element: Represents all of the bitmaps for all of the buttons in the VSPackage. Les images bitmap sont des images apparaissant à côté ou sur les boutons de commande, en fonction du contexte.Bitmaps are pictures that display next to or on the command buttons, depending on the context.

Élément CommandPlacements: indique les emplacements supplémentaires où chaque commande doit être placé dans les menus de votre VSPackage.CommandPlacements element: Indicates additional locations where the individual commands should be sited in the menus of your VSPackage.

Élément VisibilityConstraints: Spécifie si une commande affiche à tous les heures, ou uniquement dans certains contextes, par exemple quand une boîte de dialogue particulière ou une fenêtre s’affiche.VisibilityConstraints element: Specifies whether or not a command displays at all times, or only in certain contexts, such as when a particular dialog box or window is displayed. Menus et commandes qui ont une valeur pour cet élément affiche uniquement lorsque le contexte spécifié est actif.Menus and commands that have a value for this element will display only when the specified context is active. Le comportement par défaut consiste à afficher la commande à tout moment.The default behavior is to display the command at all times.

Élément KeyBindings: Spécifie les combinaisons de touches pour les commandes.KeyBindings element: Specifies any key bindings for the commands. Autrement dit, un ou plusieurs combinaisons de touches qui doivent être activées pour exécuter la commande, telles que Ctrl+S.That is, one or more key combinations that must be pressed to execute the command, such as Ctrl+S.

Élément UsedCommands: informe le Visual StudioVisual Studio environnement que bien que la commande spécifiée est implémentée par un autre code, lorsque le VSPackage actuel est actif, il fournit l’implémentation de la commande.UsedCommands element: Informs the Visual StudioVisual Studio environment that although the specified command is implemented by other code, when the current VSPackage is active, it provides the command implementation.

Élément Symbols: contient les noms de symboles et les ID de GUID pour toutes vos commandes dans le package.Symbols element: Contains the symbol names and GUID IDs for all of your commands in the package.

instructions de conception du fichier .vsct.vsct file design guidelines

À la conception avec succès un .vsct de fichiers, suivez ces instructions.To successfully design a .vsct file, follow these guidelines.

  • Commandes peuvent être placés uniquement dans les groupes, groupes peuvent être placés uniquement dans les menus et menus peuvent être placés uniquement dans les groupes.Commands can be placed only in groups, groups can be placed only in menus, and menus can be placed only in groups. Uniquement les menus sont réellement affichées dans l’IDE, les groupes et les commandes ne sont pas.Only menus are actually displayed in the IDE, groups and commands are not.

  • Sous-menus ne peut pas être directement attribués à un menu, mais doivent être attribués à un groupe, qui est assigné à son tour à un menu.Submenus cannot be directly assigned to a menu, but must be assigned to a group, which is in turn assigned to a menu.

  • Commandes, des sous-menus et des groupes peuvent avoir à un groupe de parentage ou menu à l’aide du champ parent de leur définition directive.Commands, submenus, and groups can be assigned to one parenting group or menu using the parent field of their defining directive.

  • Organisation d’une table de commande uniquement via les champs dans les directives parent a une limitation importante.Organizing a command table solely through the parent fields in the directives has a significant limitation. Les directives qui définissent des objets peuvent prendre l’argument qu’un seul parent.The directives that define objects can take only one parent argument.

  • Réutilisation des commandes, des groupes ou des sous-menus requiert l’utilisation d’une directive de nouveau pour créer une nouvelle instance de l’objet avec son propre GUID:ID paire.Reusing commands, groups, or submenus requires the use of a new directive to create a new instance of the object with its own GUID:ID pair.

  • Chaque GUID:ID paire doit être unique.Each GUID:ID pair must be unique. Réutilisation d’une commande, par exemple, placée dans un menu, une barre d’outils, ou dans un menu contextuel, est gérée par le IOleCommandTarget interface.Reusing a command that has, for example, been placed on a menu, a toolbar, or on a context menu, is handled by the IOleCommandTarget interface.

  • Commandes et sous-menus peuvent également être affectés à plusieurs groupes et les groupes peuvent être affectés à plusieurs menus en utilisant la élément Commands.Commands and submenus can also be assigned to multiple groups, and groups can be assigned to multiple menus using the Commands element.

notes de fichiers .vsct.vsct file notes

Si vous apportez des modifications à un .vsct fichier une fois que vous les compilez et placez dans une DLL satellite native, vous devez exécuter devenv.exe /setup /nosetupvstemplates.If you make any changes to a .vsct file after you both compile it and place it in a native satellite DLL, you should run devenv.exe /setup /nosetupvstemplates. Ainsi, les ressources de VSPackage spécifiées dans le Registre expérimental d’être relus et de la base de données interne qui décrit Visual StudioVisual Studio à reconstruire.Doing so forces the VSPackage resources specified in the experimental registry to be reread and the internal database that describes Visual StudioVisual Studio to be rebuilt.

Pendant le développement, il est possible pour plusieurs projets de VSPackage peuvent être créés et enregistrés dans la ruche expérimentale du Registre pouvant conduire à un encombrement à confusion dans l’IDE.During development, it is possible for multiple VSPackage projects to be created and registered in the experimental registry hive that can lead to confusing clutter in the IDE. Pour résoudre ce problème, vous pouvez réinitialiser la ruche expérimentale pour supprimer toutes les modifications qu’ils peuvent avoir apportées à l’IDE et des VSPackages enregistrés tous les paramètres par défaut.To fix this, you can reset the experimental hive to the default settings to remove all registered VSPackages and any changes they may have made to the IDE. Pour réinitialiser la ruche expérimentale, utilisez l’outil CreateExpInstance.exe fourni avec le SDK Visual Studio.To reset the experimental hive, use the CreateExpInstance.exe tool that comes with the Visual Studio SDK. Vous trouverez à l’adresse :You can find it at:

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

Exécutez l’outil à l’aide de la commande CreateExpInstance /Reset.Run the tool by using the command CreateExpInstance /Reset. N’oubliez pas que cet outil supprime la ruche expérimentale tous des VSPackages enregistrés normalement pas installés avec Visual StudioVisual Studio.Remember that this tool removes from the experimental hive all the registered VSPackages not normally installed with Visual StudioVisual Studio.

Voir aussiSee also

Étendre des menus et commandesExtend menus and commands