Fonction SccCreateSubProject
Cette fonction crée un sous-projet portant le nom donné sous un projet parent existant spécifié par l’argument lpParentProjPath
.
Syntaxe
SCCRTN SccCreateSubProject(
LPVOID pContext,
HWND hWnd,
LPSTR lpUser,
LPCSTR lpParentProjPath,
LPCSTR lpSubProjName,
LPSTR lpAuxProjPath,
LPSTR lpSubProjPath
);
Paramètres
pContext
[in] Pointeur de contexte du plug-in de contrôle de code source.
hWnd
[in] Handle vers la fenêtre IDE que le plug-in de contrôle de code source peut utiliser comme parent pour toutes les boîtes de dialogue qu’il fournit.
lpUser
[in, out] Nom d’utilisateur (jusqu’à SCC_USER_SIZE, y compris le terminateur NULL).
lpParentProjPath
[in] Chaîne identifiant le chemin d’accès du projet parent (jusqu’à SCC_PRJPATH_SIZE, y compris le terminateur NULL).
lpSubProjName
[in] Nom de sous-projet suggéré (jusqu’à SCC_PRJPATH_SIZE, y compris le terminateur NULL).
lpAuxProjPath
[in, out] Chaîne auxiliaire identifiant le projet (jusqu’à SCC_PRJPATH_SIZE, y compris le terminateur NULL).
lpSubProjPath
[in, out] Chaîne de sortie identifiant le chemin d’accès du sous-projet (jusqu’à SCC_PRJPATH_SIZE, y compris le terminateur NULL).
Valeur retournée
L’implémentation du plug-in de contrôle de code source de cette fonction est censée retourner l’une des valeurs suivantes :
Valeur | Description |
---|---|
SCC_OK | Le sous-projet a été créé avec succès. |
SCC_E_INITIALIZEFAILED | Impossible d’initialiser le projet parent. |
SCC_E_INVALIDUSER | L’utilisateur n’a pas pu se connecter au système de contrôle de code source. |
SCC_E_COULDNOTCREATEPROJECT | Impossible de créer un sous-projet. |
SCC_E_PROJSYNTAXERR | Syntaxe de projet non valide. |
SCC_E_UNKNOWNPROJECT | Le projet parent est inconnu du plug-in de contrôle de code source. |
SCC_E_INVALIDFILEPATH | Chemin d’accès de fichier non valide ou inutilisable. |
SCC_E_NOTAUTHORIZED | L’utilisateur n’est pas autorisé à effectuer cette opération. |
SCC_E_ACCESSFAILURE | Il y a eu un problème d’accès au système de contrôle de code source, probablement en raison de problèmes de réseau ou de contention. Une nouvelle tentative est recommandée. |
SCC_E_CONNECTIONFAILURE | Un problème de connexion de plug-in de contrôle de code source s’est produit. |
SCC_E_NONSPECIFICERROR SCC_E_UNKNOWNERROR |
Échec non spécifique. |
Notes
Si un sous-projet portant le nom existe déjà, la fonction peut modifier le nom par défaut pour en créer un unique, par exemple en ajoutant « _number> » à celui-ci<. L’appelant doit être prêt à accepter les modifications apportées à lpUser
, lpSubProjPath
et lpAuxProjPath
. Les lpSubProjPath
arguments et lpAuxProjPath
les arguments sont ensuite utilisés dans un appel au SccOpenProject. Ils ne doivent pas être modifiés par l’appelant lors du retour. Ces chaînes permettent au plug-in de contrôle de code source de suivre les informations qu’il doit associer à un projet. L’IDE de l’appelant n’affiche pas ces deux paramètres lors du retour, car le plug-in peut utiliser une chaîne mise en forme qui peut ne pas convenir à l’affichage. La fonction retourne un code de réussite ou d’échec et, si elle réussit, remplit la variable lpSubProjPath
avec le chemin d’accès complet du projet au nouveau projet.
Cette fonction est similaire à SccGetProjPath, sauf qu’elle crée silencieusement un projet plutôt que d’inviter l’utilisateur à en sélectionner un. Lorsque la SccCreateSubProject
fonction est appelée, lpParentProjName
et lpAuxProjPath
n’est pas vide et correspond à un projet valide. Ces chaînes sont généralement reçues par l’IDE à partir d’un appel précédent à la SccGetProjPath
fonction ou sccGetParentProjectPath.
L’argument lpUser
est le nom d’utilisateur. L’IDE passe le même nom d’utilisateur qu’il a reçu SccGetProjPath
précédemment, et le plug-in de contrôle de code source doit utiliser le nom comme valeur par défaut. Si l’utilisateur dispose déjà d’une connexion ouverte avec le plug-in, le plug-in doit essayer d’éliminer les invites pour vous assurer que la fonction fonctionne en mode silencieux. Toutefois, si la connexion échoue, le plug-in doit inviter l’utilisateur à entrer une connexion et, lorsqu’il reçoit une connexion valide, transmettez le nom.lpUser
Étant donné que le plug-in peut modifier cette chaîne, l’IDE alloue toujours une mémoire tampon de taille (SCC_USER_LEN+1 ou SCC_USER_SIZE, qui inclut de l’espace pour le point de terminaison Null). Si la chaîne est modifiée, la nouvelle chaîne doit être un nom de connexion valide (au moins aussi valide que l’ancienne chaîne).
Notes techniques pour SccCreateSubProject et SccGetParentProjectPath
L’ajout de solutions et de projets au contrôle de code source a été simplifié dans Visual Studio pour réduire le nombre de fois où un utilisateur est invité à sélectionner des emplacements dans le système de contrôle de code source. Ces modifications sont activées par Visual Studio si un plug-in de contrôle de code source prend en charge les deux nouvelles fonctions et SccCreateSubProject
SccGetParentProjectPath
. Toutefois, l’entrée de Registre suivante peut être utilisée pour désactiver ces modifications et revenir au comportement précédent de Visual Studio (API de contrôle de code source version 1.1) :
[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\SourceControl] « DoNotCreateSolutionRootFolderInSourceControl"=dword :00000001
Si cette entrée de Registre n’existe pas ou est définie sur dword :000000000, Visual Studio tente d’utiliser les nouvelles fonctions et SccCreateSubProject
SccGetParentProjectPath
.
Si l’entrée de Registre est définie sur dword :00000001, Visual Studio n’essaie pas d’utiliser ces nouvelles fonctions et les opérations d’ajout au contrôle de code source fonctionnent comme dans les versions antérieures de Visual Studio.