Instalar um plug-in de controle do código-fonte

A criação de um plug-in de controle de origem envolve três etapas:

  1. Crie uma DLL com as funções definidas na seção de referência da API de plug-in de controle de código-fonte desta documentação.

  2. Implemente as funções definidas pela API do plug-in de controle do código-fonte. Quando o Visual Studio o solicitar, disponibilize interfaces e caixas de diálogo no plug-in.

  3. Registre a DLL fazendo entradas de registro apropriadas.

Integração com o Visual Studio

O Visual Studio oferece suporte a plug-ins de controle de origem que estão em conformidade com a API de plug-in de controle de código-fonte.

Registrar o plug-in de controle do código-fonte

Antes que um ambiente de desenvolvimento integrado (IDE) em execução possa chamar o sistema de controle do código-fonte, ele deve primeiro localizar a DLL do plug-in de controle do código-fonte que exporta a API.

Para registrar a DLL do plug-in de controle do código-fonte

  1. Adicione duas entradas sob a chave HKEY_LOCAL_MACHINE na subchave SOFTWARE que especifica a subchave do nome da empresa seguida da subchave do nome do produto. O padrão é HKEY_LOCAL_MACHINE\SOFTWARE\nome da empresa\nome>> do produto\<<<valor de entrada.> = As duas entradas são sempre chamadas SCCServerName e SCCServerPath. Cada um é uma cadeia de caracteres regular.

    Por exemplo, se o nome da empresa for Microsoft e o produto de controle do código-fonte for SourceSafe, esse caminho do Registro será HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SourceSafe. Nessa subchave, a primeira entrada, SCCServerName, é uma cadeia de caracteres legível pelo usuário que nomeia seu produto. A segunda entrada, SCCServerPath, é o caminho completo para a DLL do plug-in de controle de origem à qual o IDE deve se conectar. O seguinte fornece entradas de registro de exemplo:

    Entrada do Registro de exemplo Valor de exemplo
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SourceSafe\SCCServerName Microsoft Visual SourceSafe
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SourceSafe\SCCServerPath c:\vss\win32\ssscc.dll

    Observação

    SCCServerPath é o caminho completo para o plug-in SourceSafe. Seu plug-in de controle de origem usará nomes de empresas e produtos diferentes, mas os mesmos caminhos de entrada do Registro.

  2. As entradas opcionais do Registro a seguir podem ser usadas para modificar o comportamento do plug-in de controle do código-fonte. Essas entradas vão na mesma subchave que SccServerName e SccServerPath.

    • A entrada HideInVisualStudioregistry pode ser usada se você não quiser que seu plug-in de controle de origem apareça na lista Seleção de plug-in do Visual Studio. Essa entrada também afetará a comutação automática para o plug-in de controle do código-fonte. Um uso possível para essa entrada é se você fornecer um pacote de controle de origem que substitua seu plug-in de controle de origem, mas quiser facilitar a migração do usuário do uso do plug-in de controle de origem para o pacote de controle de origem. Quando o pacote de controle do código-fonte é instalado, ele define essa entrada do Registro, que oculta o plug-in.

      HideInVisualStudio é um valor DWORD e é definido como 1 para ocultar o plug-in ou 0 para mostrar o plug-in. Se a entrada do Registro não aparecer, o comportamento padrão será mostrar o plug-in.

    • A entrada do Registro DisableSccManager pode ser usada para desabilitar ou ocultar a opção de menu Iniciar <Servidor> de Controle do Código-Fonte que normalmente aparece no submenu Controle do Código-Fonte do Arquivo>. Selecionar essa opção de menu chama a função SccRunScc . Seu plug-in de controle do código-fonte pode não suportar um programa externo e, portanto, você pode querer desativar ou até mesmo ocultar a opção do menu Iniciar .

      DisableSccManager é um valor DWORD e é definido como 0 para habilitar a opção de menu Iniciar Servidor> de Controle do Código-Fonte, definido como 1 para desabilitar a opção de menu e definido como 2 para ocultar a opção de <menu. Se essa entrada do Registro não aparecer, o comportamento padrão é mostrar a opção de menu.

    Entrada de registro de exemplo Valor de exemplo
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SourceSafe\HideInVisualStudio 1
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SourceSafe\DisableSccManager 1
  3. Adicione a subchave, SourceCodeControlProvider, sob a chave HKEY_LOCAL_MACHINE na subchave SOFTWARE.

    Sob essa subchave, a entrada do Registro ProviderRegKey é definida como uma cadeia de caracteres que representa a subchave que você colocou no Registro na etapa 1. O padrão é HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider\ProviderRegKey = SOFTWARE\nome> da empresa\<<nome do> produto.

    Veja a seguir um exemplo de conteúdo para essa subchave.

    Entrada de registro Valor de exemplo
    HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider\ProviderRegKey SOFTWARE\Microsoft\SourceSafe

    Observação

    Seu plug-in de controle de origem usará a mesma subchave e nomes de entrada, mas o valor será diferente.

  4. Crie uma subchave chamada InstalledSCCProviders sob a subchave SourceCodeControlProvider e, em seguida, coloque uma entrada sob essa subchave.

    O nome dessa entrada é o nome legível pelo usuário do provedor (o mesmo que o valor especificado para a entrada SCCServerName) e o valor é, mais uma vez, a subchave criada na etapa 1. O padrão é HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider\InstalledSCCProviders\nome de exibição SOFTWARE\nome da empresa\<<<nome> = > do> produto.

    Por exemplo:

    Entrada de registro de exemplo Valor de exemplo
    HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider\InstalledSCCProviders\Microsoft Visual SourceSafe SOFTWARE\Microsoft\SourceSafe

    Observação

    Pode haver vários plug-ins de controle de origem registrados dessa maneira. É assim que o Visual Studio localiza todos os plug-ins baseados em API de plug-in de controle de código-fonte instalados.

Como um IDE localiza a DLL

O IDE do Visual Studio tem duas maneiras de localizar a DLL do plug-in de controle de origem:

  • Encontre o plug-in de controle de origem padrão e conecte-se a ele silenciosamente.

  • Encontre todos os plug-ins de controle de origem registrados, dos quais o usuário escolhe um.

    Para localizar a DLL da primeira maneira, o IDE procura sob a subchave HKEY_LOCAL_MACHINE\Software\SourceCodeControlProvider para a entrada ProviderRegKey. O valor dessa entrada aponta para outra subchave. Em seguida, o IDE procura uma entrada chamada SccServerPath nessa segunda subchave em HKEY_LOCAL_MACHINE. O valor dessa entrada aponta o IDE para a DLL.

Observação

O IDE não carrega DLLs de caminhos relativos (por exemplo, .\NewProvider.DLL). Um caminho completo para a DLL deve ser especificado (por exemplo, c:\Providers\NewProvider.DLL). Isso fortalece a segurança do IDE, impedindo o carregamento de DLLs de plug-in não autorizadas ou representadas.

Para localizar a DLL na segunda maneira, o IDE procura sob a subchave HKEY_LOCAL_MACHINE\Software\SourceCodeControlProvider\InstalledSCCProviders para todas as entradas. Cada entrada tem um nome e um valor. O IDE exibe uma lista desses nomes para o usuário. Quando o usuário escolhe um nome, o IDE localiza o valor do nome selecionado que aponta para uma subchave. O IDE procura uma entrada chamada SccServerPath nessa subchave em HKEY_LOCAL_MACHINE. O valor dessa entrada aponta o IDE para a DLL correta.

Um plug-in de controle de origem precisa oferecer suporte a ambas as maneiras de localizar a DLL e, consequentemente, define ProviderRegKey, substituindo qualquer configuração anterior. Mais importante, ele deve se adicionar à lista de InstalledSccProviders para que o usuário possa ter uma escolha de qual plug-in de controle de origem usar.

Observação

Como a chave HKEY_LOCAL_MACHINE é usada, somente um plug-in de controle de origem pode ser registrado como o plug-in de controle de origem padrão em uma determinada máquina (no entanto, o Visual Studio permite que os usuários determinem qual plug-in de controle de origem eles realmente desejam usar para uma solução específica). Durante o processo de instalação, verifique se um plug-in de controle do código-fonte já está definido; Em caso afirmativo, pergunte ao usuário se deve ou não definir o novo plug-in de controle de origem que está sendo instalado como padrão. Durante a desinstalação, não remova outras subchaves do Registro que são comuns a todos os plug-ins de controle de origem em HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider; remova apenas sua subchave SCC específica.

Como o IDE detecta o suporte à versão 1.2/1.3

Como o Visual Studio detecta se um plug-in oferece suporte à funcionalidade da API de plug-in de controle do código-fonte versão 1.2 e 1.3? Para declarar a capacidade avançada, o plug-in de controle do código-fonte deve implementar a função correspondente:

Primeiro, o Visual Studio verifica o valor retornado chamando o SccGetVersion. Deve ser maior ou igual a 1,2.

Em seguida, o Visual Studio determina se o novo recurso específico é suportado examinando o lpSccCapsargumento no SccInitialize.

Se ambas as condições forem atendidas, as novas funções suportadas nas versões 1.2 e 1.3 podem ser chamadas.