Compartir a través de


Creación de archivos .vsct

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

  1. Agregue un archivo .vsct al proyecto siguiendo los pasos descritos en Cómo: Crear un archivo .vsct.

  2. 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">
    
    
  3. En el CommandTable elemento , agregue un Commands 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, el Commands elemento debe tener su Package atributo establecido en el nombre del paquete.

    Después del Commands elemento , agregue un Symbols 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

  1. En la parte superior del CommandTable elemento, agregue un Extern elemento para cada archivo externo al que se va a hacer referencia y establezca el href 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.

  2. Si el paquete llama a cualquier comando definido por Visual Studio o por otros paquetes, agregue un UsedCommands elemento después del Commands elemento . Rellene este elemento con un elemento UsedCommand para cada comando al que llame que no forma parte del paquete. Establezca los guid atributos y id de los UsedCommand 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

  1. En el Symbols elemento , agregue tres elementos GuidSymbol . Cada GuidSymbol elemento tiene un name atributo y un value atributo . Establezca el name atributo para que refleje el propósito del elemento. El value 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 segundo GuidSymbol elemento representa el conjunto de comandos y contendrá todos los símbolos que definen los menús, grupos y comandos. El tercer GuidSymbol 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 tercer GuidSymbol elemento.

  2. 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 el name atributo en el nombre que usará para hacer referencia al menú, grupo o comando correspondiente y, a continuación, establezca el value elemento en un número hexadecimal que representará su identificador de comando. Ningún elemento IDSymbol que tenga el mismo elemento primario puede tener el mismo valor.

  3. Si alguno de los elementos de la interfaz de usuario requiere iconos, agregue un IDSymbol elemento para cada icono al elemento que representa el GuidSymbol 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 Menuelemento , Groupy 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

  1. Si va a definir nuevos menús, submenús, menús contextuales o barras de herramientas, agregue un Menus elemento al Commands elemento . A continuación, para cada menú que se va a crear, agregue un elemento Menu al Menus elemento .

    Establezca los guid atributos y id del Menu elemento y, a continuación, establezca el type atributo en el tipo de menú que desee. También puede establecer el priority 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.

  2. 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 y id de cada Group elemento y, a continuación, establezca el priority 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.

  3. Si va a agregar nuevos comandos al IDE, agregue un Buttons elemento al Commands elemento . A continuación, para cada comando, agregue un elemento Button al Buttons elemento .

    1. Establezca los guid atributos y id de cada Button elemento y, a continuación, establezca el type atributo en el tipo de botón que desee. También puede establecer el priority 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.

    2. En el Button elemento , agregue un elemento Strings que contenga un elemento ButtonText y un elemento CommandName . El ButtonText 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. El CommandName elemento proporciona el nombre del comando que se va a usar en el cuadro de comandos.

    3. Si el comando tendrá un icono, cree un elemento Icon en el Button elemento y establezca sus guid atributos y id en el elemento para el Bitmap icono.

      Nota:

      Los botones de la barra de herramientas deben tener iconos.

    Para obtener más información, vea MenuCommands vs. OleMenuCommands.

  4. Si alguno de los comandos requiere iconos, agregue un elemento Bitmaps al Commands elemento . A continuación, para cada icono, agregue un elemento Bitmap al Bitmaps 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

  1. Para los elementos primarios típicos, cree un Parent elemento en cada Menuelemento , Groupy Command 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.

    1. Establezca el guid atributo en el nombre del elemento que define el conjunto de GuidSymbol 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.

    2. Establezca el id atributo para que coincida con el id 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

  1. Después del elemento Commands, agregue un elemento CommandPlacements.

  2. En el CommandPlacements elemento , agregue un CommandPlacement elemento para cada menú, grupo o comando que se va a colocar.

    Cada CommandPlacement elemento o Parent 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 un CommandPlacement elemento para cada ubicación.

  3. Establezca los guid atributos y id de cada CommandPlacement elemento en el menú o grupo de hospedaje, como lo haría para un Parent elemento. También puede establecer el priority 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

  1. 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.

    1. Después del elemento Commands, agregue un elemento VisibilityConstraints.

    2. Para que cada elemento de la interfaz de usuario se restrinja, agregue un elemento VisibilityItem .

    3. Para cada VisibilityItem elemento, establezca los guid atributos y id en el menú, el grupo o el comando y, a continuación, establezca el context atributo en el contexto de la interfaz de usuario que desee, tal como se define en la UIContextGuids80 clase .

  2. 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 .

  3. 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 .

  4. 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 .

  5. 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.

  6. 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 .

  7. 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 al Combos elemento un Combo elemento para cada cuadro combinado que se va a agregar. Combo los elementos tienen los mismos atributos y elementos secundarios que Button los elementos y también tienen DefaultWidth atributos y idCommandList . El DefaultWidth atributo establece el ancho en píxeles y el idCommandList 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 su type atributo MenuController en o MenuControllerLatched, según el comportamiento que desee. Para rellenar un controlador de menú, establézcalo como primario de un Group elemento. El controlador de menú mostrará todos los elementos secundarios de ese grupo en su lista desplegable.