Conception de 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éfinition des commandesDefining Commands

Pour définir les nouvelles commandes, inclure un fichier de Visual Studio Command Table (.vsct) 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 Visual Studio Command Table (. Fichiers VSCT).For more information, see Visual Studio Command Table (.Vsct) Files.

Visual Studio fusionne tous les fichiers .vsct qu’il trouve 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 distinctes du VSPackage binaire, Visual Studio n’a pas 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 ajouter 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 les commandes.Visual Studio uses the ProvideMenuResourceAttribute registration attribute to define menu resources and commands. Pour plus d’informations, consultez implémentation.For more information, see 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 des icônes ou texte différente, 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 ajouter 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 correctement acheminé.If the user selects the command, it must be appropriately routed. Routage d’une commande signifie l’envoyer vers le VSPackage correct pour activer ou désactiver, masquer ou afficher et 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.For more information, see Routing Algorithm.

L’environnement de commande de Visual StudioThe Visual Studio Command Environment

Visual Studio peut héberger n’importe quel nombre de packages VS, 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ées à la tâche actuelle.The environment displays only the commands that are appropriate to the current task. Pour plus d’informations, consultez disponibilité et les objets de contexte de sélection.For more information, see 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 pour Visual Studio au moment de l’installation par le biais des entrées de Registre qui référencent des ressources dans les 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 à un fichier de ressources (.cto) des données binaires, qui est généré lorsque vous compilez un fichier Visual Studio Command Table (.vsct).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 ensembles de commandes fusionnées, les menus et barres d’outils sans devoir charger chaque VSPackage installé.This enables Visual Studio to provide merged command sets, menus, and toolbars without having to load every installed VSPackage.

Organisation des commandesCommand Organization

L’environnement positionne les commandes par groupe, la priorité et 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 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 par défaut de commande, le groupe et la sélection élective de la barre d’outils.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 contrôle 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 d’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 ajouter des éléments d’Interface utilisateur.For more information, see How VSPackages Add User Interface Elements.

routage des commandesCommand Routing

Le processus de l’appel et de 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, ce qui est basé 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.For more information, see 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 ; ils incluent des contrôles Microsoft ActiveX, les implémentations de vue fenêtres, objets du 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émentationImplementation Décrit comment implémenter des commandes dans un VSPackage.Describes how to implement commands in a VSPackage.
Disponibilité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 routageRouting Algorithm Décrit comment architecture de routage des commandes Visual Studio permet d’être gérés par les VSPackages différentes commandes.Describes how Visual Studio command routing architecture enables commands to be handled by different VSPackages.
Instructions de sélection électivePlacement Guidelines Indique le positionnement des commandes dans l’environnement Visual Studio.Suggests how to position commands in the Visual Studio environment.
Comment VSPackages ajoute des éléments de l’interface utilisateurHow VSPackages Add User Interface Elements Décrit comment les VSPackages peut optimiser l’architecture de commandes de Visual Studio.Describes how VSPackages can best utilize the Visual Studio command architecture.
Emplacement de commande, de groupe et de 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.
Gestion de VSPackagesManaging VSPackages Décrit comment Visual Studio charge les VSPackages.Describes how Visual Studio loads VSPackages.
Fichiers Visual Studio Command Table (.Vsct)Visual Studio Command Table (.Vsct) Files Fournit des informations sur les fichiers .vsct de basé sur XML, qui sont utilisés pour décrire la disposition et l’apparence des commandes de VSPackages.Provides information about XML-based .vsct files, which are used to describe the layout and appearance of commands in VSPackages.