Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os detalhes técnicos a seguir podem ajudá-lo a implementar de forma confiável um plug-in de controle do código-fonte no Visual Studio.
Problemas de gerenciamento de memória
Na maioria dos casos, o ambiente de desenvolvimento integrado (IDE), que é o chamador, libera e aloca memória. O plug-in de controle do código-fonte retorna cadeias de caracteres e outros itens em buffers alocados pelo chamador. As exceções são observadas nas descrições de funções específicas onde ocorrem.
Matrizes de nomes de arquivo
Quando uma matriz de arquivos é passada, ela não é passada como uma matriz contígua de nomes de arquivos. Ele é passado como uma matriz de ponteiros para nomes de arquivos. Por exemplo, no SccGet, os nomes de ficheiro são passados pelo lpFileNames parâmetro, em que lpFileNames é na verdade um ponteiro para char **.
lpFileNames[0] é um ponteiro para o primeiro nome, lpFileNames[1] é um ponteiro para o segundo nome, e assim por diante.
Modelo grande
Todos os ponteiros são de 32 bits, mesmo em sistemas operacionais de 16 bits.
Caminhos totalmente qualificados
Quando nomes de ficheiros ou diretórios são especificados como argumentos, eles devem ser caminhos completos e qualificados ou caminhos UNC, sem a barra invertida no final. É responsabilidade do plug-in de controle do código-fonte traduzi-los para caminhos relativos, se isso for um requisito do sistema de controle do código-fonte subjacente.
Especifique um caminho totalmente qualificado para a DLL registrada
O IDE não carrega mais DLLs de caminhos relativos (por exemplo, .\NewProvider.dll). Um caminho completo da DLL deve ser especificado (por exemplo, C:\Providers\NewProvider.dll). Este requisito fortalece a segurança do IDE, impedindo o carregamento de DLLs de controlo de origem não autorizadas ou falsificadas.
Verifique se há um plug-in VSSCI existente ao instalar o plug-in de controle do código-fonte
Um usuário que planeja instalar seu plug-in de controle do código-fonte pode já ter um plug-in de controle do código-fonte existente instalado no computador. O programa de instalação (configuração) para o plug-in que você cria deve determinar se há valores existentes para as chaves do Registro relevantes. Se essas chaves já estiverem definidas, o programa de instalação deverá perguntar ao usuário se deseja registrar seu plug-in como o plug-in de controle de origem padrão e substituir o que já está instalado.
Códigos de resultado de erro e relatórios
O SCC_OK código de retorno para uma função de controle do código-fonte indica que a operação foi bem-sucedida para todos os arquivos. Se a operação falhar, espera-se que retorne o último código de erro encontrado.
A regra para relatórios é que, se ocorrer um erro no IDE, o IDE é responsável por reportá-lo. Se ocorrer um erro no sistema de controle do código-fonte, o plug-in de controle do código-fonte será responsável por relatá-lo. Por exemplo, Nenhum ficheiro está atualmente selecionado seria relatado pelo IDE, enquanto Este ficheiro já está reservado seria relatado pelo plug-in.
A estrutura do contexto
Durante a chamada para o SccInitialize, o chamador passa o ppvContext parâmetro, que é um identificador não inicializado para um void. O plug-in de controlo do código-fonte pode ignorar esse parâmetro ou pode alocar uma estrutura de qualquer tipo e colocar um ponteiro para essa estrutura dentro do ponteiro passado. O IDE não entende essa estrutura, mas passa um ponteiro para essa estrutura em todas as outras chamadas no plug-in. Isso fornece informações valiosas de cache de contexto para o plug-in que ele pode usar para manter informações de estado global que persistem em chamadas de função sem usar variáveis globais. O plug-in é responsável por liberar a estrutura em uma chamada para o SccUninitialize.
Se o plug-in ativar o SCC_CAP_REENTRANT bit no SccInitialize (especificamente, no lpSccCaps parâmetro), várias estruturas de contexto serão usadas para rastrear todos os projetos abertos.
Bitflags e outras opções de comando
Para cada comando, como o SccGet, o IDE pode especificar muitas opções que alteram o comportamento do comando.
A API suporta a configuração de determinadas opções pelo IDE através do fOptions parâmetro. Essas opções são descritas em Bitflags usados por comandos específicos juntamente com os comandos que eles afetam. Em geral, essas são opções para as quais o utilizador não será questionado.
A maioria das opções de configuração configuráveis pelo usuário não são definidas dessa maneira, porque variam muito entre os plug-ins de controle do código-fonte. Portanto, o mecanismo recomendado é um botão Avançado . Por exemplo, na caixa de diálogo Obter , o IDE exibe apenas informações que ele entende, mas também exibe um botão Avançado se o plug-in tiver opções para esse comando. Quando o usuário clica no botão Avançado , o IDE chama SccGetCommandOptions para habilitar o plug-in de controle do código-fonte para solicitar informações ao usuário, como bitflags ou uma data/hora. O plug-in retorna essas informações em uma estrutura que é passada de volta durante o SccGet comando.