Por dentro do SDK do Visual Studio

Esta seção fornece informações detalhadas sobre extensões do Visual Studio, incluindo arquitetura do Visual Studio, componentes, serviços, esquemas, utilitários e afins.

Arquitetura de extensibilidade

A ilustração a seguir mostra a arquitetura de extensibilidade do Visual Studio. Os VSPackages fornecem funcionalidade de aplicativo, que é compartilhada no IDE como serviços. O IDE padrão também oferece uma ampla gama de serviços, como SVsUIShell, que fornecem acesso à funcionalidade de janelas do IDE.

Gráfico de arquitetura do ambiente

Exibição generalizada da arquitetura do Visual Studio

VSPackages

Os VSPackages são módulos de software que compõem e estendem o Visual Studio com elementos de interface do usuário, serviços, projetos, editores e designers. Os VSPackages são a unidade de arquitetura central do Visual Studio. Para obter mais informações, confira VSPackages.

Shell do Visual Studio

O shell do Visual Studio fornece funcionalidade básica e suporte à comunicação cruzada entre seus VSPackages de componentes e extensões do MEF. Para obter mais informações, confira Shell do Visual Studio.

Diretrizes da Experiência do Usuário

Se estiver planejando criar recursos para o Visual Studio, dê uma olhada nestas diretrizes e obtenha dicas de design e usabilidade: Diretrizes da experiência do usuário do Visual Studio.

Comandos

Os comandos são funções que realizam tarefas, como imprimir um documento, renovar uma exibição ou criar um arquivo.

Ao estender o Visual Studio, você pode criar comandos e registrá-los com o shell do Visual Studio. Você pode especificar como esses comandos aparecerão no IDE, por exemplo, em um menu ou barra de ferramentas. Normalmente, um comando personalizado aparece no menu Ferramentas e um comando para exibir uma janela de ferramentas aparece no submenu Outras Janelas do menu Exibir.

Ao criar um comando, você também deve criar um manipulador de eventos para ele. O manipulador de eventos determina quando o comando está visível ou habilitado, permite modificar seu texto e garante que o comando responda adequadamente quando for ativado. Na maioria dos casos, o IDE manipula comandos usando a interface IOleCommandTarget. Os comandos no Visual Studio são manipulados começando com o contexto de comando mais interno, com base na seleção local, e prosseguindo para o contexto mais externo, com base na seleção global. Os comandos adicionados ao menu principal estão imediatamente disponíveis para scripts.

Para obter mais informações, confira Comandos, menus e barras de ferramentas.

Menus e barras de ferramentas fornecem uma maneira para os usuários invocarem comandos. Os menus são linhas ou colunas de comandos, normalmente exibidos como itens de texto individuais na parte superior de uma janela de ferramentas. Os submenus são menus secundários que aparecem quando um usuário clica em comandos que incluem uma pequena seta. Os menus de contexto aparecem quando um usuário clica com o botão direito do mouse em determinados elementos da interface do usuário. Alguns nomes de menu comuns são Arquivo, Editar, Exibir e Janela. Para obter mais informações, confira Estender menus e comandos.

As barras de ferramentas são linhas ou colunas de botões e outros controles, como caixas de combinação, caixas de listagem e caixas de texto. Os botões de barra de ferramentas costumam ter imagens de ícones, como um ícone de pasta para um comando Abrir Arquivo ou uma impressora para um comando Imprimir. Todos os elementos da barra de ferramentas estão associados a comandos. Ao clicar em um botão de barra de ferramentas, o comando associado é executado. No caso de um controle suspenso, cada item na lista suspensa é associado a um comando diferente. Alguns controles de barra de ferramentas, como um controle de divisor, são híbridos. Um lado do controle é um botão de barra de ferramentas e o outro lado é uma seta para baixo que exibe vários comandos quando clicado.

Janelas de ferramentas

As janelas de ferramentas são usadas no IDE para exibir informações. Caixa de Ferramentas, Gerenciador de Soluções, janela Propriedades e Navegador da Web são exemplos de janelas de ferramentas.

As janelas de ferramentas costumam oferecer vários controles com os quais o usuário pode interagir. Por exemplo, a janela Propriedades permite que o usuário defina propriedades de objetos que servem a uma finalidade específica. A janela Propriedades é especializada nesse sentido, mas também é geral porque pode ser usada em muitas situações diferentes. Da mesma forma, a janela de Saída é especializada porque fornece saída baseada em texto, mas é geral porque muitos subsistemas no Visual Studio podem usá-la para fornecer saída ao usuário do Visual Studio.

Considere a seguinte imagem do Visual Studio, que contém várias janelas de ferramentas:

Captura de tela

Algumas das janelas de ferramentas são encaixadas em um único painel que exibe a janela de ferramentas do Gerenciador de Soluções e oculta as outras janelas de ferramentas, mas as disponibiliza ao clicar em guias. A imagem mostra duas outras janelas de ferramentas, a Lista de Erros e a janela de Saída, encaixadas em um único painel.

Também é mostrado o painel do documento principal, que exibe várias janelas do editor. Embora as janelas de ferramentas normalmente tenham apenas uma instância (por exemplo, você pode abrir apenas um Gerenciador de Soluções), as janelas do editor podem ter várias instâncias, cada uma delas usada para editar um documento separado, mas todas encaixadas no mesmo painel. A imagem mostra um painel de documentos com duas janelas do editor, uma janela do designer de formulários. Todas as janelas no painel de documentos estão disponíveis ao clicar em guias, mas a janela do editor que contém o arquivo EditorPane.cs está visível e ativa.

Ao estender o Visual Studio, você pode criar janelas de ferramentas que permitem aos usuários da plataforma interagir com sua extensão. Você também pode criar seus próprios editores que permitem aos usuários do Visual Studio editar documentos. Como suas janelas de ferramentas e editores serão integrados ao Visual Studio, não é necessário programá-los para encaixar ou aparecer em uma guia corretamente. Quando são registrados corretamente no Visual Studio, eles terão automaticamente os recursos típicos de janelas de ferramentas e janelas do documento na plataforma. Para obter mais informações, confira Estender e personalizar janelas de ferramentas.

Janelas de documento

Uma janela do documento é uma janela filho enquadrada de uma janela de interface de vários documentos (MDI). As janelas do documento normalmente são usadas para hospedar editores de texto, editores de formulários (também conhecidos como designers) ou controles de edição, mas também podem hospedar outros tipos funcionais. A caixa de diálogo Novo Arquivo inclui exemplos de janelas do documento que o Visual Studio fornece.

A maioria dos editores é específica para uma linguagem de programação ou para um tipo de arquivo, como páginas HTML, conjuntos de quadros, arquivos em C++ ou arquivos de cabeçalho. Ao selecionar um modelo na caixa de diálogo Novo arquivo, um usuário cria dinamicamente uma janela do documento no editor para o tipo de arquivo associado ao modelo. Uma janela do documento também é criada quando um usuário abre um arquivo existente.

As janelas do documento são restritas à área de cliente da MDI. Cada janela do documento tem uma guia na parte superior e a ordem de tabulação é vinculada a outras janelas que podem estar abertas na área da MDI. Clicar com o botão direito do mouse na guia de uma janela do documento exibe um menu de atalho que inclui opções para dividir a área da MDI em vários grupos de guias horizontais ou verticais. Dividir a área da MDI permite que vários arquivos sejam exibidos ao mesmo tempo. Para obter mais informações, confira Janelas do Documento.

Editores

O editor do Visual Studio permite personalizá-lo e usá-lo para seu próprio tipo de conteúdo por meio do Managed Extensibility Framework (MEF). Em muitos casos, você não precisará criar um VSPackage para estender o editor. Contudo, caso queira incluir recursos do shell (por exemplo, um comando de menu ou uma tecla de atalho), você pode combinar uma extensão do MEF com um VSPackage.

Também é possível criar um editor personalizado, por exemplo, se desejar ler e gravar em um banco de dados ou usar um designer. Você também pode usar um editor externo, como o Bloco de notas do Windows ou o Microsoft WordPad. Para obter mais informações, confira Editor e extensões de serviço de linguagem.

Serviços de linguagem

Se quiser que o editor do Visual Studio ofereça suporte a novas palavras-chave de programação ou até mesmo a uma nova linguagem de programação, crie um serviço de linguagem. Cada serviço de linguagem pode implementar determinados recursos do editor total, parcialmente ou não implementá-los. Dependendo de como está configurado, o serviço de linguagem pode fornecer realce de sintaxe, correspondência de chaves, suporte ao IntelliSense e outros recursos no editor.

No centro de um serviço de linguagem estão um analisador e um scanner. Um scanner (ou analisador léxico) divide um arquivo de origem em elementos conhecidos como tokens, e um analisador estabelece os relacionamentos entre esses tokens. Ao criar um serviço de linguagem, você deve implementar o analisador e o scanner para que o Visual Studio possa entender os tokens e a gramática da linguagem. É possível criar serviços de linguagem gerenciados ou não gerenciados. Para obter mais informações, confira Legacy Language Service Extensibility.

Projetos

No Visual Studio, os projetos são os contêineres que os desenvolvedores usam para organizar e fazer build do código-fonte e de outros recursos. Os projetos permitem organizar, fazer build, depurar e implantar código-fonte, referências a serviços Web e bancos de dados, bem como outros recursos. Os VSPackages pode estender o sistema de projeto do Visual Studio fornecendo tipos de projeto, subtipos de projeto e ferramentas personalizadas.

Os projetos também podem ser reunidos em uma solução, que é um agrupamento de um ou mais projetos trabalhando juntos para criar um aplicativo. As informações de projeto e status referentes à solução são armazenadas em dois arquivos de solução, o arquivo de solução baseada em texto (.sln) e o arquivo de opção de usuário de solução binária (.suo). Esses arquivos são semelhantes aos arquivos de grupo (.vbg) usados em versões anteriores do Visual Basic e aos arquivos de espaço de trabalho (.dsw) e de opções do usuário (.opt) usados em versões anteriores do C++.

Para obter mais informações, confira Projetos e Soluções.

Modelos de item e de projeto

O Visual Studio inclui modelos de projeto predefinidos e modelos de item do projeto. Você também pode criar seus próprios modelos ou adquiri-los da comunidade e, em seguida, integrá-los ao Visual Studio. A Galeria de Códigos MSDN é o lugar certo para obter modelos e extensões.

Os modelos contêm a estrutura do projeto e os arquivos básicos necessários para criar um tipo específico de aplicativo, controle, biblioteca ou classe. Quando quiser desenvolver um software semelhante a um dos modelos, crie um projeto baseado no modelo e modifique os arquivos nesse projeto.

Observação

Essa arquitetura de modelo não tem suporte para projetos do Visual C++.

Para obter mais informações, confira Adicionar modelos de projeto e item de projeto.

Propriedades e opções

A janela Propriedades exibe as propriedades de um ou vários itens selecionados: as páginas Opções de Propriedades de Extensão contêm conjuntos de opções que pertencem a um componente específico, como uma linguagem de programação ou um VSPackage: Opções e Páginas de Opções. Geralmente, as configurações são recursos relacionados à interface do usuário que podem ser importados e exportados: Suporte para Configurações de Usuário.

Serviços do Visual Studio

Um serviço fornece um conjunto específico de interfaces para os componentes consumirem. O Visual Studio fornece um conjunto de serviços que podem ser usados por qualquer componente, incluindo extensões. Por exemplo, os serviços do Visual Studio permitem que as janelas de ferramentas sejam mostradas ou ocultadas dinamicamente, habilitem o acesso à Ajuda on-line, à barra de status ou a eventos da interface do usuário. O editor do Visual Studio também fornece serviços que podem ser importados por extensões do editor. Para obter mais informações, confira Usar e fornecer serviços.

Depurador

O depurador é a interface do usuário para os componentes de depuração específicos a uma linguagem. Caso tenha criado um serviço de linguagem, precisará desenvolver um mecanismo de depuração específico para se conectar ao depurador. Para obter mais informações, confira Extensibilidade do depurador do Visual Studio.

Controle do código-fonte

Para obter informações sobre como implementar um plug-in de controle do código-fonte ou um VSPackage, confira Controle do código-fonte.

Assistentes

Você pode criar um assistente com um novo tipo de projeto, para que o assistente possa ajudar os usuários a tomar as decisões corretas ao criarem um projeto desse tipo. Para obter mais informações, confira Assistentes.

Ferramentas personalizadas

As ferramentas personalizadas permitem associar uma ferramenta a um item em um projeto e executá-la sempre que o arquivo for salvo. Para obter mais informações, confira Ferramentas personalizadas.

Utilitários VSSDK

O VSSDK inclui um conjunto de utilitários que você pode precisar para trabalhar com diferentes aspectos dos VSPackages. Para obter mais informações, confira Utilitários do VSSDK.

Uso do Windows Installer

Em alguns casos, pode ser necessário usar o Windows Installer em vez do instalador VSIX: por exemplo, talvez seja necessário gravar no registro. Para obter informações sobre como usar o Windows Installer com extensões, confira Installing VSPackages With Windows Installer.

Visualizador da Ajuda

Você pode integrar suas próprias páginas de ajuda on-line e F1 no visualizador da Ajuda. Para obter mais informações, confira SDK do Microsoft Help Viewer.