Registro e seleção (VSPackage do controle do código-fonte)
Um VSPackage de controle de origem deve ser registrado para expô-lo ao Visual Studio. Se mais de um VSPackage de controle de origem estiver registrado, o usuário poderá selecionar qual VSPackage carregar nos momentos apropriados. Consulte VSPackages para obter mais detalhes sobre VSPackages e como registrá-los.
Registrando um pacote de controle de código-fonte
O pacote de controle de origem é registrado para que o ambiente do Visual Studio possa localizá-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 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 da versão principal e Y é o número da versão secundária. Essa prática fornece a capacidade de oferecer suporte à instalação lado a lado de várias versões do Visual Studio.
A interface do usuário (UI) do Visual Studio oferece suporte à seleção entre vários plug-ins de controle de origem instalados (por meio do pacote de adaptador de controle de código-fonte), bem como VSPackages de controle de origem. Pode haver apenas um plug-in de controle de origem ativo ou VSPackage por vez. No entanto, conforme descrito abaixo, o IDE permite alternar entre plug-ins de controle de origem e VSPackages por meio de um mecanismo automático de troca de pacotes baseado em solução. Há alguns requisitos por parte do controle de origem VSPackage para habilitar esse mecanismo de seleção.
Entradas do Registro
Um pacote de controle de origem precisa de três GUIDs privados:
GUID do pacote: Este é o GUID principal do pacote que contém a implementação do controle do código-fonte (chamado ID_Package nesta seção).
GUID de controle de código-fonte: Este é um GUID para o VSPackage de controle de origem usado para registrar com o Stub de controle de código-fonte do Visual Studio e também é usado como um GUID de contexto de interface do usuário de comando. O GUID do serviço de controle do código-fonte é registrado sob o GUID do 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: Este é 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 de origem:
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 uma opção para <PackageName>.) |
(padrão) = rg_sz:{ID_Package} |
Selecionando um pacote de controle de código-fonte
Vários plug-ins baseados em API de plug-in de controle de origem e VSPackages de controle de origem podem ser registrados simultaneamente. O processo de seleção de um plug-in de controle de origem ou VSPackage deve garantir que o Visual Studio carregue o plug-in ou VSPackage no momento apropriado e possa 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.
Visual Studio carrega um controle de origem VSPackage 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 um dos comandos de menu do controle de origem VSPackage são executados.
Um VSPackage de controle de origem deve carregar todos os componentes necessários somente quando eles realmente forem usados (também conhecido como carregamento atrasado).
Troca automática de VSPackage baseada em solução
Você pode trocar manualmente VSPackages de controle de origem por meio da caixa de diálogo Opções do Visual Studio na categoria Controle de código-fonte. A troca automática de pacotes baseada em solução significa que um pacote de controle de origem designado para uma solução específica é automaticamente definido como ativo quando essa solução é aberta. Todo pacote de controle de origem deve implementar SetActive e SetInactive. Visual Studio manipula a alternância entre plug-ins de controle de origem (implementando a API de plug-in de controle de código-fonte) e VSPackages de controle de origem.
O pacote do adaptador de controle do código-fonte é usado para alternar para qualquer plug-in baseado em API do plug-in de controle do código-fonte. O processo de alternar para o pacote intermediário do adaptador de controle do código-fonte 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 de origem equivale a simplesmente carregar e descarregar a DLL do plug-in. Alternar para um VSPackage de controle de origem, no entanto, envolve interagir com o IDE para carregar o VSPackage apropriado.
Um VSPackage de controle de origem é 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 de origem apropriado. Todos os VSPackages de controle de origem devem ter as entradas do Registro descritas acima. Uma solução que está sob controle de origem é marcada como sendo associada a um VSPackage de controle de origem específico. Os VSPackages de controle de origem devem implementar o para habilitar a IVsSolutionPersistence troca automática de VSPackage baseada em solução.
Interface do usuário do Visual Studio para seleção e comutação de pacotes
O Visual Studio fornece uma interface do usuário para VSPackage de controle do código-fonte 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 de origem ativo ou VSPackage. Uma lista suspensa inclui:
Todos os pacotes de controle de código-fonte instalados
Todos os plug-ins de controle do código-fonte instalados
Uma opção "nenhuma", que desabilita o controle do código-fonte
Somente a interface do usuário para a opção de controle de origem ativo está visível. A seleção VSPackage oculta a interface do usuário do VSPackage anterior e mostra a interface do usuário do novo. O VSPackage ativo é selecionado por usuário. Se um usuário tiver várias cópias do Visual Studio abertas simultaneamente, cada um pode potencialmente 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 controle de origem VSPackage que estava ativo para a última solução aberta torna-se o controle de origem padrão VSPackage, 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 VSPackages de controle de origem. A seleção do VSPackage é automática. A troca de pacotes requer privilégios de usuário do Windows (não de administrador ou usuário avançado).