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 unterschiedlichen Isolations- und Sicherheitsstufen 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 |
---|---|
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. |
|
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. |
|
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. |
|
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);