Criar arquivos de tabela de comandos XML (.vsct)

Um arquivo de tabela de comandos XML (.vsct) descreve o layout e a aparência dos itens de comando para um VSPackage. Os itens de comando incluem botões, caixas de combinação, menus, barras de ferramentas e grupos de itens de comando. Este artigo descreve arquivos de tabela de comando XML, como eles afetam itens de comando e menus e como criá-los.

Comandos, menus, grupos e o arquivo .vsct

Os arquivos .vsct são organizados em torno de comandos, menus e grupos de comandos. As marcas XML no arquivo .vsct representam cada um desses itens, juntamente com outros itens associados, como botões de comando, posicionamento de comando e bitmaps.

Quando você cria um novo VSPackage executando o modelo de pacote do Visual Studio, o modelo gera um arquivo .vsct com os elementos necessários para um comando de menu, janela de ferramenta ou editor personalizado, dependendo de suas seleções. Esse arquivo .vsct pode então ser modificado para atender aos requisitos de um VSPackage específico. Para obter exemplos de como modificar um arquivo .vsct , consulte Estender menus e comandos.

Para criar um novo arquivo .vsct em branco, consulte Como criar um arquivo .vsct. Depois de criado, você adiciona elementos, atributos e valores XML ao arquivo para descrever o layout do item de comando. Para obter um esquema XML detalhado, consulte a referência do esquema XML VSCT.

Diferenças entre arquivos .ctc e .vsct

Embora o significado por trás das marcas XML em um arquivo .vsct seja o mesmo que essas marcas no formato de arquivo .ctc agora preterido, sua implementação é um pouco diferente:

  • A nova <marca externa> é onde você faz referência a outros arquivos .h a serem compilados, como esses arquivos para a barra de ferramentas do Visual Studio.

  • Embora os arquivos .vsct ofereçam suporte à instrução /include, como os arquivos .ctc, ele também apresenta um novo <elemento de importação>. A diferença é que /include traz todas as informações, enquanto< import> traz apenas os nomes.

  • Embora os arquivos .ctc exijam um arquivo de cabeçalho no qual você define suas diretivas de pré-processador, um não é necessário para arquivos .vsct . Em vez disso, coloque suas diretivas na tabela de símbolos, localizada nos elementos Symbol>, localizados na parte inferior do arquivo .vsct.<

  • Os arquivos .vsct apresentam uma <marca Annotation> , que permite incorporar qualquer informação que você gosta, como notas ou até mesmo imagens.

  • Os valores são armazenados como atributos no item.

  • Os sinalizadores de comando podem ser armazenados individualmente ou empilhados. O IntelliSense, no entanto, não funciona em sinalizadores de comando empilhados. Para obter mais informações sobre sinalizadores de comando, consulte o elemento CommandFlag.

  • Você pode especificar vários tipos, como listas suspensas divididas, combos, etc.

  • GUIDs não validam.

  • Cada elemento da interface do usuário tem uma cadeia de caracteres que representa o texto exibido com ele.

  • O pai é opcional. Se omitido, o valor Grupo Desconhecido será usado.

  • O argumento Icon é opcional.

  • Seção de bitmap: Esta seção é a mesma de um arquivo .ctc, exceto que agora você pode especificar um nome de arquivo via Href que será puxado pelo compilador vsct.exe em tempo de compilação.

  • ResID: O ID de recurso de bitmap antigo pode ser usado e ainda funciona da mesma forma que em arquivos .ctc .

  • HRef: Um novo método que permite especificar um nome de arquivo para o recurso de bitmap. Ele pressupõe que todos são usados, então você pode omitir a seção Usado. O compilador procurará primeiro recursos locais para o arquivo, depois em quaisquer compartilhamentos de rede e quaisquer recursos definidos pela opção /I .

  • Ligação de chaves: Você não precisa mais especificar um emulador. Se você especificar um, o compilador assumirá que o editor e o emulador são os mesmos.

  • Keychord: Keychord foi descartado. O novo formato é Key1, Mod1, Key2, Mod2. Você pode especificar um caractere, hexadecimal ou constante VK.

O novo compilador, vsct.exe, compila arquivos .ctc e .vsct. O compilador ctc.exe antigo, no entanto, não reconhecerá ou compilará arquivos .vsct.

Você pode usar o compilador vsct.exe para converter um arquivo .cto existente em um arquivo .vsct. Para obter mais informações, consulte Como criar um arquivo .vsct a partir de um arquivo .cto existente.

Os elementos do arquivo .vsct

A tabela de comandos tem a seguinte hierarquia e elementos:

  • Elemento CommandTable: representa todos os comandos, grupos de menus e menus associados ao VSPackage.

  • Elemento externo: faz referência a todos os arquivos .h externos que você deseja mesclar com o arquivo .vsct .

  • Elemento Include: faz referência a quaisquer arquivos de cabeçalho (.h) adicionais que você deseja compilar junto com o arquivo .vsct . Um arquivo .vsct pode incluir arquivos .h contendo constantes que definem comandos, grupos de menus e menus fornecidos pelo IDE ou outro VSPackage.

  • Elemento Commands: Representa todos os comandos individuais que podem ser executados. Cada comando tem os quatro elementos filho a seguir:

  • Elemento Menus: Representa todos os menus e barras de ferramentas no VSPackage. Menus são contêineres para grupos de comandos.

  • Elemento Groups: Representa todos os grupos no VSPackage. Grupos são coleções de comandos individuais.

  • Elemento Buttons: Representa todos os botões de comando e itens de menu no VSPackage. Os botões são controles visuais que podem ser associados a comandos.

  • Elemento bitmaps: representa todos os bitmaps de todos os botões no VSPackage. Bitmaps são imagens exibidas ao lado ou nos botões de comando, dependendo do contexto.

  • Elemento CommandPlacements: indica locais adicionais onde os comandos individuais devem estar localizados nos menus do VSPackage.

  • Elemento VisibilityConstraints: especifica se um comando é exibido o tempo todo ou somente em determinados contextos, como quando uma determinada caixa de diálogo ou janela é exibida. Os menus e comandos que têm um valor para esse elemento serão exibidos somente quando o contexto especificado estiver ativo. O comportamento padrão é exibir o comando o tempo todo.

  • Elemento KeyBindings: Especifica quaisquer associações de chave para os comandos. Ou seja, uma ou mais combinações de teclas que devem ser pressionadas para executar o comando, como Ctrl+S.

  • Elemento UsedCommands: Informa ao ambiente do Visual Studio que, embora o comando especificado seja implementado por outro código, quando o VSPackage atual está ativo, ele fornece a implementação do comando.

  • Elemento Symbols: Contém os nomes de símbolos e IDs GUID para todos os comandos no pacote.

Diretrizes de design de arquivo .vsct

Para criar com êxito um arquivo .vsct , siga estas diretrizes.

  • Os comandos podem ser colocados apenas em grupos, os grupos podem ser colocados apenas em menus e os menus podem ser colocados apenas em grupos. Apenas menus são realmente exibidos no IDE, grupos e comandos não são.

  • Os submenus não podem ser atribuídos diretamente a um menu, mas devem ser atribuídos a um grupo, que por sua vez é atribuído a um menu.

  • Comandos, submenus e grupos podem ser atribuídos a um grupo ou menu pai usando o campo pai de sua diretiva de definição.

  • A organização de uma tabela de comandos somente por meio dos campos pai nas diretivas tem uma limitação significativa. As diretivas que definem objetos podem usar apenas um argumento pai.

  • A reutilização de comandos, grupos ou submenus requer o uso de uma nova diretiva para criar uma nova instância do objeto com seu próprio GUID:ID par.

  • Cada GUID:ID par deve ser único. A reutilização de um comando que, por exemplo, foi colocado em um menu, uma barra de ferramentas ou em um menu de contexto é manipulada IOleCommandTarget pela interface.

  • Comandos e submenus também podem ser atribuídos a vários grupos, e grupos podem ser atribuídos a vários menus usando o elemento Commands.

Notas do arquivo .vsct

Se você fizer alterações em um arquivo .vsct depois de compilá-lo e colocá-lo em uma DLL satélite nativa, você deve executar devenv.exe /setup /nosetupvstemplates. Isso força os recursos VSPackage especificados no registro experimental a serem relidos e o banco de dados interno que descreve o Visual Studio a ser recriado.

Durante o desenvolvimento, é possível que vários projetos VSPackage sejam criados e registrados na seção de registro experimental que pode levar a confusão no IDE. Para corrigir isso, você pode redefinir o hive experimental para as configurações padrão para remover todos os VSPackages registrados e quaisquer alterações que eles possam ter feito no IDE. Para redefinir a colmeia experimental, use a ferramenta CreateExpInstance.exe que vem com o SDK do Visual Studio. Você pode encontrá-lo em:

%PROGRAMFILES(x86)%\Visual Studio\version> SDK\VisualStudioIntegration\Tools\Bin\<CreateExpInstance.exe

Execute a ferramenta usando o comando CreateExpInstance /Reset. Lembre-se de que essa ferramenta remove da seção experimental todos os VSPackages registrados normalmente não instalados com o Visual Studio.