Compartilhar via


Registro e seleção (VSPackage do controle do código-fonte)

Um VSPackage de controle de fontes deve ser registrado para torná-lo disponível no Visual Studio. Se mais de um VSPackage de controle de código-fonte estiver registrado, o usuário poderá selecionar qual VSPackage carregar nos momentos adequados. Consulte VSPackages para obter mais detalhes sobre VSPackages e como registrá-los.

Registrando um pacote de controle do código-fonte

O pacote de controle do código-fonte é registrado para que o ambiente do Visual Studio possa encontrá-lo e consultar seus recursos com suporte. Isso está de acordo com um esquema de carregamento de atraso no qual uma instância de um pacote é criada somente quando seus recursos ou comandos são necessários ou são solicitados explicitamente.

Os VSPackages colocam informações em uma chave do Registro específica da versão, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\X.Y, onde X é o número de versão principal e Y é o número de versão secundária. Essa prática fornece a capacidade de dar suporte à instalação lado a lado de várias versões do Visual Studio.

A interface do usuário do Visual Studio dá suporte à seleção entre vários plug-ins de controle do código-fonte instalados (por meio do Pacote do Adaptador de Controle do Código-Fonte), bem como VSPackages de controle do código-fonte. Pode haver apenas um plug-in de controle do código-fonte ativo ou VSPackage por vez. No entanto, conforme descrito abaixo, o IDE permite alternar entre plug-ins de controle do código-fonte e VSPackages por meio de um mecanismo automático de troca de pacotes baseado em solução. Há alguns requisitos por parte do VSPackage de controle do código-fonte para habilitar esse mecanismo de seleção.

Entradas do Registro

Um pacote de controle do código-fonte precisa de três GUIDs privados:

  • GUID do pacote: esse é o GUID principal para o pacote que contém a implementação do controle do código-fonte (chamado ID_Package nesta seção).

  • GUID de Controle do Código-Fonte: este é um GUID para o VSPackage de controle do código-fonte usado para registrar com o Stub de Controle do Código-Fonte do Visual Studio e também é usado como GUID de contexto de interface de usuário de comando. O GUID do serviço de controle do código-fonte é registrado no GUID associado ao controle do código-fonte. No exemplo, o GUID de controle do código-fonte é chamado de ID_SccProvider.

  • GUID do serviço de controle do código-fonte: esse é o GUID de serviço privado usado pelo Visual Studio (chamado SID_SccPkgService nesta seção). Além disso, o pacote de controle do código-fonte precisa definir outros GUIDs para VSPackages, janelas de ferramentas e assim por diante.

    As seguintes entradas do Registro devem ser feitas por um VSPackage de controle do código-fonte:

Nome da chave Entradas
HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ VisualStudio\ X.Y\ SourceControlProviders\ (padrão) = rg_sz:{ID_SccProvider}
HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ VisualStudio\ X.Y\ SourceControlProviders\ {ID_SccProvider}\ (padrão) = rg_sz:<Nome amigável do Pacote>

Serviço = rg_sz:{SID_SccPkgService}
HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ VisualStudio\ X.Y\ SourceControlProviders\ {ID_SccProvider}\ Name\ (padrão) = rg_sz:#<ID do recurso para nome localizado>

Pacote = rg_sz:{ID_Package}
HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ VisualStudio\ X.Y\ SolutionPersistence\ <PackageName>\

(Observe que o nome da chave, SourceCodeControl, já é usado pelo Visual Studio e não está disponível como opção para <PackageName>.)
(padrão) = rg_sz:{ID_Package}

Selecionando um pacote de controle do código-fonte

Vários plug-ins baseados em API de Controle do Código-Fonte e VSPackages de controle do código-fonte podem ser registrados simultaneamente. O processo de seleção de um plug-in de controle do código-fonte ou VSPackage deve garantir que o Visual Studio carregue o plug-in ou o VSPackage no momento apropriado e pode adiar o carregamento de componentes desnecessários até que eles sejam necessários. Além disso, o Visual Studio deve remover toda a interface do usuário de outros VSPackages inativos, incluindo itens de menu, caixas de diálogo e barras de ferramentas, e exibir a interface do usuário para o VSPackage ativo.

O Visual Studio carrega um VSPackage de controle do código-fonte quando qualquer uma das seguintes operações é executada:

  • A solução é aberta (quando a solução está sob controle do código-fonte).

    Quando uma solução ou projeto sob controle do código-fonte é aberto, o IDE faz com que o VSPackage de controle do código-fonte designado para essa solução seja carregado.

  • Qualquer comando de menu do VSPackage de controle de código-fonte é executado.

    Um VSPackage de controle do código-fonte deve carregar todos os componentes necessários somente quando eles realmente serão usados (também conhecido como carregamento atrasado).

Troca automática de VSPackage baseada em solução

Você pode alternar manualmente os VSPackages de controle do código-fonte através da caixa de diálogo Opções do Visual Studio, na categoria Controle do Código-Fonte. A troca automática de pacotes baseada em solução significa que um pacote de controle do código-fonte designado para uma determinada solução é automaticamente definido como ativo quando essa solução é aberta. Cada pacote de controle do código-fonte deve implementar SetActive e SetInactive. O Visual Studio manipula a opção entre os plug-ins de controle do código-fonte (implementando a API de Plug-in de Controle do Código-Fonte) e os VSPackages de controle do código-fonte.

O Pacote do Adaptador de Controle do Código-Fonte é usado para alternar para qualquer plug-in baseado em API de Controle do Código-Fonte. O processo de alternar para o Pacote do Adaptador de Controle do Código-Fonte intermediário e determinar qual plug-in de controle do código-fonte deve ser definido como ativo ou inativo é transparente para o usuário. O Pacote do Adaptador está sempre ativo quando qualquer plug-in de controle do código-fonte está ativo. Alternar entre dois plug-ins de controle do código-fonte equivale a simplesmente carregar e descarregar a DLL do plug-in. A mudança para um VSPackage de controle do código-fonte, no entanto, envolve interagir com o IDE para carregar o VSPackage apropriado.

Um VSPackage de controle do código-fonte é chamado quando qualquer solução é aberta e a chave do Registro para o VSPackage está no arquivo de solução. Quando a solução é aberta, o Visual Studio localiza o valor do registro e carrega o VSPackage de controle do código-fonte apropriado. Todos os VSPackages de controle do código-fonte devem ter as entradas do Registro descritas acima. Uma solução que está sob controle do código-fonte é marcada como associada a um VSPackage de controle do código-fonte específico. Os VSPackages de controle de versão devem implementar o IVsSolutionPersistence para habilitar a troca automática do VSPackage baseada em solução.

Interface do usuário do Visual Studio para Seleção e Alternância de Pacotes

O Visual Studio fornece uma interface do usuário para controle do código-fonte VSPackage e seleção de plug-in na caixa de diálogo Opções na categoria Controle do Código-Fonte . Ele permite que o usuário selecione o plug-in de controle do código-fonte ativo ou o VSPackage. Uma lista suspensa inclui:

  • Todos os pacotes de controle do código-fonte instalados

  • Todos os plug-ins de controle do código-fonte instalados

  • Uma opção "none", que desabilita o controle do código-fonte

    Somente a interface do usuário para a opção de controle do código-fonte ativo está visível. A seleção VSPackage oculta a interface do usuário do VSPackage anterior e mostra a interface do usuário para a nova. O VSPackage ativo é selecionado por usuário. Se um usuário tiver várias cópias do Visual Studio abertas simultaneamente, cada um poderá usar um VSPackage ativo diferente. Se vários usuários estiverem conectados ao mesmo computador, cada usuário poderá ter instâncias separadas do Visual Studio abertas, cada uma com um VSPackage ativo diferente. Quando várias instâncias do Visual Studio são fechadas por um usuário, o VSPackage de controle do código-fonte que estava ativo para a última solução aberta torna-se o VSPackage de controle do código-fonte padrão, a ser definido ativo na reinicialização.

    Ao contrário das versões anteriores do Visual Studio, uma reinicialização do IDE não é mais a única maneira de alternar o controle do código-fonte VSPackages. A seleção do VSPackage é automática. A troca de pacotes requer privilégios de usuário do Windows (não Administrador ou Usuário do Power).