Ermitteln von Add-Ins

Hostanwendungen können Add-Ins ermitteln, die ihnen zur Verfügung stehen. Der Ermittlungsvorgang besteht aus zwei Aufgaben:

  • Registrieren von Informationen über alle Add-Ins und Pipelinesegmente in Cachedateien.

  • Suchen von Add-Ins für eine bestimmte Hostansicht des Add-Ins, indem der Cache durchsucht wird.

Je nach Anwendung ermittelt der Host Add-Ins üblicherweise während des Starts, beim Laden eines Dokuments oder nach einer Benutzeranforderung. Die AddInStore-Klasse stellt Methoden für diese Aufgaben bereit.

Sobald Sie die Add-Ins ermittelt haben, können Sie sie aktivieren, wie in Add-In-Aktivierung und Gewusst wie: Aktivieren von Add-Ins mit unterschiedlicher Isolation und Sicherheit beschrieben.

Registrieren von Add-Ins und Pipelinesegmenten

Bei der Registrierung werden gültige Add-Ins bestimmt, indem die Attribute der Pipelinesegmente überprüft und Informationen zu deren Pipelines erstellt werden. Weitere Informationen über das Anwenden von Attributen auf Pipelinesegmente und über das Erstellen der Pipelineverzeichnisstruktur finden Sie unter Anforderungen für die Pipelineentwicklung. Die Pipelineverzeichnisstruktur kann eine oder mehrere Pipelines enthalten. Diese Informationen werden in zwei Dateien im Pipelinestammverzeichnis zwischengespeichert: PipelineSegments.store und AddIns.store.

Für die zur Registrierung verwendeten Methoden ist eine Zeichenfolgenvariable erforderlich, die den Stammpfad der Pipeline oder einen Wert aus der PipelineStoreLocation-Enumeration darstellt. Durch die Methoden werden neue Cachedateien erstellt, sofern sie nicht bereits vorhanden sind.

Die Cachedateien werden von den Methoden entweder neu erstellt oder aktualisiert, wie in der folgenden Tabelle beschrieben.

Registrierungsmethode

Beschreibung

Rebuild

Erstellt den Pipelinesegmentcache neu und nimmt neue Hinzufügungen auf.

Außerdem erstellt diese Methode den Add-In-Cache neu, wenn sich die Add-Ins innerhalb der Pipelineverzeichnisstruktur befinden.

RebuildAddIns

Erstellt den Add-In-Cache für Add-Ins an einem bestimmten Speicherort neu. Rufen Sie diese Methode auf, wenn sich die Add-Ins außerhalb der Pipelineverzeichnisstruktur befinden.

Update

Aktualisiert den Pipelinesegmentcache anhand beliebiger Hinzufügungen.

Außerdem aktualisiert diese Methode den Add-In-Cache, wenn sich die Add-Ins innerhalb der Pipelineverzeichnisstruktur befinden.

Falls keine neuen Pipelinesegmente oder Add-Ins vorhanden sind, überprüft diese Methode einfach den Cache.

UpdateAddIns

Aktualisiert den Add-In-Cache für neue Add-Ins an einem festgelegten Speicherort. Rufen Sie diese Methode auf, wenn sich die Add-Ins außerhalb der Pipelineverzeichnisstruktur befinden.

Wenn keine neuen Add-Ins installiert wurden, überprüft diese Methode einfach den Cache.

Die Rebuild-Methode und die Update-Methodenüberladungen verwenden als Parameter entweder das Stammverzeichnis der Pipelineverzeichnisstruktur oder einen Wert aus der PipelineStoreLocation-Enumeration.

Diese Methoden verwenden reflektionsbezogene Ladevorgänge, um Informationen abzurufen. Der Add-In-Code bzw. der Code des Pipelinesegments wird nicht ausgeführt. Zwischengespeicherte Informationen werden mit einem Timestamp versehen, der während Updates nicht neu berechnet wird.

Cachedateien

Durch den Aufruf der Registrierungsmethoden werden zwei Cachedateien erstellt:

  • PipelineSegments.store

    Diese Datei befindet sich im Stammverzeichnis der Pipelineverzeichnisstruktur.

  • AddIns.store

    Diese Datei befindet sich im Verzeichnis, das ein oder mehrere Add-In-Unterverzeichnisse enthält. Dieses Verzeichnis kann sich innerhalb der Pipelineverzeichnisstruktur oder an einem anderen Speicherort befinden.

Suchen von Add-Ins

Die FindAddIns-Methode überprüft die Speicherdateien auf alle Add-Ins, die einer festgelegten Hostansicht des Add-Ins entsprechen. Die Hostansicht des Add-Ins entspricht der abstrakten Basisklasse oder Schnittstelle, die die von Host und Add-In verwendeten Methoden beschreibt, wie im Vertrag angegeben. Für die Suche nach den durch die Registrierungsmethoden erstellten Cachedateien verwendet diese Methode als Parameter entweder das Stammverzeichnis der Pipelineverzeichnisstruktur oder einen Wert aus der PipelineStoreLocation-Enumeration.

Hinweis

FindAddIns sollte nur aufgerufen werden, wenn sichergestellt ist, dass die Speicherdateien erstellt und aktualisiert wurden, damit alle verfügbaren Add-Ins gefunden werden können.

Die FindAddIns-Methode gibt eine IList<T>-Auflistung mit Token zurück, die alle verfügbaren Add-Ins beschreiben, die über eine gültige Pipeline verfügen. Jedes Token wird durch die AddInToken-Klasse beschrieben.

Jedes Token enthält die folgenden Informationen zu einem Add-In, die aus dem AddInAttribute-Attribut der Klasse des Add-Ins abgerufen werden:

  • Name

  • Beschreibung

  • Herausgeber

  • Version

In den meisten Fällen enthält die IList<T>-Auflistung nur ein Token. Sind mehrere Token vorhanden, kann die Hostanwendung diese Informationen verwenden, um den Benutzer bei der Auswahl des zu aktivierenden Add-Ins zu unterstützen. Weitere Informationen zum Aktivieren finden Sie unter Add-In-Aktivierung.

Um Add-Ins außerhalb der Pipelineverzeichnisstruktur zu suchen, müssen Sie den AddInPaths-Parameter einschließen. Da dieser Parameter ein Zeichenfolgenarray ist, können Sie mehrere Speicherorte angeben.

Darüber hinaus finden Sie ein bestimmtes Add-In mit der FindAddIn-Methode, die eine Auflistung mit einem Token zurückgibt.

Beispiel

Im folgenden Beispiel wird gezeigt, wie die Cachedateien erstellt und Add-Ins gesucht werden.

' 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);

Siehe auch

Konzepte

Add-In-Aktivierung

Anforderungen für die Pipelineentwicklung

Verträge, Ansichten und Adapter

Weitere Ressourcen

Add-Ins und Erweiterbarkeit