Conception de la commandeCommand design

Lorsque vous ajoutez une commande à un VSPackage, vous devez spécifier où il doit apparaître, lorsqu’il est disponible, et comment il doit être gérée.When you add a command to a VSPackage, you must specify where it is to appear, when it is available, and how it is to be handled.

Définir des commandesDefine commands

Pour définir de nouvelles commandes, inclure une table de commandes de Visual Studio (.vsct) le fichier dans votre projet VSPackage.To define new commands, include a Visual Studio command table (.vsct) file in your VSPackage project. Si vous avez créé un VSPackage à l’aide du modèle de package Visual Studio, le projet inclut un de ces fichiers.If you have created a VSPackage by using the Visual Studio package template, the project includes one of these files. Pour plus d’informations, consultez fichiers Visual Studio command table (.vsct).For more information, see Visual Studio command table (.vsct) files.

Visual Studio fusionne tous les .vsct fichiers recherche pour qu’il puisse afficher les commandes.Visual Studio merges all the .vsct files it finds so that it can display the commands. Étant donné que ces fichiers sont distincts du VSPackage binaire, Visual Studio n’a pas de charger le package pour trouver les commandes.Because these files are distinct from the VSPackage binary, Visual Studio does not have to load the package to find the commands. Pour plus d’informations, consultez comment VSPackages ajoute des éléments d’interface utilisateur.For more information, see How VSPackages add user interface elements.

Visual Studio utilise le ProvideMenuResourceAttribute attribut d’inscription pour définir des ressources de menu et commandes.Visual Studio uses the ProvideMenuResourceAttribute registration attribute to define menu resources and commands. Pour plus d’informations, consultez implémentation de la commande.For more information, see Command implementation.

Commandes peuvent être modifiés au moment de l’exécution dans un nombre de différentes façons.Commands can be changed at run time in a number of different ways. Ils peuvent être affichées ou masquées, activées ou désactivées.They can be displayed or hidden, enabled or disabled. Ils peuvent afficher un texte différent ou icônes ou contiennent des valeurs différentes.They can display different text or icons, or contain different values. Un grand nombre de fonctions peut être effectué avant que Visual Studio charge votre VSPackage.A great deal of customization may be performed before Visual Studio loads your VSPackage. Pour plus d’informations, consultez comment VSPackages ajoute des éléments d’interface utilisateur.For more information, see How VSPackages add user interface elements.

Gestionnaires de commandesCommand handlers

Lorsque vous créez une commande, vous devez fournir un gestionnaire d’événements pour exécuter la commande.When you create a command, you must provide an event handler to execute the command. Si l’utilisateur sélectionne la commande, il doit être routé de manière appropriée.If the user selects the command, it must be appropriately routed. Routage d’une commande signifie son envoi au VSPackage correct pour activer ou désactiver, masquer ou afficher et l’exécuter si l’utilisateur choisit de le faire.Routing a command means sending it to the correct VSPackage to enable or disable it, hide or display it, and execute it if the user chooses to do so. Pour plus d’informations, consultez algorithme de routage de commande.For more information, see Command routing algorithm.

Environnement de commande de Visual StudioVisual Studio command environment

Visual Studio peut héberger un nombre quelconque de VSPackages, et chacun peut contribuer à son propre jeu de commandes.Visual Studio can host any number of VSPackages, and each can contribute its own command set. L’environnement affiche uniquement les commandes qui sont appropriés à la tâche actuelle.The environment displays only the commands that are appropriate to the current task. Pour plus d’informations, consultez commande disponibilité et les objets de contexte de sélection.For more information, see Command availability and Selection context objects.

Un VSPackage qui définit les nouvelles commandes, menus, barres d’outils, des menus contextuels fournit ses informations de commande à Visual Studio au moment de l’installation par le biais des entrées de Registre qui référencent des ressources dans des assemblys natifs ou managés.A VSPackage that defines new commands, menus, toolbars, or shortcut menus provides its command information to the Visual Studio at installation time through registry entries that reference resources in native or managed assemblies. Chaque ressource fait ensuite référence à une ressource de données binaires (.cto) fichier, qui est généré lorsque vous compilez une table de commandes de Visual Studio (.vsct) fichier.Each resource then references a binary data resource (.cto) file, which is produced when you compile a Visual Studio command table (.vsct) file. Cela permet à Visual Studio fournir des jeux de commandes fusionnées, les menus et barres d’outils sans avoir à charger chaque VSPackage installé.This enables Visual Studio to provide merged command sets, menus, and toolbars without having to load every installed VSPackage.

Organisation de commandeCommand organization

L’environnement positionne les commandes par groupe, de priorité et de menu.The environment positions commands by group, priority, and menu.

  • Les groupes sont des collections logiques de commandes associées, par exemple, le couper, copie, et coller groupe de commandes.Groups are logical collections of related commands, for example, the Cut, Copy, and Paste command group. Les groupes sont les commandes qui s’affichent dans les menus.Groups are the commands that appear on menus.

  • Priorité détermine l’ordre dans lequel les commandes individuelles dans un groupe apparaissent dans le menu.Priority determines the order in which individual commands in a group appear on the menu.

  • Menus agissent comme des conteneurs pour les groupes.Menus act as containers for groups.

    L’environnement prédéfinit certaines commandes, les groupes et les menus.The environment predefines some commands, groups, and menus. Pour plus d’informations, consultez placement de commande, le groupe et barre d’outils par défaut.For more information, see Default command, group, and toolbar placement.

    Une commande peut être attribuée à un groupe principal.A command can be assigned to a primary group. Le groupe principal détermine la position de la commande dans la structure du menu principal et dans le personnaliser boîte de dialogue.The primary group controls the position of the command in the main menu structure and in the Customize dialog box. Une commande peut apparaître dans plusieurs groupes ; par exemple, une commande peut être sur une barre d’outils dans le menu principal et dans un menu contextuel.A command can appear in multiple groups; for example, a command can be on the main menu, on a shortcut menu, and on a toolbar. Pour plus d’informations, consultez comment VSPackages ajoute des éléments d’interface utilisateur.For more information, see How VSPackages add user interface elements.

Routage des commandesCommand routing

Le processus d’appel et le routage des commandes pour les VSPackages diffère du processus d’appel de méthodes sur des instances d’objet.The process of invoking and routing commands for VSPackages differs from the process of calling methods on object instances.

L’environnement achemine les commandes séquentiellement dans le contexte de commande (local) plus profond, qui est basée sur la sélection actuelle, pour le contexte le plus extérieur (global).The environment routes commands sequentially from the innermost (local) command context, which is based on current selection, to the outermost (global) context. Le premier contexte qui est en mesure d’exécuter la commande est celle qui prend en charge.The first context that is able to execute the command is the one that handles it. Pour plus d’informations, consultez algorithme de routage de commande.For more information, see Command routing algorithm.

Dans la plupart des cas, l’environnement gère les commandes à l’aide de la IOleCommandTarget interface.In most instances, the environment handles commands by using the IOleCommandTarget interface. Étant donné que le schéma de routage de commande permet de nombreux objets différents gérer les commandes, IOleCommandTarget peut être implémentée par n’importe quel nombre d’objets ; ceux-ci incluent des contrôles Microsoft ActiveX, les implémentations de vue de fenêtre, les objets de document, hiérarchies de projet, et les objets VSPackage eux-mêmes (pour les commandes globales).Because the command routing scheme enables many different objects to handle commands, IOleCommandTarget can be implemented by any number of objects; these include Microsoft ActiveX controls, window view implementations, document objects, project hierarchies, and VSPackage objects themselves (for global commands). Dans certains cas particuliers, par exemple, routage des commandes dans une hiérarchie, le IVsHierarchy interface doit être implémentée.In some specialized cases, for example, routing commands in a hierarchy, the IVsHierarchy interface must be implemented.

TitreTitle DescriptionDescription
Implémentation de la commandeCommand implementation Décrit comment implémenter des commandes dans un VSPackage.Describes how to implement commands in a VSPackage.
Disponibilité de la commandeCommand availability Décrit comment le contexte de Visual Studio détermine les commandes qui sont disponibles.Describes how Visual Studio context determines which commands are available.
Algorithme de routage de commandeCommand routing algorithm Décrit comment architecture de routage de commande de Visual Studio permet les commandes pour être gérée par les VSPackages différents.Describes how Visual Studio command routing architecture enables commands to be handled by different VSPackages.
Instructions de positionnement de commandeCommand placement guidelines Suggère comment positionner les commandes dans l’environnement Visual Studio.Suggests how to position commands in the Visual Studio environment.
Comment VSPackages ajoute des éléments d’interface utilisateurHow VSPackages add user interface elements Décrit comment les VSPackages peuvent mieux exploiter l’architecture de commande de Visual Studio.Describes how VSPackages can best utilize the Visual Studio command architecture.
Placement de commande, le groupe et barre d’outils par défautDefault command, group, and toolbar placement Décrit comment les VSPackages peuvent mieux utiliser les commandes qui sont inclus dans Visual Studio.Describes how VSPackages can best use the commands that are included in Visual Studio.
Gérer les packages VSManage VSPackages Décrit comment Visual Studio charge VSPackages.Describes how Visual Studio loads VSPackages.
Visual Studio fichiers command table (.vsct)Visual Studio command table (.vsct) files Fournit des informations sur basé sur XML .vsct fichiers, qui sont utilisés pour décrire la disposition et l’apparence des commandes dans VSPackages.Provides information about XML-based .vsct files, which are used to describe the layout and appearance of commands in VSPackages.