Arquitetura de VSPackage de controle de origem
Um pacote de controle de origem é um VSPackage que usa serviços que o Visual Studio IDE fornece. Em retorno, um pacote de controle de origem fornece sua funcionalidade como um serviço de controle de origem. Além disso, um pacote de controle de origem é uma alternativa mais versátil que o plug-in para a integração de controle de origem em um controle de fonte Visual Studio.
Um plug-in de que implementa a API de plug-in de controle de origem do controle de fonte obedeçam um contrato rígida. Por exemplo, um plug-in não pode substituir o padrão Visual Studio interface do usuário (UI). Além disso, a API de plug-in de controle de origem não habilita um plug-in implementar seu próprio modelo de controle de origem. No entanto, um pacote de controle de origem, supera essas limitações. Um pacote de controle de origem tem controle total sobre a experiência de controle de origem de um Visual Studio usuário. Além disso, um pacote de controle de origem pode usar sua própria lógica e o modelo de controle de origem, e ele pode definir todas as interfaces de usuário relativas ao controle de origem.
Componentes do pacote de controle de origem
Como mostrado no diagrama de arquitetura, um Visual Studio componente denominado o fragmento de código de controle de origem é um VSPackage que integra um pacote de controle de origem com Visual Studio.
Stub de controle de origem trata as seguintes tarefas.
Fornece a interface do usuário comum que é necessário para o registro do pacote de controle de origem.
Carrega um pacote de controle de origem.
Define um pacote de controle de origem como ativo/inativo.
Stub de controle de origem procura o serviço ativo para o pacote de controle de origem e roteia as chamadas de entrada todos os serviços do IDE para que o pacote.
O pacote de adaptador de controle de origem é um controle de fonte especial que o pacote Visual Studio fornece. Este pacote é o componente central para oferecer suporte a origem plug-ins de controle com base na API de plug-in de controle de origem. Quando um plug-in de controle de origem é o plug-in do ativo, o fragmento de código de controle de origem envia seus eventos para o pacote de adaptador de controle de origem. Por sua vez, o pacote de adaptador de controle de origem se comunica com o plug-in de controle de origem usando a API de plug-in de controle de origem e também fornece um padrão de interface do usuário que é comum para o controle de origem todos os plug-ins.
Quando um pacote de controle de origem é um pacote ativo, por outro lado, o fragmento de código de controle de origem diretamente comunica com o pacote usando o SDK do Visual Studio interfaces do pacote de controle de origem. O pacote de controle de origem é responsável por seu próprio controle de origem da interface do usuário de hospedagem.
Para um pacote de controle de origem, Visual Studio não fornece uma API para integração ou código-fonte do controle. Compare isso com a abordagem descrita no Criar um controle de origem plug-in em que o plug-in de controle de origem tem que implementar um conjunto rígido de funções e retornos de chamada.
Como qualquer VSPackage, um pacote de controle de origem é um objeto COM que pode ser criado usando CoCreateInstance. O VSPackage se torna disponível para o Visual Studio IDE com a implementação de IVsPackage. Quando uma instância tiver sido criada, um VSPackage recebe um ponteiro de site e um IServiceProvider interface que fornece acesso a VSPackage para os serviços disponíveis e as interfaces no IDE.
Escrever um pacote de controle de origem com base em VSPackage requer a experiência de programação mais avançada que escrever uma API de plug-in de controle de origem baseada em plug-in.