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:
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.
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.
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
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.
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 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.
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 lpSccCaps
argumento 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.