Architecture de VSPackage de contrôle de code source

Un package de contrôle de code source est un VSPackage qui utilise des services fournis par l’IDE Visual Studio. En retour, un package de contrôle de code source fournit ses fonctionnalités en tant que service de contrôle de code source. En outre, un package de contrôle de code source est une alternative plus polyvalente qu’un plug-in de contrôle de code source pour l’intégration du contrôle de code source dans Visual Studio.

Un plug-in de contrôle de code source qui implémente l’API plug-in de contrôle de code source respecte un contrat strict. Par exemple, un plug-in ne peut pas remplacer l’interface utilisateur (UI) Visual Studio par défaut. En outre, l’API plug-in de contrôle de code source n’active pas un plug-in pour implémenter son propre modèle de contrôle de code source. Toutefois, un package de contrôle de code source dépasse ces deux limitations. Un package de contrôle de code source a un contrôle total sur l’expérience de contrôle de code source d’un utilisateur Visual Studio. En outre, un package de contrôle de code source peut utiliser son propre modèle de contrôle de code source et sa logique, et il peut définir toutes les interfaces utilisateur associées au contrôle de code source.

Composants du package de contrôle de code source

Comme illustré dans le diagramme d’architecture, un composant Visual Studio nommé le stub de contrôle de code source est un VSPackage qui intègre un package de contrôle de code source avec Visual Studio.

Le stub du contrôle de code source gère les tâches suivantes.

  • Fournit l’interface utilisateur courante requise pour l’inscription du package de contrôle de code source.

  • Charge un package de contrôle de code source.

  • Définit un package de contrôle de code source comme actif/inactif.

    Le stub de contrôle de code source recherche le service actif pour le package de contrôle de code source et route tous les appels de service entrants de l’IDE vers ce package.

    Le package de l’adaptateur de contrôle de code source est un package de contrôle de code source spécial fourni par Visual Studio. Ce package est le composant central pour prendre en charge les plug-ins de contrôle de code source basés sur l’API plug-in de contrôle de code source. Lorsqu’un plug-in de contrôle de code source est le plug-in actif, le stub de contrôle de code source envoie ses événements au package de l’adaptateur de contrôle de code source. À son tour, le package de l’adaptateur de contrôle de code source communique avec le plug-in de contrôle de code source à l’aide de l’API plug-in de contrôle de code source et fournit également une interface utilisateur par défaut commune à tous les plug-ins de contrôle de code source.

    Lorsqu’un package de contrôle de code source est le package actif, en revanche, le stub de contrôle de code source communique directement avec le package à l’aide des interfaces du package de contrôle de code source du Kit de développement logiciel (SDK) Visual Studio. Le package de contrôle de code source est responsable de l’hébergement de son propre interface utilisateur de contrôle de code source.

    Source Control Architecture graphic

    Pour un package de contrôle de code source, Visual Studio ne fournit pas de code de contrôle de code source ni d’API pour l’intégration. Contrairement à l’approche décrite dans La création d’un plug-in de contrôle de code source où le plug-in de contrôle de code source doit implémenter un ensemble rigide de fonctions et de rappels.

    Comme n’importe quel VSPackage, un package de contrôle de code source est un objet COM qui peut être créé à l’aide CoCreateInstancede . VsPackage se met à la disposition de l’IDE Visual Studio en implémentant IVsPackage. Lorsqu’une instance a été créée, un VSPackage reçoit un pointeur de site et une IServiceProvider interface qui fournit l’accès VSPackage aux services et interfaces disponibles dans l’IDE.

    L’écriture d’un package de contrôle de code source basé sur VSPackage nécessite une expertise de programmation plus avancée que l’écriture d’un plug-in basé sur l’API de contrôle de code source.