Installer un plug-in de contrôle de code source
La création d’un plug-in de contrôle de code source implique trois étapes :
Créez une DLL avec les fonctions définies dans la section de référence de l’API plug-in de contrôle de code source de cette documentation.
Implémentez les fonctions définies par l’API de contrôle de code source. Lorsque Visual Studio l’appelle, rendez les interfaces et les boîtes de dialogue disponibles à partir du plug-in.
Inscrivez la DLL en effectuant des entrées de Registre appropriées.
Intégration à Visual Studio
Visual Studio prend en charge les plug-ins de contrôle de code source qui sont conformes à l’API plug-in de contrôle de code source.
Inscrire le plug-in de contrôle de code source
Avant qu’un environnement de développement intégré en cours d’exécution puisse appeler le système de contrôle de code source, il doit d’abord trouver la DLL de plug-in de contrôle de code source qui exporte l’API.
Pour inscrire la DLL de plug-in de contrôle de code source
Ajoutez deux entrées sous la clé HKEY_LOCAL_MACHINE dans la sous-clé SOFTWARE qui spécifie la sous-clé nom de votre société suivie de votre sous-clé nom de produit. Le modèle est HKEY_LOCAL_MACHINE\SOFTWARE\<company name>\<product name>\<entry = >value. Les deux entrées sont toujours appelées SCCServerName et SCCServerPath. Chaque chaîne est une chaîne régulière.
Par exemple, si le nom de votre société est Microsoft et que votre produit de contrôle de code source est nommé Source Coffre, ce chemin de Registre est HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Source Coffre. Dans cette sous-clé, la première entrée, SCCServerName, est une chaîne lisible par l’utilisateur qui nomme votre produit. La deuxième entrée, SCCServerPath, est le chemin complet de la DLL de plug-in de contrôle de code source à laquelle l’IDE doit se connecter. Les exemples d’entrées de Registre suivants sont les suivants :
Exemple d’entrée de Registre Exemple de valeur HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Source Coffre\SCCServerName Microsoft Visual SourceSafe HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Source Coffre\SCCServerPath c :\vss\win32\ssscc.dll Remarque
SCCServerPath est le chemin complet du plug-in Source Coffre. Votre plug-in de contrôle de code source utilise différents noms d’entreprise et de produits, mais les mêmes chemins d’accès d’entrée de Registre.
Les entrées de Registre facultatives suivantes peuvent être utilisées pour modifier le comportement de votre plug-in de contrôle de code source. Ces entrées se présentent dans la même sous-clé que SccServerName et SccServerPath.
L’entrée HideInVisualStudioregistry peut être utilisée si vous ne souhaitez pas que votre plug-in de contrôle de code source apparaisse dans la liste de sélection de plug-in de Visual Studio. Cette entrée affecte également le basculement automatique vers le plug-in de contrôle de code source. L’une des utilisations possibles pour cette entrée est que vous fournissez un package de contrôle de code source qui remplace votre plug-in de contrôle de code source, mais que vous souhaitez faciliter la migration de l’utilisateur à l’aide du plug-in de contrôle de code source vers le package de contrôle de code source. Lorsque le package de contrôle de code source est installé, il définit cette entrée de Registre, qui masque le plug-in.
HideInVisualStudio est une valeur DWORD et a la valeur 1 pour masquer le plug-in ou 0 pour afficher le plug-in. Si l’entrée de Registre n’apparaît pas, le comportement par défaut consiste à afficher le plug-in.
L’entrée de Registre DisableSccManager peut être utilisée pour désactiver ou masquer l’option de menu Lancer <le serveur> de contrôle de code source qui apparaît normalement sous le sous-menu Contrôle de code source de fichier>. La sélection de cette option de menu appelle la fonction SccRunScc . Votre plug-in de contrôle de code source peut ne pas prendre en charge un programme externe et, par conséquent, vous pouvez désactiver ou même masquer l’option de menu Lancer .
DisableSccManager est une valeur DWORD définie sur 0 pour activer l’option lancer <le serveur> de contrôle de code source, définir sur 1 pour désactiver l’option de menu et définir sur 2 pour masquer l’option de menu. Si cette entrée de Registre n’apparaît pas, le comportement par défaut consiste à afficher l’option de menu.
Exemple d’entrée de Registre Exemple de valeur HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Source Coffre\HideInVisualStudio 1 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Source Coffre\DisableSccManager 1 Ajoutez la sous-clé SourceCodeControlProvider, sous la clé HKEY_LOCAL_MACHINE dans la sous-clé SOFTWARE.
Sous cette sous-clé, l’entrée de Registre ProviderRegKey est définie sur une chaîne qui représente la sous-clé que vous avez placée dans le Registre à l’étape 1. Le modèle est HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider\ProviderRegKey = SOFTWARE\<company name\<product name.>>
Voici un exemple de contenu pour cette sous-clé.
Entrée de Registre Exemple de valeur HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider\ProviderRegKey SOFTWARE\Microsoft\Source Coffre Remarque
Votre plug-in de contrôle de code source utilise les mêmes noms de sous-clé et d’entrée, mais la valeur sera différente.
Créez une sous-clé nommée InstalledSCCProviders sous la sous-clé SourceCodeControlProvider , puis placez une entrée sous cette sous-clé.
Le nom de cette entrée est le nom lisible par l’utilisateur du fournisseur (identique à la valeur spécifiée pour l’entrée SCCServerName) et la valeur est, une fois de plus, la sous-clé créée à l’étape 1. Le modèle est HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider\InstalledSCCProviders\<display name> = SOFTWARE\<company name>\<product name.>
Par exemple :
Exemple d’entrée de Registre Exemple de valeur HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider\InstalledSCCProviders\Microsoft Visual Source Coffre SOFTWARE\Microsoft\Source Coffre Remarque
Il peut y avoir plusieurs plug-ins de contrôle de code source inscrits de cette façon. C’est ainsi que Visual Studio trouve tous les plug-ins basés sur l’API de contrôle de code source installés.
Comment un IDE localise la DLL
L’IDE Visual Studio a deux façons de trouver la DLL de plug-in de contrôle de code source :
Recherchez le plug-in de contrôle de code source par défaut et connectez-vous à celui-ci en mode silencieux.
Recherchez tous les plug-ins de contrôle de code source inscrits, à partir desquels l’utilisateur en choisit un.
Pour localiser la DLL de la première façon, l’IDE se trouve sous la sous-clé HKEY_LOCAL_MACHINE\Software\SourceCodeControlProvider pour l’entrée ProviderRegKey. La valeur de cette entrée pointe vers une autre sous-clé. L’IDE recherche ensuite une entrée nommée SccServerPath dans cette deuxième sous-clé sous HKEY_LOCAL_MACHINE. La valeur de cette entrée pointe l’IDE vers la DLL.
Remarque
L’IDE ne charge pas les DLL à partir de chemins relatifs (par exemple, .\NewProvider.DLL). Un chemin d’accès complet à la DLL doit être spécifié (par exemple, c :\Providers\NewProvider.DLL). Cela renforce la sécurité de l’IDE en empêchant le chargement de DLL de plug-in non autorisées ou emprunt d’identité.
Pour localiser la DLL de la deuxième façon, l’IDE se trouve sous la sous-clé HKEY_LOCAL_MACHINE\Software\SourceCodeControlProvider\InstalledSCCProviders pour toutes les entrées. Chaque entrée a un nom et une valeur. L’IDE affiche une liste de ces noms à l’utilisateur. Lorsque l’utilisateur choisit un nom, l’IDE recherche la valeur du nom sélectionné qui pointe vers une sous-clé. L’IDE recherche une entrée nommée SccServerPath dans cette sous-clé sous HKEY_LOCAL_MACHINE. La valeur de cette entrée pointe l’IDE vers la DLL correcte.
Un plug-in de contrôle de code source doit prendre en charge les deux méthodes de recherche de la DLL et, par conséquent, définit ProviderRegKey, en remplaçant tout paramètre précédent. Plus important encore, il doit s’ajouter à la liste des InstalledSccProviders afin que l’utilisateur puisse avoir le choix entre le plug-in de contrôle de code source à utiliser.
Remarque
Étant donné que la clé HKEY_LOCAL_MACHINE est utilisée, un seul plug-in de contrôle de code source peut être inscrit comme plug-in de contrôle de code source par défaut sur un ordinateur donné (toutefois, Visual Studio permet aux utilisateurs de déterminer le plug-in de contrôle de code source qu’ils souhaitent utiliser réellement pour une solution particulière). Pendant votre processus d’installation, case activée pour voir si un plug-in de contrôle de code source est déjà défini ; si c’est le cas, demandez à l’utilisateur s’il doit définir le nouveau plug-in de contrôle de code source en cours d’installation comme valeur par défaut. Lors de la désinstallation, ne supprimez pas d’autres sous-clés de Registre communes à tous les plug-ins de contrôle de code source dans HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider ; supprimez uniquement votre sous-clé SCC particulière.
Comment l’IDE détecte la prise en charge de la version 1.2/1.3
Comment Visual Studio détecte-t-il si un plug-in prend en charge les fonctionnalités d’API de contrôle de code source version 1.2 et 1.3 ? Pour déclarer une fonctionnalité avancée, le plug-in de contrôle de code source doit implémenter la fonction correspondante :
Tout d’abord, Visual Studio case activée la valeur retournée en appelant SccGetVersion. Elle doit être supérieure ou égale à 1,2.
Ensuite, Visual Studio détermine si la nouvelle fonctionnalité particulière est prise en charge en examinant l’argument lpSccCaps
sur SccInitialize.
Si ces deux conditions sont remplies, les nouvelles fonctions prises en charge dans les versions 1.2 et 1.3 peuvent être appelées.