Partilhar via


Práticas recomendadas para implementar um plug-in de controle de origem

Os seguintes detalhes técnicos podem ajudá-lo a implementar de forma confiável um plug-in de controle de origem 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 de origem retorna cadeias de caracteres e outros itens nos buffers alocado pelo chamador. Exceções são observadas nas descrições das funções específicas quando eles ocorrerem.

Matrizes de nomes de arquivo

Quando uma matriz de arquivos é passada, não será passado como uma matriz contígua de nomes de arquivo. Ele é passado como uma matriz de ponteiros para nomes de arquivo. Por exemplo, na Função SccGet, os nomes de arquivo são passados pela lpFileNames parâmetro, onde lpFileNames é, na verdade, um ponteiro para uma char **. lpFileNames[0] é um ponteiro para o primeiro nome, lpFileNames[1] é um ponteiro para o nome da segunda e assim por diante.

Modelo grande

Todos os ponteiros são de 32 bits, mesmo em sistemas operacionais de 16 bits.

Caminhos totalmente qualificados

Onde os nomes de arquivos ou diretórios são especificados como argumentos, eles devem ser caminhos totalmente qualificados ou caminhos UNC, sem as barras invertidas final. É responsabilidade do controle de fonte de plug-in para traduzir esses caminhos relativos, se isto é um requisito do sistema de controle de origem subjacente.

Especifique um caminho totalmente qualificado para a DLL registrada

O IDE não carrega as DLLs de caminhos relativos (por exemplo. \NewProvider.dll). Um caminho completo da DLL deve ser especificado (por exemplo, C:\Providers\NewProvider.dll). Esse requisito reforça a segurança do IDE, evitando o carregamento de DLLs de controle de origem não autorizada ou representado.

Procurar um plug-in de VSSCI existente quando você instala o plug-in de controle de origem

Um usuário que planeja instalar o plug-in de controle de origem talvez já tenha um existente controle de origem plug-in instalado no computador. O programa de instalação do plug-in que você cria deve determinar se há valores existentes para as chaves do Registro relevantes. Se essas chaves já estiverem definidas, seu programa de instalação deve perguntar ao usuário se registrem seu plug-in como o plug-in de controle de fonte padrão e substituir o que já está instalado.

Os códigos de resultado de erro e a emissão de relatórios

O SCC_OK retornar o código para uma função de controle de origem indica que a operação foi bem-sucedida para todos os arquivos. Se a operação falhar, ele deve retornar o último código de erro encontrado.

A regra para emissão de relatórios é que, se ocorrer um erro no IDE, o IDE é responsável por relatar a ele. Se ocorrer um erro no sistema de controle de origem, o plug-in de controle de origem é responsável por relatar a ele. Por exemplo, "nenhum arquivo for selecionado no momento" seria relatado pelo IDE, enquanto que "Este arquivo já foi extraído" seria relatado pelo plug-in.

A estrutura de contexto

Durante a chamada para o Função SccInitialize, os passos de chamador a ppvContext parâmetro, que é um identificador não inicializado para uma lacuna. O plug-in de controle de origem pode ignorar esse parâmetro ou ele pode alocar uma estrutura de qualquer tipo e colocam um ponteiro para essa estrutura no ponteiro transmitido. O IDE não compreende essa estrutura, mas ele passa um ponteiro para essa estrutura em todas as outras chamadas no plug-in. Fornece informações de cache de contexto valiosas para o plug-in que ele pode usar para manter as informações de estado global persistir ao longo de chamadas de função sem o uso de variáveis globais. O plug-in é responsável pela liberação da estrutura em uma chamada para o Função SccUninitialize.

Se os conjuntos de plug-in do SCC_CAP_REENTRANT bit na Função SccInitialize (especificamente, no lpSccCaps parâmetro), várias estruturas de contexto são usadas para controlar todos os projetos que estão abertos.

Os sinalizadores de bit e outras opções de comando

Para cada comando, como o Função SccGet, o IDE pode especificar várias opções que alteram o comportamento do comando.

A API oferece suporte a configuração de determinadas opções pelo IDE por meio do fOptions parâmetro. Essas opções são descritas na Sinalizadores de bit usado por comandos específicos juntamente com os comandos que elas afetam. Em geral, esses são opções para o qual o usuário não será solicitado.

Mais opções de configuração configuráveis pelo usuário não são definidas dessa maneira, pois eles variam muito entre plug-ins de controle de origem. Portanto, o mecanismo recomendado é um Advanced botão. Por exemplo, no obter caixa de diálogo, o IDE exibe apenas as informações que ele entende, mas também exibe um Advanced botão se o plug-in tem opções desse comando. Quando o usuário clica o Advanced botão, as chamadas do IDE a Função SccGetCommandOptions para habilitar o plug-in para solicitar ao usuário para obter informações, como os sinalizadores de bit ou uma data/hora de controle de origem. O plug-in retorna essa informação em uma estrutura que é passada de volta durante o SccGet comando.

Consulte também

Outros recursos

Plug-ins de controle de origem

Criar um controle de origem plug-in