Conception de Table de commande XML (. Fichiers VSCT)Designing XML Command Table (.Vsct) Files

Un fichier de table (.vsct) de commande XML 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. 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 la commande.Command items include buttons, combo boxes, menus, toolbars, and groups of command items. Cette rubrique décrit les fichiers de la table commandes XML, comment ils affectent les menus et éléments de commande et comment les créer.This topic 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

les fichiers .vsct sont organisés autour des commandes, des menus et des groupes de commandes..vsct files are organized around commands, menus, and command groups. 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 de commande et les bitmaps.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 en exécutant la Visual StudioVisual Studio modèle de Package, le modèle génère un fichier .vsct avec les éléments nécessaires pour une commande de menu, une fenêtre outil ou un éditeur personnalisé, selon 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. Ce fichier .vsct peut ensuite être modifié pour satisfaire les 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 de modification d’un fichier .vsct, consultez les exemples de étendant les Menus et commandes.For examples of how to modify a .vsct file, see the examples in Extending Menus and Commands.

Pour créer un fichier .vsct vierge, consultez Comment : créer un. Fichier VSCT.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

Alors que la signification des balises XML dans un fichier .vsct est les mêmes que celles figurant dans le présent déconseillée le format de fichier .ctc, leur implémentation est légèrement différente.While the meaning behind the XML tags in a .vsct file are the same as those in the now deprecated .ctc file format, their implementation is a bit different.

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

  • Lors de la prise en charge des fichiers .vsct le / inclure instruction, comme les fichiers .ctc, 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, / inclure permet de bénéficier de tous les des informations, mais < Importer > affiche uniquement les noms.The difference is, /include brings in all of the information, but <import> brings in only the names.

  • Bien que .ctc fichiers nécessitent un fichier d’en-tête dans lequel vous définissez les directives de préprocesseur, un n’est pas obligatoire pour les fichiers .vsct.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 du fichier .vsct.Instead, place your directives in the symbol table, located in the <Symbol> elements, located at the bottom of the .vsct file.

  • fonctionnalité des fichiers .vsct un <Annotation > balise, qui vous permet d’incorporer toutes les 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.

  • Les 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 élément indicateur de commande.For more information about command flags, see the Command Flag Element.

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

  • Ne pas valider 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.

  • Parent est facultatif.Parent is optional. Si omis, la valeur « Groupe inconnu » est utilisée.If omitted, the value "Group Unknown" is used.

  • L’argument de l’icône est facultatif.The Icon argument is optional.

  • La section bitmap--identique à un .ctc de fichiers, à ceci près que vous pouvez maintenant spécifier un nom de fichier via href qui est extraites par le compilateur vsct.exe au moment de la compilation.The bitmap section -- The same as 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’ID de ressource bitmap ancien peut être utilisé et fonctionne toujours de la même que dans les fichiers .ctc.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 les 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 d’abord les ressources locales pour le fichier, puis sur tous les partages réseau et les ressources définies par le commutateur /I.The compiler will first search for local resources for the file, then on any net shares, and any resources defined by the /I switch.

  • KeyBinding--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 identiques.If you do specify one, the compiler will assume that the editor and the emulator are the same.

  • Keychord--a été supprimé.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 fichiers .ctc et .vsct.The new compiler, vsct.exe, compiles both .ctc and .vsct files. L’ancien compilateur ctc.exe, toutefois, sera reconnaît ni compiler des fichiers .vsct.The old ctc.exe compiler, however, will neither recognize nor compile .vsct files.

    Vous pouvez utiliser le compilateur vsct.exe pour convertir un fichier .cto existant dans un fichier .vsct.You can use the vsct.exe compiler to convert an existing .cto file into an .vsct file. Pour plus d’informations, consultez Comment : créer un. Fichier VSCT d’un existant. Fichier CTO.For more information about this, 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 de CommandTable : représente l’ensemble de commandes, des groupes de menus et des menus associés le VSPackage.CommandTable Element — Represents all of the commands, menu groups, and menus associated with the VSPackage.

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

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

Commandes d’élément , 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 éléments quatre enfants suivants :Each command has the following four child elements:

Élément de 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 pour les groupes de commandes.Menus are containers for groups of commands.

Élément groupes : 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.

Boutons d’élément : représente tous les boutons de commande et é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 de 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 affichées à 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 de CommandPlacements — indique les autres emplacements 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 de VisibilityConstraints — spécifie ou non une commande affiche à toutes les heures, ou uniquement dans certains contextes, tels que lorsqu’une boîte de dialogue particulière ou d’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 de 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 de la commande à tout moment.The default behavior is to display the command at all times.

Élément de combinaisons de touches : Spécifie les combinaisons de touches pour les commandes.KeyBindings Element — Specifies any key bindings for the commands. Autrement dit, une ou plusieurs combinaisons de touches sur lesquelles appuyer 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 de UsedCommands — Informs le Visual StudioVisual Studio environnement que bien que la commande spécifiée est implémentée par un autre code, quand 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.

Symbols Element : Contient les noms de symboles et d’un ID de GUID pour toutes les commandes dans le package.Symbols Element — Contains the symbol names and GUID IDs for all of your commands in the package.

. Règles de conception de fichier VSCT.Vsct File Design Guidelines

Pour concevoir un fichier .vsct, suivez ces instructions.To successfully design a .vsct file, follow these guidelines.

  • Commandes peuvent être placés uniquement dans les groupes, les 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 affectés à un groupe, qui est ensuite assigné à 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.

  • Groupes, des commandes et des sous-menus attribuable à un groupe de parenté ou un 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 commandes uniquement via les champs parent dans les directives 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 des sous-menus peuvent également être affectés à plusieurs groupes et les groupes peuvent être affectés à plusieurs menus à l’aide de 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 sur le fichier VSCT.Vsct File Notes

Si vous apportez des modifications à un fichier .vsct une fois que vous le compiler et placez dans une DLL satellite de 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. Cette opération force les ressources VSPackage spécifiés dans le Registre expérimental d’être relus et la base de données interne qui décrit Visual StudioVisual Studio à reconstruire.Doing this 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 VSPackage doit être créé et enregistré dans la ruche du Registre expérimentale pouvant conduire à confusion l’encombrement 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 les paramètres par défaut pour supprimer tous des VSPackages et toutes les modifications qu’ils ont peuvent apportées à l’IDE.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 de CreateExpInstance.exe qui est fourni avec le Kit de développement logiciel Visual Studio.To reset the experimental hive, use the CreateExpInstance.exe tool that comes with the Visual Studio SDK. Vous trouverez à l’adresseYou 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 ligne de commande CreateExpInstance /Reset.Run the tool by using the command line CreateExpInstance /Reset. N’oubliez pas de cet outil supprime de la ruche expérimentale tous les packages enregistrés VS pas normalement installées 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

Extension des menus et des commandesExtending Menus and Commands