Função SccCreateSubProject
Essa função cria um subprojeto com o nome fornecido em um projeto pai existente especificado pelo lpParentProjPath
argumento.
Sintaxe
SCCRTN SccCreateSubProject(
LPVOID pContext,
HWND hWnd,
LPSTR lpUser,
LPCSTR lpParentProjPath,
LPCSTR lpSubProjName,
LPSTR lpAuxProjPath,
LPSTR lpSubProjPath
);
Parâmetros
pContext
[em] O ponteiro de contexto do plug-in de controle do código-fonte.
hWnd
[em] Um identificador para a janela do IDE que o plug-in de controle do código-fonte pode usar como pai para qualquer caixa de diálogo fornecida.
Usuário lp
[dentro, fora] O nome de usuário (até SCC_USER_SIZE, incluindo o terminador NULL).
lpParentProjPath
[em] Uma cadeia de caracteres que identifica o caminho do projeto pai (até SCC_PRJPATH_SIZE, incluindo o terminador NULL).
lpSubProjName
[em] O nome do subprojeto sugerido (até SCC_PRJPATH_SIZE, incluindo o terminador NULL).
lpAuxProjPath
[dentro, fora] Cadeia de caracteres auxiliar que identifica o projeto (até SCC_PRJPATH_SIZE, incluindo o terminador NULL).
lpSubProjPath
[dentro, fora] Cadeia de caracteres de saída que identifica o caminho para o subprojeto (até SCC_PRJPATH_SIZE, incluindo o terminador NULL).
Valor retornado
Espera-se que a implementação do plug-in de controle do código-fonte dessa função retorne um dos seguintes valores:
Valor | Descrição |
---|---|
SCC_OK | O subprojeto foi criado com sucesso. |
SCC_E_INITIALIZEFAILED | Não foi possível inicializar o projeto pai. |
SCC_E_INVALIDUSER | O usuário não pôde efetuar login no sistema de controle do código-fonte. |
SCC_E_COULDNOTCREATEPROJECT | O subprojeto não pode ser criado. |
SCC_E_PROJSYNTAXERR | Sintaxe de projeto inválida. |
SCC_E_UNKNOWNPROJECT | O projeto pai é desconhecido para o plug-in de controle do código-fonte. |
SCC_E_INVALIDFILEPATH | Caminho de arquivo inválido ou inutilizável. |
SCC_E_NOTAUTHORIZED | O usuário não tem permissão para executar esta operação. |
SCC_E_ACCESSFAILURE | Houve um problema ao acessar o sistema de controle do código-fonte, provavelmente devido a problemas de rede ou contenção. Recomenda-se uma nova tentativa. |
SCC_E_CONNECTIONFAILURE | Houve um problema de conexão do plug-in de controle do código-fonte. |
SCC_E_NONSPECIFICERROR SCC_E_UNKNOWNERROR |
Falha inespecífica. |
Comentários
Se já existir um subprojeto com o nome, a função poderá alterar o nome padrão para criar um exclusivo, por exemplo, adicionando "_<number>" a ele. O chamador deve estar preparado para aceitar alterações em lpUser
, lpSubProjPath
, e lpAuxProjPath
. Os lpSubProjPath
argumentos and lpAuxProjPath
são usados em uma chamada para o SccOpenProject. Eles não devem ser modificados pelo chamador no retorno. Essas cadeias de caracteres fornecem uma maneira para o plug-in de controle do código-fonte rastrear as informações que ele precisa associar a um projeto. O IDE do chamador não exibirá esses dois parâmetros no retorno, pois o plug-in pode usar uma cadeia de caracteres formatada que pode não ser adequada para exibição. A função retorna um código de êxito ou falha e, se for bem-sucedida, preenche a variável lpSubProjPath
com o caminho completo do projeto para o novo projeto.
Essa função é semelhante ao SccGetProjPath, exceto que ela cria silenciosamente um projeto em vez de solicitar que o usuário selecione um. Quando a SccCreateSubProject
função é chamada, lpParentProjName
e lpAuxProjPath
não estará vazia e corresponderá a um projeto válido. Essas cadeias de caracteres geralmente são recebidas pelo IDE de uma chamada anterior para a SccGetProjPath
função ou o SccGetParentProjectPath.
O lpUser
argumento é o nome do usuário. O IDE passará o mesmo nome de usuário que recebeu anteriormente do SccGetProjPath
, e o plug-in de controle do código-fonte deverá usar o nome como padrão. Se o usuário já tiver uma conexão aberta com o plug-in, o plug-in deverá tentar eliminar todos os prompts para garantir que a função funcione silenciosamente. No entanto, se o login falhar, o plug-in deverá solicitar um login ao usuário e, quando receber um login válido, passar o nome de volta lpUser
. Como o plug-in pode alterar essa string, o IDE sempre alocará um buffer de tamanho (SCC_USER_LEN+1 ou SCC_USER_SIZE, que inclui espaço para o terminador nulo). Se a string for alterada, a nova string deverá ser um nome de logon válido (pelo menos tão válido quanto a string antiga).
Notas técnicas para SccCreateSubProject e SccGetParentProjectPath
A adição de soluções e projetos ao controle do código-fonte foi simplificada no Visual Studio para minimizar o número de vezes que um usuário é solicitado a selecionar locais no sistema de controle do código-fonte. Essas alterações serão ativadas pelo Visual Studio se um plug-in de controle do código-fonte der suporte às novas funções SccCreateSubProject
e SccGetParentProjectPath
. No entanto, a seguinte entrada do Registro pode ser usada para desabilitar essas alterações e reverter para o comportamento anterior do Visual Studio (API do Plug-in de Controle do Código-Fonte Versão 1.1):
[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\SourceControl] "DoNotCreateSolutionRootFolderInSourceControl"=dword:00000001
Se essa entrada do Registro não existir ou estiver definida como dword:00000000, o Visual Studio tentará usar as novas funções SccCreateSubProject
e SccGetParentProjectPath
o .
Se a entrada do Registro estiver definida como dword:00000001, o Visual Studio não tentará usar essas novas funções e as operações de adição ao controle do código-fonte funcionarão como nas versões anteriores do Visual Studio.