Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este documento se muestra cómo crear un archivo .vsct para agregar elementos de menú, barras de herramientas y otros elementos de interfaz de usuario (UI) al entorno de desarrollo integrado (IDE) de Visual Studio. Siga estos pasos al agregar elementos de interfaz de usuario a un paquete de Visual Studio (VSPackage) que aún no tenga un archivo .vsct .
Para los nuevos proyectos, se recomienda usar la plantilla de paquete de Visual Studio porque genera un archivo .vsct que, dependiendo de las selecciones, ya tiene los elementos necesarios para un comando de menú, una ventana de herramientas o un editor personalizado. Puede modificar este archivo .vsct para cumplir los requisitos de VSPackage. Para obtener más información sobre cómo modificar un archivo .vsct , vea los ejemplos de menús y comandos extender.
Creación del archivo
Cree un archivo .vsct en estas fases: cree la estructura para archivos y recursos, declare los elementos de la interfaz de usuario, coloque los elementos de la interfaz de usuario en el IDE y agregue cualquier comportamiento especializado.
Estructura de archivos
La estructura básica de un archivo .vsct es un elemento raíz CommandTable que contiene un elemento Commands y un elemento Symbols .
Para crear la estructura de archivos
Agregue un archivo .vsct al proyecto siguiendo los pasos descritos en Cómo: Crear un archivo .vsct.
Agregue los espacios de nombres necesarios al
CommandTable
elemento, como se muestra en el ejemplo siguiente:<CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema">
En el
CommandTable
elemento , agregue unCommands
elemento para hospedar todos los menús personalizados, barras de herramientas, grupos de comandos y comandos. Para que los elementos de la interfaz de usuario personalizados puedan cargarse, elCommands
elemento debe tener suPackage
atributo establecido en el nombre del paquete.Después del
Commands
elemento , agregue unSymbols
elemento para definir los GUID del paquete y los nombres y identificadores de comando de los elementos de la interfaz de usuario.
Incluir recursos de Visual Studio
Use el elemento Extern para acceder a los archivos que definen comandos de Visual Studio y los menús necesarios para colocar los elementos de la interfaz de usuario en el IDE. Si usará comandos definidos fuera del paquete, use el elemento UsedCommands para informar a Visual Studio.
Para incluir recursos de Visual Studio
En la parte superior del
CommandTable
elemento, agregue unExtern
elemento para cada archivo externo al que se va a hacer referencia y establezca elhref
atributo en el nombre del archivo. Puede hacer referencia a los siguientes archivos de encabezado para acceder a los recursos de Visual Studio:Stdidcmd.h: define los identificadores para todos los comandos expuestos por Visual Studio.
Vsshlids.h: contiene identificadores de comando para los menús de Visual Studio.
Si el paquete llama a cualquier comando definido por Visual Studio o por otros paquetes, agregue un
UsedCommands
elemento después delCommands
elemento . Rellene este elemento con un elemento UsedCommand para cada comando al que llame que no forma parte del paquete. Establezca losguid
atributos yid
de losUsedCommand
elementos en los valores GUID e ID de los comandos que se van a llamar.Para obtener más información sobre cómo buscar los GUID e identificadores de los comandos de Visual Studio, consulte GUID e identificadores de comandos de Visual Studio. Para llamar a comandos de otros paquetes, use el GUID y el identificador del comando tal como se define en el archivo .vsct para esos paquetes.
Declarar elementos de la interfaz de usuario
Declare todos los nuevos elementos de la interfaz de usuario en la Symbols
sección del archivo .vsct .
Para declarar elementos de la interfaz de usuario
En el
Symbols
elemento , agregue tres elementos GuidSymbol . CadaGuidSymbol
elemento tiene unname
atributo y unvalue
atributo . Establezca elname
atributo para que refleje el propósito del elemento. Elvalue
atributo toma un GUID. (Para generar un GUID, en Menú Herramientas , seleccione Crear GUID y, a continuación, seleccione Formato del Registro).El primer
GuidSymbol
elemento representa el paquete y normalmente no tiene elementos secundarios. El segundoGuidSymbol
elemento representa el conjunto de comandos y contendrá todos los símbolos que definen los menús, grupos y comandos. El tercerGuidSymbol
elemento representa el almacén de imágenes y contiene símbolos para todos los iconos de los comandos. Si no tiene ningún comando que use iconos, puede omitir el tercerGuidSymbol
elemento.En el elemento que representa el
GuidSymbol
conjunto de comandos, agregue uno o varios elementos IDSymbol . Cada uno de ellos representa un menú, una barra de herramientas, un grupo o un comando que va a agregar a la interfaz de usuario.Para cada
IDSymbol
elemento, establezca elname
atributo en el nombre que usará para hacer referencia al menú, grupo o comando correspondiente y, a continuación, establezca elvalue
elemento en un número hexadecimal que representará su identificador de comando. Ningún elementoIDSymbol
que tenga el mismo elemento primario puede tener el mismo valor.Si alguno de los elementos de la interfaz de usuario requiere iconos, agregue un
IDSymbol
elemento para cada icono al elemento que representa elGuidSymbol
almacén de imágenes.
Colocar elementos de interfaz de usuario en el IDE
Los elementos Menus, Groups y Buttons contienen las definiciones de todos los menús, grupos y comandos definidos en el paquete. Coloque estos menús, grupos y comandos en el IDE mediante un elemento Primario , que forma parte de la definición del elemento de la interfaz de usuario o mediante un elemento CommandPlacement definido en otro lugar.
Cada Menu
elemento , Group
y Button
tiene un guid
atributo y un id
atributo . Establezca siempre el guid
atributo para que coincida con el nombre del elemento que representa el GuidSymbol
conjunto de comandos y establezca el id
atributo en el nombre del IDSymbol
elemento que representa el menú, el grupo o el comando de la Symbols
sección.
Para definir elementos de la interfaz de usuario
Si va a definir nuevos menús, submenús, menús contextuales o barras de herramientas, agregue un
Menus
elemento alCommands
elemento . A continuación, para cada menú que se va a crear, agregue un elemento Menu alMenus
elemento .Establezca los
guid
atributos yid
delMenu
elemento y, a continuación, establezca eltype
atributo en el tipo de menú que desee. También puede establecer elpriority
atributo para establecer la posición relativa del menú en el grupo primario.Nota:
El
priority
atributo no se aplica a las barras de herramientas y los menús contextuales.Todos los comandos del IDE de Visual Studio deben hospedarse en grupos de comandos, que son los elementos secundarios directos de menús y barras de herramientas. Si va a agregar nuevos menús o barras de herramientas al IDE, estos deben contener nuevos grupos de comandos. También puede agregar grupos de comandos a menús y barras de herramientas existentes para que pueda agrupar visualmente los comandos.
Al agregar nuevos grupos de comandos, primero debe crear un
Groups
elemento y, a continuación, agregarlo a un elemento Group para cada grupo de comandos.Establezca los
guid
atributos yid
de cadaGroup
elemento y, a continuación, establezca elpriority
atributo para establecer la posición relativa del grupo en el menú primario. Para obtener más información, vea Crear grupos reutilizables de botones.Si va a agregar nuevos comandos al IDE, agregue un
Buttons
elemento alCommands
elemento . A continuación, para cada comando, agregue un elemento Button alButtons
elemento .Establezca los
guid
atributos yid
de cadaButton
elemento y, a continuación, establezca eltype
atributo en el tipo de botón que desee. También puede establecer elpriority
atributo para establecer la posición relativa del comando en el grupo primario.Nota:
Se usa
type="button"
para comandos y botones de menú estándar en las barras de herramientas.En el
Button
elemento , agregue un elemento Strings que contenga un elemento ButtonText y un elemento CommandName . ElButtonText
elemento proporciona la etiqueta de texto para un elemento de menú o la información sobre herramientas de un botón de barra de herramientas. ElCommandName
elemento proporciona el nombre del comando que se va a usar en el cuadro de comandos.Si el comando tendrá un icono, cree un elemento Icon en el
Button
elemento y establezca susguid
atributos yid
en el elemento para elBitmap
icono.Nota:
Los botones de la barra de herramientas deben tener iconos.
Para obtener más información, vea MenuCommands vs. OleMenuCommands.
Si alguno de los comandos requiere iconos, agregue un elemento Bitmaps al
Commands
elemento . A continuación, para cada icono, agregue un elemento Bitmap alBitmaps
elemento . Aquí es donde se especifica la ubicación del recurso de mapa de bits. Para obtener más información, vea Agregar iconos a comandos de menú.Puede confiar en la estructura primaria para colocar correctamente la mayoría de los menús, grupos y comandos. Para conjuntos de comandos muy grandes o cuando un menú, grupo o comando debe aparecer en varios lugares, se recomienda especificar la ubicación del comando.
Para confiar en la creación de elementos primarios para colocar elementos de interfaz de usuario en el IDE
Para los elementos primarios típicos, cree un
Parent
elemento en cadaMenu
elemento ,Group
yCommand
que se define en el paquete.El destino del
Parent
elemento es el menú o grupo que contendrá el menú, el grupo o el comando.Establezca el
guid
atributo en el nombre del elemento que define el conjunto deGuidSymbol
comandos. Si el elemento de destino no forma parte del paquete, use el guid para ese conjunto de comandos, tal como se define en el archivo .vsct correspondiente.Establezca el
id
atributo para que coincida con elid
atributo del menú o grupo de destino. Para obtener una lista de los menús y grupos expuestos por Visual Studio, consulte GUID e identificadores de menús o GUID de Visual Studio e identificadores de barras de herramientas de Visual Studio.
Si tiene un gran número de elementos de interfaz de usuario para colocar en el IDE o si tiene elementos que deben aparecer en varios lugares, defina sus ubicaciones en el elemento CommandPlacements , como se muestra en los pasos siguientes.
Para usar la colocación de comandos para colocar elementos de la interfaz de usuario en el IDE
Después del elemento
Commands
, agregue un elementoCommandPlacements
.En el
CommandPlacements
elemento , agregue unCommandPlacement
elemento para cada menú, grupo o comando que se va a colocar.Cada
CommandPlacement
elemento oParent
elemento coloca un menú, grupo o comando en una ubicación del IDE. Un elemento de interfaz de usuario solo puede tener un elemento primario, pero puede tener varias ubicaciones de comandos. Para colocar un elemento de interfaz de usuario en varias ubicaciones, agregue unCommandPlacement
elemento para cada ubicación.Establezca los
guid
atributos yid
de cadaCommandPlacement
elemento en el menú o grupo de hospedaje, como lo haría para unParent
elemento. También puede establecer elpriority
atributo para establecer la posición relativa del elemento de la interfaz de usuario.Puede mezclar la selección de ubicación mediante la colocación de elementos primarios y comandos. Sin embargo, para conjuntos de comandos muy grandes, se recomienda usar solo la selección de ubicación de comandos.
Agregar comportamientos especializados
Puede usar el elemento CommandFlag para modificar el comportamiento de los menús y comandos, por ejemplo, para cambiar su apariencia y visibilidad. También puede afectar cuando un comando está visible mediante el elemento VisibilityConstraints o agregar métodos abreviados de teclado mediante el elemento KeyBindings. Ciertos tipos de menús y comandos ya tienen comportamientos especializados integrados.
Para agregar comportamientos especializados
Para que un elemento de interfaz de usuario solo sea visible en determinados contextos de interfaz de usuario, por ejemplo, cuando se carga una solución, use restricciones de visibilidad.
Después del elemento
Commands
, agregue un elementoVisibilityConstraints
.Para que cada elemento de la interfaz de usuario se restrinja, agregue un elemento VisibilityItem .
Para cada
VisibilityItem
elemento, establezca losguid
atributos yid
en el menú, el grupo o el comando y, a continuación, establezca elcontext
atributo en el contexto de la interfaz de usuario que desee, tal como se define en la UIContextGuids80 clase .
Para establecer la visibilidad o disponibilidad de un elemento de interfaz de usuario en el código, use una o varias de las marcas de comandos siguientes:
DefaultDisabled
DefaultInvisible
DynamicItemStart
DynamicVisibility
NoShowOnMenuController
NotInTBList
Para obtener más información, vea el elemento CommandFlag .
Para cambiar cómo aparece un elemento o cambiar su apariencia dinámicamente, use una o varias de las marcas de comandos siguientes:
AlwaysCreate
CommandWellOnly
DefaultDocked
DontCache
DynamicItemStart
FixMenuController
IconAndText
Pict
StretchHorizontally
TextMenuUseButton
TextChanges
TextOnly
Para obtener más información, vea el elemento CommandFlag .
Para cambiar cómo reacciona un elemento cuando recibe comandos, use una o varias de las marcas de comandos siguientes:
AllowParams
CaseSensitive
CommandWellOnly
FilterKeys
NoAutoComplete
NoButtonCustomize
NoKeyCustomize
NoToolbarClose
PostExec
RouteToDocs
TextIsAnchorCommand
Para obtener más información, vea el elemento CommandFlag .
Para adjuntar un método abreviado de teclado dependiente del menú a un menú o un elemento de un menú, agregue un carácter y comercial (&) en el
ButtonText
elemento del menú o elemento de menú. El carácter que sigue a la y comercial es el método abreviado de teclado activo cuando el menú primario está abierto.Para adjuntar un método abreviado de teclado independiente del menú a un comando, use el elemento KeyBindings . Para obtener más información, consulte el elemento KeyBinding .
Para localizar el texto del menú, use el
LocCanonicalName
elemento . Para obtener más información, vea el elemento Strings .Algunos tipos de menús y botones incluyen comportamientos especializados. En la lista siguiente se describen algunos tipos de botón y menú especializados. Para otros tipos, vea las
types
descripciones de atributos en los elementos Menu, Button y Combo .Cuadro combinado: un cuadro combinado es una lista desplegable que se puede usar en una barra de herramientas. Para agregar cuadros combinados a la interfaz de usuario, cree un elemento Combos en el
Commands
elemento . A continuación, agregue alCombos
elemento unCombo
elemento para cada cuadro combinado que se va a agregar.Combo
los elementos tienen los mismos atributos y elementos secundarios queButton
los elementos y también tienenDefaultWidth
atributos yidCommandList
. ElDefaultWidth
atributo establece el ancho en píxeles y elidCommandList
atributo apunta a un identificador de comando que se usa para rellenar el cuadro combinado.Controlador de menú: un controlador de menú es un botón que tiene una flecha junto a él. Al hacer clic en la flecha, se abre una lista. Para agregar un controlador de menú a la interfaz de usuario, cree un
Menu
elemento y establezca sutype
atributoMenuController
en oMenuControllerLatched
, según el comportamiento que desee. Para rellenar un controlador de menú, establézcalo como primario de unGroup
elemento. El controlador de menú mostrará todos los elementos secundarios de ese grupo en su lista desplegable.