Share via


Découverte de compléments

Des applications hôte peuvent découvrir des compléments qui sont à leur disposition. La découverte comprend deux tâches :

  • l'enregistrement d'informations concernant tous les compléments et segments de pipeline dans des fichiers cache ;

  • la recherche de compléments pour une vue hôte spécifiée du complément en explorant le cache.

Selon l'application, l'hôte découvre habituellement des compléments au démarrage, lorsqu'un document est chargé ou à la demande d'un utilisateur. La classe AddInStore fournit des méthodes permettant d'effectuer ces tâches.

Une fois que vous avez découvert les compléments, vous pouvez les activer comme cela est décrit dans Activation de compléments et Comment : activer des compléments avec différents niveaux d'isolement et de sécurité.

Inscription de compléments et des segments de pipeline

L'inscription implique la détermination de compléments valides en vérifiant les attributs des segments de pipeline et en générant des informations sur leurs pipelines. Pour plus d'informations sur l'application d'attributs aux segments de pipeline et la création de la structure de répertoires du pipeline, consultez Spécifications du développement de pipelines. La structure de répertoires du pipeline peut contenir un ou plusieurs pipelines. Ces informations sont mises en cache dans deux fichiers du répertoire racine du pipeline : PipelineSegments.store et AddIns.store.

Les méthodes utilisées pour l'inscription prennent une variable chaîne qui représente le chemin d'accès racine du pipeline ou une valeur de l'énumération PipelineStoreLocation. Elles créent des fichiers cache s'ils n'ont pas été créés précédemment.

Les méthodes régénèrent ou mettent à jour les fichiers cache, comme le décrit le tableau suivant.

Méthode d'inscription

Description

Rebuild

Régénère le cache des segments de pipeline et inclut les nouveaux ajouts.

Cette méthode régénère également le cache des compléments si les compléments se trouvent dans la structure de répertoires du pipeline.

RebuildAddIns

Régénère le cache des compléments pour les compléments se trouvant à un emplacement spécifié. Appelez cette méthode si vos compléments se trouvent à l'extérieur de la structure de répertoires du pipeline.

Update

Met à jour les segments de pipeline en y incluant les ajouts éventuels.

Cette méthode met également à jour le cache des compléments si les compléments se trouvent dans la structure de répertoires du pipeline.

S'il n'existe aucun nouveau segment de pipeline ou complément, cette méthode valide uniquement le cache.

UpdateAddIns

Met à jour le cache de tous les nouveaux compléments se trouvant à un emplacement spécifié. Appelez cette méthode si vos compléments se trouvent à l'extérieur de la structure de répertoires du pipeline.

Si aucun nouveau complément n'est installé, cette méthode valide simplement le cache.

Les surcharges de méthode Rebuild et Update prennent comme paramètre le répertoire racine de la structure de répertoires du pipeline ou une valeur de l'énumération PipelineStoreLocation.

Ces méthodes utilisent le chargement de réflexion uniquement pour obtenir des informations et n'exécutent pas le code du complément ou le code du segment de pipeline. Les informations mises en cache sont horodatées afin de ne pas être recalculées pendant les mises à jour.

Fichiers cache

L'appel des méthodes d'inscription produit deux fichiers cache :

  • PipelineSegments.store

    Ce fichier se trouve dans le répertoire racine de la structure de répertoires du pipeline.

  • AddIns.store

    Ce fichier se trouve dans le répertoire qui contient un ou plusieurs sous-répertoires de compléments. Ce répertoire peut se trouver dans la structure de répertoires du pipeline ou à un autre emplacement.

Recherche de compléments

La méthode FindAddIns examine les fichiers magasin à la recherche de tous les compléments qui correspondent à une vue hôte spécifiée du complément. La vue hôte du complément est la classe de base abstraite ou l'interface qui décrit les méthodes utilisées par l'hôte et le complément, comme spécifié dans le contrat. Pour trouver les fichiers cache créés par les méthodes d'inscription, cette méthode prend comme paramètre le répertoire racine de la structure de répertoires du pipeline ou une valeur de l'énumération PipelineStoreLocation.

RemarqueRemarque

Appelez FindAddIns uniquement après vous être assuré que les fichiers magasin sont construits et à jour afin que tous les compléments disponibles puissent être trouvés.

La méthode FindAddIns retourne une collection de jetons IList<T> qui décrivent chaque complément disponible ayant un pipeline valide. Chaque jeton est décrit par la classe AddInToken.

Chaque jeton détient les informations suivantes concernant un complément qu'il a obtenues via l'attribut AddInAttribute sur la classe du complément :

  • Nom

  • Description

  • Éditeur

  • Version

Dans la plupart des cas, il n'existe qu'un jeton dans la collection IList<T>. S'il y a plusieurs jetons, l'application hôte peut utiliser ces informations pour aider l'utilisateur à sélectionner le complément à activer. Pour plus d'informations sur l'activation, consultez Activation de compléments.

Pour rechercher des compléments à l'extérieur de la structure de répertoires du pipeline, vous devez inclure le paramètre AddInPaths. Puisque ce paramètre est un tableau de chaînes, vous pouvez spécifier plusieurs emplacements.

Vous pouvez également rechercher un complément spécifique avec la méthode FindAddIn qui retourne une collection d'un jeton.

Exemple

L'exemple suivant explique comment générer les fichiers cache et trouver des compléments.

' Get the path for the pipeline root.  
' Assumes that the current directory is the
' pipline directory structure root directory.
Dim pipeRoot As String = Environment.CurrentDirectory
' Update the cache files of the
' pipeline segments and add-ins.
Dim warnings() As String = AddInStore.Update(pipeRoot)
For Each warning As String In warnings
    Console.WriteLine(warning)
Next

' Search for add-ins of type Calculator (the host view of the add-in)
' specifying the host's application base, instead of a path,
' for the FindAddIns method.
Dim tokens As Collection(Of AddInToken) = _
    AddInStore.FindAddIns(GetType(Calculator), PipelineStoreLocation.ApplicationBase)
// Get path for the pipeline root.
// Assumes that the current directory is the  
// pipeline directory structure root directory. 
String pipeRoot = Environment.CurrentDirectory;

// Update the cache files of the
// pipeline segments and add-ins.
string[] warnings = AddInStore.Update(pipeRoot);

foreach (string warning in warnings)
{
    Console.WriteLine(warning);
}

// Search for add-ins of type Calculator (the host view of the add-in)
// specifying the host's application base, instead of a path,
// for the FindAddIns method.

Collection<AddInToken> tokens = 
            AddInStore.FindAddIns(typeof(Calculator),PipelineStoreLocation.ApplicationBase);

Voir aussi

Concepts

Compléments et extensibilité

Activation de compléments

Spécifications du développement de pipelines

Contrats, vues et adaptateurs