Arquivos .vsct do autor
Este documento mostra como criar um arquivo .vsct para adicionar itens de menu, barras de ferramentas e outros elementos de interface do usuário (UI) para o ambiente de desenvolvimento integrado (IDE) do Visual Studio. Use essas etapas quando você adiciona elementos de interface do usuário a um pacote do Visual Studio (VSPackage) que ainda não tem um arquivo .vsct .
Para novos projetos, recomendamos que você use o modelo de pacote do Visual Studio porque ele gera um arquivo .vsct que, dependendo de suas seleções, já tem os elementos necessários para um comando de menu, uma janela de ferramenta ou um editor personalizado. Você pode modificar esse arquivo .vsct para atender aos requisitos do VSPackage. Para obter mais informações sobre como modificar um arquivo .vsct , consulte os exemplos em Estender menus e comandos.
Criar o arquivo
Crie um arquivo .vsct nestas fases: crie a estrutura para arquivos e recursos, declare os elementos da interface do usuário, coloque os elementos da interface do usuário no IDE e adicione quaisquer comportamentos especializados.
Estrutura do arquivo
A estrutura básica de um arquivo .vsct é um elemento raiz CommandTable que contém um elemento Commands e um elemento Symbols.
Para criar a estrutura de arquivos
Adicione um arquivo .vsct ao seu projeto seguindo as etapas em Como: Criar um arquivo .vsct.
Adicione os namespaces necessários ao
CommandTable
elemento , conforme mostrado no exemplo a seguir:<CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema">
CommandTable
No elemento , adicione umCommands
elemento para hospedar todos os menus, barras de ferramentas, grupos de comandos e comandos personalizados. Para que os elementos personalizados da interface do usuário possam ser carregados, o elemento deve ter seuPackage
atributo definido como oCommands
nome do pacote.Após o elemento , adicione um
Symbols
elemento para definir os GUIDs para oCommands
pacote e os nomes e IDs de comando para os elementos da interface do usuário.
Incluir recursos do Visual Studio
Use o elemento Extern para acessar os arquivos que definem os comandos do Visual Studio e os menus necessários para colocar os elementos da interface do usuário no IDE. Se você usar comandos definidos fora do pacote, use o elemento UsedCommands para informar o Visual Studio.
Para incluir recursos do Visual Studio
Na parte superior do
CommandTable
elemento, adicione umExtern
elemento para cada arquivo externo a ser referenciado e defina o atributo como ohref
nome do arquivo. Você pode fazer referência aos seguintes arquivos de cabeçalho para acessar recursos do Visual Studio:Stdidcmd.h: Define IDs para todos os comandos expostos pelo Visual Studio.
Vsshlids.h: Contém IDs de comando para menus do Visual Studio.
Se o pacote chamar quaisquer comandos definidos pelo Visual Studio ou por outros pacotes, adicione um
UsedCommands
elemento após oCommands
elemento . Preencha esse elemento com um elemento UsedCommand para cada comando chamado que não faz parte do pacote. Defina os atributos e dos elementos para osguid
valores GUID eid
ID dosUsedCommand
comandos a serem chamados.Para obter mais informações sobre como localizar os GUIDs e IDs de comandos do Visual Studio, consulte GUIDs e IDs de comandos do Visual Studio. Para chamar comandos de outros pacotes, use o GUID e a ID do comando, conforme definido no arquivo .vsct para esses pacotes.
Declarar elementos da interface do usuário
Declare todos os novos elementos da interface do Symbols
usuário na seção do arquivo .vsct .
Para declarar elementos da interface do usuário
Symbols
No elemento , adicione três elementos GuidSymbol. CadaGuidSymbol
elemento tem um atributo e umvalue
name
atributo. Defina oname
atributo para que ele reflita a finalidade do elemento. Ovalue
atributo usa um GUID. (Para gerar um GUID, no Menu Ferramentas, selecione Criar GUID e, em seguida, selecione Formato do Registro.)O primeiro
GuidSymbol
elemento representa seu pacote e, normalmente, não tem filhos. O segundoGuidSymbol
elemento representa o conjunto de comandos e conterá todos os símbolos que definem seus menus, grupos e comandos. O terceiroGuidSymbol
elemento representa seu armazenamento de imagens e contém símbolos para todos os ícones de seus comandos. Se você não tiver comandos que usam ícones, poderá omitir o terceiroGuidSymbol
elemento.No elemento que representa seu
GuidSymbol
conjunto de comandos, adicione um ou mais elementos IDSymbol . Cada um deles representa um menu, barra de ferramentas, grupo ou comando que você está adicionando à interface do usuário.Para cada
IDSymbol
elemento, defina o atributo como o nome que você usará para fazer referência ao menu, grupo ou comando correspondente e, em seguida, defina oname
value
elemento como um número hexadecimal que representará sua ID de comando. Nenhum elementoIDSymbol
que tenha o mesmo pai pode ter o mesmo valor.Se qualquer um dos elementos da interface do usuário exigir ícones, adicione um
IDSymbol
elemento para cada ícone ao elemento que representa seuGuidSymbol
repositório de imagens.
Colocar elementos da interface do usuário no IDE
Os elementos Menus, Groups e Buttons contêm as definições de todos os menus, grupos e comandos definidos no pacote. Coloque esses menus, grupos e comandos no IDE usando um elemento Parent que faz parte da definição do elemento UI ou usando um elemento CommandPlacement definido em outro lugar.
Cada Menu
elemento , Group
e tem um atributo e Button
um guid
id
atributo. Sempre defina o atributo para corresponder ao nome do elemento que representa seu GuidSymbol
conjunto de comandos e defina o atributo como o guid
id
nome do IDSymbol
elemento que representa seu menu, grupo ou comando na Symbols
seção.
Para definir elementos da interface do usuário
Se você estiver definindo novos menus, submenus, menus de atalho ou barras de ferramentas, adicione um
Menus
elemento aoCommands
elemento. Em seguida, para cada menu a ser criado, adicione um elemento Menu aoMenus
elemento .Defina os
guid
atributos eid
doMenu
elemento e, em seguida, defina o atributo para otype
tipo de menu desejado. Você também pode definir opriority
atributo para estabelecer a posição relativa do menu no grupo pai.Observação
O
priority
atributo não se aplica a barras de ferramentas e menus de contexto.Todos os comandos no IDE do Visual Studio devem ser hospedados por grupos de comandos, que são os filhos diretos de menus e barras de ferramentas. Se você estiver adicionando novos menus ou barras de ferramentas ao IDE, eles deverão conter novos grupos de comandos. Você também pode adicionar grupos de comandos a menus e barras de ferramentas existentes para que você possa agrupar visualmente seus comandos.
Ao adicionar novos grupos de comandos, você deve primeiro criar um elemento e, em seguida, adicionar a ele um
Groups
elemento Group para cada grupo de comandos.Defina os
guid
atributos eid
de cadaGroup
elemento e, em seguida, defina opriority
atributo para estabelecer a posição relativa do grupo no menu pai. Para obter mais informações, consulte Criar grupos reutilizáveis de botões.Se você estiver adicionando novos comandos ao IDE, adicione um
Buttons
elemento aoCommands
elemento . Em seguida, para cada comando, adicione um elemento Button aoButtons
elemento.Defina os
guid
atributos eid
de cadaButton
elemento e, em seguida, defina o atributo para otype
tipo de botão desejado. Você também pode definir opriority
atributo para estabelecer a posição relativa do comando no grupo pai.Observação
Use
type="button"
para comandos de menu padrão e botões em barras de ferramentas.Button
No elemento , adicione um elemento Strings que contém um elemento ButtonText e um elemento CommandName. OButtonText
elemento fornece o rótulo de texto para um item de menu ou a dica de ferramenta para um botão da barra de ferramentas. OCommandName
elemento fornece o nome do comando a ser usado no comando bem.Se o comando tiver um ícone, crie um elemento Icon no
Button
elemento e defina seusguid
atributos eid
atributos para o elemento para oBitmap
ícone.Observação
Os botões da barra de ferramentas devem ter ícones.
Para obter mais informações, consulte MenuCommands vs. OleMenuCommands.
Se qualquer um dos comandos exigir ícones, adicione um elemento Bitmaps ao
Commands
elemento. Em seguida, para cada ícone, adicione um elemento Bitmap aoBitmaps
elemento. É aqui que você especifica o local do recurso de bitmap. Para obter mais informações, consulte Adicionar ícones a comandos de menu.Você pode confiar na estrutura pai para colocar corretamente a maioria dos menus, grupos e comandos. Para conjuntos de comandos muito grandes, ou quando um menu, grupo ou comando deve aparecer em vários lugares, recomendamos que você especifique o posicionamento do comando.
Para confiar na criação de pais para colocar elementos da interface do usuário no IDE
Para parentalidade típica, crie um
Parent
elemento em cadaMenu
elemento ,Group
eCommand
que é definido em seu pacote.O destino do
Parent
elemento é o menu ou grupo que conterá o menu, grupo ou comando.Defina o atributo como o nome do elemento que define o
guid
conjunto deGuidSymbol
comandos. Se o elemento de destino não fizer parte do pacote, use o guid para esse conjunto de comandos, conforme definido no arquivo .vsct correspondente.Defina o
id
atributo para corresponder aoid
atributo do menu ou grupo de destino. Para obter uma lista dos menus e grupos que são expostos pelo Visual Studio, consulte GUIDs e IDs de menus do Visual Studio ou GUIDs e IDs de barras de ferramentas do Visual Studio.
Se você tiver um grande número de elementos da interface do usuário para colocar no IDE, ou se tiver elementos que devem aparecer em vários lugares, defina seus posicionamentos no elemento CommandPlacements , conforme mostrado nas etapas a seguir.
Para usar o posicionamento do comando para colocar elementos da interface do usuário no IDE
Após o elemento
Commands
, adicione um elementoCommandPlacements
.CommandPlacements
No elemento , adicione umCommandPlacement
elemento para cada menu, grupo ou comando a ser colocado.Cada
CommandPlacement
elemento ou elemento coloca um menu, grupo ouParent
comando em um local do IDE. Um elemento da interface do usuário só pode ter um pai, mas pode ter vários posicionamentos de comando. Para colocar um elemento de interface do usuário em vários locais, adicione umCommandPlacement
elemento para cada local.Defina os
guid
atributos eid
de cadaCommandPlacement
elemento para o menu ou grupo de hospedagem, assim como faria para umParent
elemento. Você também pode definir opriority
atributo para estabelecer a posição relativa do elemento da interface do usuário.Você pode misturar posicionamento por posicionamento de pai e posicionamento de comando. No entanto, para conjuntos de comandos muito grandes, recomendamos que você use apenas o posicionamento de comando.
Adicionar comportamentos especializados
Você pode usar o elemento CommandFlag para modificar o comportamento de menus e comandos, por exemplo, para alterar sua aparência e visibilidade. Você também pode afetar quando um comando está visível usando o elemento VisibilityConstraints ou adicionar atalhos de teclado usando o elemento KeyBindings. Certos tipos de menus e comandos já têm comportamentos especializados incorporados.
Para adicionar comportamentos especializados
Para tornar um elemento da interface do usuário visível apenas em determinados contextos de interface do usuário, por exemplo, quando uma solução é carregada, use restrições de visibilidade.
Após o elemento
Commands
, adicione um elementoVisibilityConstraints
.Para cada item da interface do usuário a ser restringido, adicione um elemento VisibilityItem .
Para cada
VisibilityItem
elemento, defina osguid
atributos eid
para o menu, grupo ou comando e, em seguida, defina o atributo para ocontext
contexto de interface do usuário desejado, conforme definido na UIContextGuids80 classe.
Para definir a visibilidade ou a disponibilidade de um item da interface do usuário no código, use um ou mais dos seguintes sinalizadores de comando:
DefaultDisabled
DefaultInvisible
DynamicItemStart
DynamicVisibility
NoShowOnMenuController
NotInTBList
Para obter mais informações, consulte o elemento CommandFlag .
Para alterar a aparência de um elemento ou alterar sua aparência dinamicamente, use um ou mais dos seguintes sinalizadores de comando:
AlwaysCreate
CommandWellOnly
DefaultDocked
DontCache
DynamicItemStart
FixMenuController
IconAndText
Pict
StretchHorizontally
TextMenuUseButton
TextChanges
TextOnly
Para obter mais informações, consulte o elemento CommandFlag .
Para alterar como um elemento reage quando recebe comandos, use um ou mais dos seguintes sinalizadores de comando:
AllowParams
CaseSensitive
CommandWellOnly
FilterKeys
NoAutoComplete
NoButtonCustomize
NoKeyCustomize
NoToolbarClose
PostExec
RouteToDocs
TextIsAnchorCommand
Para obter mais informações, consulte o elemento CommandFlag .
Para anexar um atalho de teclado dependente de menu a um menu ou a um item em um menu, adicione um caractere e comercial (&) no elemento do
ButtonText
menu ou item de menu. O caractere que segue o e comercial é o atalho de teclado ativo quando o menu pai está aberto.Para anexar um atalho de teclado independente de menu a um comando, use o elemento KeyBindings . Para obter mais informações, consulte o elemento KeyBinding .
Para localizar o texto do menu, use o
LocCanonicalName
elemento . Para obter mais informações, consulte o elemento Strings .Alguns tipos de menu e botão incluem comportamentos especializados. A lista a seguir descreve alguns tipos de menu e botão especializados. Para outros tipos, consulte as
types
descrições de atributo nos elementos Menu, Button e Combo .Caixa de combinação: uma caixa de combinação é uma lista suspensa que pode ser usada em uma barra de ferramentas. Para adicionar caixas de combinação à interface do usuário, crie um elemento Combos no
Commands
elemento . Em seguida, adicione aoCombos
elemento umCombo
elemento para cada caixa de combinação a ser adicionada.Combo
elementos têm os mesmos atributos e filhos comoButton
elementos e também têmDefaultWidth
eidCommandList
atributos. ODefaultWidth
atributo define a largura em pixels e oidCommandList
atributo aponta para uma ID de comando usada para preencher a caixa de combinação.Controlador de menu: Um controlador de menu é um botão que tem uma seta ao lado. Clicar na seta abre uma lista. Para adicionar um controlador de menu à interface do usuário, crie um
Menu
elemento e defina seutype
atributo comoMenuController
ouMenuControllerLatched
, dependendo do comportamento desejado. Para preencher um controlador de menu, defina-o como o pai de umGroup
elemento. O controlador de menu exibirá todos os filhos desse grupo em sua lista suspensa.