Anatomia de uma extensão do Visual Studio
Um pacote VSIX é um arquivo .vsix que contém uma ou mais extensões do Visual Studio e os metadados que o Visual Studio usa para classificar e instalar as extensões. O formato de pacote VSIX segue o padrão OPC (Open Packaging Conventions), o que significa que ele pode ser aberto por qualquer ferramenta que possa abrir arquivos ZIP.
Um projeto de extensão é um projeto C# com alguns extras que o tornam exclusivo. O vídeo a seguir explora um projeto de extensão para entender melhor como os projetos de extensão funcionam:
Estrutura do arquivo
Ao criar novas extensões usando o modelo Projeto VSIX com Comando (Comunidade), a estrutura de arquivos fica da seguinte forma:
O arquivo .vsixmanifest é o arquivo principal. É um arquivo XML que contém informações sobre a extensão usada pelo Visual Studio. Todos os componentes da extensão são registrados no arquivo .vsixmanifest. É o único arquivo obrigatório em um projeto VSIX.
O arquivo VSCommandTable.vsct é onde os comandos são declarados. É um arquivo XML e contém as definições de comandos de botão, menus, atalhos de teclado e muito mais. O arquivo compila seu conteúdo em um blob no .dll de saída que o Visual Studio usa para construir toda a sua estrutura de menu da tabela de comandos. Esse arquivo declara apenas os componentes na tabela de comandos, ele não lida com nenhuma invocação de comando.
O arquivo *Package.cs é a classe Package, que é o ponto de entrada para a maioria das extensões. Aqui, você costuma encontrar manipuladores de comandos, janelas de ferramentas, páginas de opções, serviços e outros componentes registrados.
Compilação
O projeto é compilado em um arquivo .vsix localizado na pasta /bin/debug ou /bin/release, que depende da configuração atual do build da solução. A carga de trabalho de desenvolvimento de extensão do Visual Studio fornece destinos e tarefas dedicados do MSBuild para lidar com o tipo de projeto VSIX.
Quando o projeto VSIX é compilado, ele se implanta automaticamente na Instância Experimental. Isso pode ser controlado nas configurações do projeto VSIX:
Instância Experimental
Para proteger seu ambiente de desenvolvimento do Visual Studio contra aplicativos não testados que podem alterá-lo, o VSSDK fornece um espaço experimental que você pode usar para fazer testes. Você desenvolve novos aplicativos usando o Visual Studio como de costume, mas os executa usando essa instância experimental.
Cada aplicativo que tem um pacote VSIX inicia a instância experimental do Visual Studio no modo de depuração.
Se você quiser iniciar a instância experimental do Visual Studio fora de uma solução específica, execute o seguinte comando na janela de comando:
devenv.exe /RootSuffix Exp
Para obter mais conceitos de extensibilidade, confira os recursos úteis e convenientes para seguir este kit de ferramentas.