Arquitetura do VSPackage de controle do código-fonte
Um pacote de controle de origem é um VSPackage que usa serviços que o IDE do Visual Studio fornece. Em troca, 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 do que um plug-in de controle de origem para integrar o controle de origem ao Visual Studio.
Um plug-in de controle de origem que implementa a API de plug-in de controle de origem obedece a um contrato rigoroso. Por exemplo, um plug-in não pode substituir a interface do usuário (UI) padrão do Visual Studio. Além disso, a API de plug-in de controle de código-fonte não permite que um plug-in implemente seu próprio modelo de controle de código-fonte. Um pacote de controle de origem, no entanto, supera essas duas limitações. Um pacote de controle de origem tem controle total sobre a experiência de controle de origem de um usuário do Visual Studio. Além disso, um pacote de controle de origem pode usar seu próprio modelo de controle de origem e lógica, e pode definir todas as interfaces de usuário relacionadas ao controle de origem.
Componentes do pacote de controle de origem
Como mostrado no diagrama de arquitetura, um componente do Visual Studio chamado Source Control Stub é um VSPackage que integra um pacote de controle de origem com o Visual Studio.
O Stub de Controle do Código-Fonte lida com as tarefas a seguir.
Fornece a interface do usuário comum necessária 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.
O Stub de Controle do Código-Fonte procura o serviço ativo para o pacote de controle de origem e roteia todas as chamadas de serviço de entrada do IDE para esse pacote.
O pacote de adaptador de controle de código-fonte é um pacote de controle de origem especial que o Visual Studio fornece. Este pacote é o componente central para dar suporte a plug-ins de controle de origem com base na API de plug-in de controle de código-fonte. Quando um plug-in de controle de origem é o plug-in ativo, o Stub de controle de origem envia seus eventos para o pacote de adaptador de controle de código-fonte. Por sua vez, o pacote do adaptador de controle do código-fonte se comunica com o plug-in de controle do código-fonte usando a API do plug-in de controle do código-fonte e também fornece uma interface do usuário padrão que é comum a todos os plug-ins de controle do código-fonte.
Quando um pacote de controle de origem é o pacote ativo, por outro lado, o Stub de controle de código-fonte se comunica diretamente com o pacote usando as interfaces de pacote de controle de origem do SDK do Visual Studio. O pacote de controle de origem é responsável por hospedar sua própria interface do usuário de controle de código-fonte.
Para um pacote de controle de origem, o Visual Studio não fornece código de controle de origem ou uma API para integração. Compare isso com a abordagem descrita em Criando um plug-in de controle de código-fonte, em que o plug-in de controle de origem precisa 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 . O VSPackage se torna disponível para o IDE do Visual Studio implementando IVsPackageo . Quando uma instância é criada, um VSPackage recebe um ponteiro de site e uma IServiceProvider interface que fornece ao VSPackage acesso aos serviços e interfaces disponíveis no IDE.Escrever um pacote de controle de origem baseado em VSPackage requer conhecimentos de programação mais avançados do que escrever um plug-in baseado em API de plug-in de controle de código-fonte.