Individuazione di componenti aggiuntivi
Le applicazioni host sono in grado di individuare i componenti aggiuntivi disponibili. L'individuazione è costituita da due attività:
Registrazione delle informazioni su tutti i componenti aggiuntivi e tutti i segmenti di pipeline in file di cache.
Individuazione dei componenti aggiuntivi per una visualizzazione host specificata del componente aggiuntivo mediante ricerca nella cache.
A seconda dell'applicazione, in genere l'host individua i componenti aggiuntivi all'avvio, quando viene caricato un documento o in seguito a una richiesta dell'utente. La classe AddInStore fornisce i metodi per l'esecuzione di queste attività.
Dopo aver individuato i componenti aggiuntivi, è possibile attivarli come descritto in Attivazione di componenti aggiuntivi e Procedura: attivare componenti aggiuntivi con livelli diversi di isolamento e di sicurezza.
Registrazione di componenti aggiuntivi e segmenti di pipeline
La registrazione comporta la determinazione dei componenti aggiuntivi validi mediante il controllo degli attributi dei segmenti di pipeline e la costruzione di informazioni sulle rispettive pipeline. Per ulteriori informazioni sull'applicazione di attributi ai segmenti di pipeline e sulla creazione della struttura di directory della pipeline, vedere Requisiti di sviluppo delle pipeline. La struttura di directory della pipeline può contenere una o più pipeline. Queste informazioni vengono memorizzate nella cache in due file della directory radice della pipeline, ovvero PipelineSegments.store e AddIns.store.
I metodi utilizzati per la registrazione accettano una variabile di stringa che rappresenta il percorso radice della pipeline oppure un valore dell'enumerazione PipelineStoreLocation. Essi creano nuovi file di cache se tali file non sono stati creati in precedenza.
I metodi ricompilano o aggiornano i file di cache, come descritto nella tabella seguente.
Metodo di registrazione |
Descrizione |
---|---|
Ricompila la cache dei segmenti di pipeline e include le eventuali nuove aggiunte. Questo metodo ricompila anche la cache dei componenti aggiuntivi se tali componenti si trovano all'interno della struttura di directory della pipeline. |
|
Ricompila la cache dei componenti aggiuntivi per i componenti aggiuntivi che si trovano in un percorso specificato. Chiamare questo metodo se i componenti aggiuntivi si trovano all'esterno della struttura di directory della pipeline. |
|
Aggiorna la cache dei segmenti di pipeline con le eventuali aggiunte. Questo metodo aggiorna anche la cache dei componenti aggiuntivi se tali componenti si trovano all'interno della struttura di directory della pipeline. In assenza di segmenti di pipeline o componenti aggiuntivi nuovi, questo metodo convalida semplicemente la cache. |
|
Aggiorna la cache dei componenti aggiuntivi con gli eventuali nuovi componenti aggiuntivi contenuti in un percorso specificato. Chiamare questo metodo se i componenti aggiuntivi si trovano all'esterno della struttura di directory della pipeline. In assenza di nuovi componenti aggiuntivi installati, questo metodo convalida semplicemente la cache. |
Gli overload dei metodi Rebuild e Update accettano come parametro la directory radice della struttura di directory della pipeline o un valore dell'enumerazione PipelineStoreLocation.
Questi metodi utilizzando il caricamento solo per reflection per ottenere informazioni e non eseguono il codice del componente aggiuntivo o quello dei segmenti di pipeline. Alle informazioni memorizzate nella cache viene aggiunto il timestamp in modo da evitarne il ricalcolo durante gli aggiornamenti.
File di cache
La chiamata dei metodi di registrazione produce come risultato due file di cache:
PipelineSegments.store
Questo file si trova nella directory radice della struttura di directory della pipeline.
AddIns.store
Questo file si trova nella directory contenente uno o più sottodirectory di componenti aggiuntivi. Tale directory può trovarsi all'interno della struttura di directory della pipeline o in un altro percorso.
Individuazione dei componenti aggiuntivi
Il metodo FindAddIns esamina i file di archivio allo scopo di trovare tutti i componenti aggiuntivi che corrispondono a una visualizzazione host specificata del componente aggiuntivo. La visualizzazione host del componente aggiuntivo è la classe base astratta o l'interfaccia che descrive i metodi utilizzati dall'host e dal componente aggiuntivo, come specificato nel contratto. Per cercare i file di cache creati dai metodi di registrazione, questo metodo accetta come parametro la directory radice della struttura di directory della pipeline o un valore dell'enumerazione PipelineStoreLocation.
Nota |
---|
Chiamare FindAddIns solo dopo essersi assicurati che i file di archivio siano compilati e aggiornati, in modo da poter trovare tutti i componenti aggiuntivi disponibili. |
Il metodo FindAddIns restituisce un insieme IList<T> di token che descrivono ogni componente aggiuntivo disponibile con una pipeline valida. Ciascun token viene descritto dalla classe AddInToken.
Ogni token contiene le informazioni seguenti su un componente aggiuntivo, ottenute dall'attributo AddInAttribute della classe del componente aggiuntivo:
Nome
Descrizione
Editore
Versione
Nella maggior parte dei casi nell'insieme IList<T> è disponibile un solo token. In presenza di più token, l'applicazione host può utilizzare queste informazioni per consentire all'utente la selezione del componente aggiuntivo da attivare. Per ulteriori informazioni sull'attivazione, vedere Attivazione di componenti aggiuntivi.
Per cercare i componenti aggiuntivi che si trovano all'esterno della struttura di directory della pipeline è necessario includere il parametro AddInPaths. Poiché questo parametro è una matrice di stringhe, è possibile specificare più percorsi.
È anche possibile cercare un componente aggiuntivo specifico con il metodo FindAddIn che restituisce un insieme di un token.
Esempio
Nell'esempio riportato di seguito viene illustrato come compilare i file di cache e trovare i componenti aggiuntivi.
' 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);
Vedere anche
Concetti
Componenti aggiuntivi ed estensibilità
Attivazione di componenti aggiuntivi