Condividi tramite


Architettura dei componenti aggiuntivi a livello di applicazione

Aggiornamento: novembre 2007

Si applica a

Le informazioni contenute in questo argomento riguardano solo i progetti Visual Studio Tools per Office e le versioni di Microsoft Office specificati.

Tipo di progetto

  • Progetti a livello di applicazione

Versione Microsoft Office

  • Microsoft Office System 2007

  • Microsoft Office 2003

Per ulteriori informazioni, vedere la classe Funzionalità disponibili in base ai tipi di progetto e applicazione.

I componenti aggiuntivi creati in Visual Studio Tools per Office presentano funzionalità relative all'architettura mirate a garantire stabilità, sicurezza e interoperabilità con Microsoft Office. In questo argomento vengono descritti gli aspetti seguenti dei componenti aggiuntivi di Visual Studio Tools per Office:

  • Informazioni sui componenti aggiuntivi

  • Elementi dei componenti aggiuntivi

  • Funzionamento dei componenti aggiuntivi in Microsoft Office System 2007

  • Funzionamento dei componenti aggiuntivi in Microsoft Office 2003

  • Comportamento di arresto dei componenti aggiuntivi di Outlook 2003

Per informazioni generali sull'utilizzo dei componenti aggiuntivi di Visual Studio Tools per Office, vedere Cenni preliminari sullo sviluppo di soluzioni Office e Guida introduttiva alla programmazione di componenti aggiuntivi a livello di applicazione.

Informazioni sui componenti aggiuntivi

La compilazione di un componente aggiuntivo tramite Visual Studio Tools per Office prevede la creazione di un assembly di codice gestito che viene caricato da un'applicazione di Microsoft Office. Una volta che l'assembly è stato caricato, il componente aggiuntivo può rispondere agli eventi generati nell'applicazione, ad esempio quando un utente fa clic su una voce di menu. Il componente aggiuntivo può inoltre effettuare chiamate nel modello a oggetti per automatizzare ed estendere l'applicazione e può utilizzare qualsiasi classe di .NET Framework.

L'assembly comunica con i componenti COM dell'applicazione tramite l'assembly di interoperabilità primario dell'applicazione. Per ulteriori informazioni, vedere Assembly di interoperabilità primari di Office e Cenni preliminari sullo sviluppo di soluzioni Office.

Visual Studio Tools per Office carica ogni componente aggiuntivo in un dominio di applicazione diverso. Questo significa che un componente aggiuntivo che funziona in modo non corretto non può causare l'errato funzionamento di altri componenti aggiuntivi. Ciò assicura inoltre che, quando l'applicazione viene chiusa, tutto il codice viene chiuso e gli assembly vengono scaricati dalla memoria. Per ulteriori informazioni sui domini applicazione, vedere Cenni preliminari sui domini applicazione.

Nota:

I componenti aggiuntivi creati tramite Visual Studio Tools per Office sono progettati per essere utilizzati solo quando l'applicazione di Microsoft Office host viene avviata da un utente finale. Se l'applicazione viene avviata a livello di codice (ad esempio, utilizzando l'automazione), il componente aggiuntivo potrebbe presentare un funzionamento imprevisto.

Elementi dei componenti aggiuntivi

Benché l'assembly rappresenti l'elemento principale dei componenti aggiuntivi, esistono alcuni altri elementi che svolgono un ruolo importante nel modo in cui le applicazioni di Microsoft Office individuano e caricano i componenti aggiuntivi.

Voci del Registro di sistema

Le applicazioni di Microsoft Office individuano i componenti aggiuntivi mediante la ricerca di un insieme di voci del Registro di sistema. Non esiste quasi alcuna differenza fra le voci del Registro di sistema di Microsoft Office 2007 e le voci del Registro di sistema di Microsoft Office 2003. Tuttavia, una chiave è diversa:

  • Le applicazioni di Microsoft Office System 2007 ricercano la voce Manifest nella chiave HKEY_CURRENT_USER\Software\Microsoft\Office\nome applicazione\Addins\ID componente aggiuntivo. Nel caso di Visio, la ricerca viene invece eseguita nella chiave HKEY_CURRENT_USER\Software\Microsoft\Visio\Addins\ID componente aggiuntivo. La voce Manifest specifica il percorso completo del manifesto di distribuzione.

  • Le applicazioni di Microsoft Office System 2003 ricercano le voci ManifestName e ManifestLocation nella chiave HKEY_CURRENT_USER\Software\Microsoft\Office\nome applicazione\Addins\ID componente aggiuntivo. Nel caso di Visio, la ricerca viene invece eseguita nella chiave HKEY_CURRENT_USER\Software\Microsoft\Visio\Addins\ID componente aggiuntivo. Queste voci indicano il nome e il percorso del manifesto dell'applicazione.

Quando si compila la soluzione, Visual Studio Tools per Office crea nel computer di sviluppo tutte le voci del Registro di sistema necessarie a consentire il debug e l'esecuzione del componente aggiuntivo. Per ulteriori informazioni, vedere Cenni preliminari sul processo di generazione delle soluzioni Office

Per l'elenco completo delle voci del Registro di sistema utilizzate dai componenti aggiuntivi, vedere Voci del Registro di sistema per i componenti aggiuntivi a livello di applicazione.

Nota:

È possibile distribuire un componente aggiuntivo di Visual Studio Tools per Office per Microsoft Office 2003 in modo che possa essere utilizzato da tutti gli utenti di un determinato computer. A tale scopo, creare le chiavi del Registro di sistema in HKEY_LOCAL_MACHINE anziché in HKEY_CURRENT_USER. Tuttavia, non è consentito registrare un componente aggiuntivo di Visual Studio Tools per Office per Microsoft Office System 2007 in HKEY_LOCAL_MACHINE allo scopo di distribuire tale componente a tutti gli utenti di un computer. Le applicazioni di Microsoft Office System 2007 riconoscono solo i componenti aggiuntivi di Visual Studio Tools per Office registrati in HKEY_CURRENT_USER.

Manifesto di distribuzione e manifesto dell'applicazione

I componenti aggiuntivi utilizzano i manifesti di distribuzione e dell'applicazione per identificare e caricare la versione più recente dell'assembly del componente aggiuntivo. Il manifesto di distribuzione fa riferimento al manifesto dell'applicazione corrente, mentre il manifesto dell'applicazione fa riferimento all'assembly del componente aggiuntivo e specifica la classe del punto di ingresso da eseguire nell'assembly. Per ulteriori informazioni, vedere Manifesti dell'applicazione e di distribuzione nelle soluzioni di Office.

Runtime di Visual Studio Tools per Office

Per eseguire i componenti aggiuntivi creati tramite Visual Studio Tools per Office, nei computer degli utenti finali deve essere installato il runtime di Visual Studio Tools per Office. Il runtime contiene componenti non gestiti e un insieme di assembly gestiti. I componenti non gestiti caricano l'assembly del componente aggiuntivo. Gli assembly gestiti forniscono il modello a oggetti che il codice del componente aggiuntivo utilizza per automatizzare ed estendere l'applicazione host.

Per ulteriori informazioni, vedere Cenni preliminari su Visual Studio Tools per Office Runtime.

Funzionamento dei componenti aggiuntivi in Microsoft Office System 2007

Quando un utente avvia un'applicazione in Microsoft Office System 2007, l'applicazione utilizza il manifesto di distribuzione e il manifesto dell'applicazione per individuare e caricare la versione più recente dell'assembly del componente aggiuntivo. Nella figura seguente viene illustrata l'architettura di base di questi componenti aggiuntivi.

Architettura dei componenti aggiuntivi per Microsoft Office System 2007

Processo di caricamento

Quando un utente avvia un'applicazione si verificano i passaggi seguenti:

  1. L'applicazione esegue una ricerca all'interno del Registro di sistema allo scopo di individuare la presenza di voci che identificano componenti aggiuntivi creati tramite Visual Studio Tools per Office.

  2. Se tale ricerca ha esito positivo, l'applicazione carica il file VSTOEE.dll che a sua volta carica il file VSTOLoader.dll. Si tratta di DLL non gestite che costituiscono i componenti del caricatore di Microsoft Visual Studio Tools per Microsoft Office System (versione 3.0 Runtime). Per ulteriori informazioni, vedere Cenni preliminari su Visual Studio Tools per Office Runtime.

  3. VSTOLoader.dll carica .NET Framework e avvia la parte gestita del runtime di Visual Studio Tools per Office.

  4. Il runtime di Visual Studio Tools per Office verifica la disponibilità di aggiornamenti dei manifesti e scarica le versioni più recenti dei manifesti dell'applicazione e di distribuzione.

  5. Il runtime di Visual Studio Tools per Office esegue una serie dei controlli di sicurezza. Per ulteriori informazioni, vedere Sicurezza nelle soluzioni Office (System 2007).

  6. Se il componente aggiuntivo viene considerato attendibile per l'esecuzione, il runtime di Visual Studio Tools per Office utilizza i manifesti di distribuzione e dell'applicazione per verificare la disponibilità di aggiornamenti dell'assembly. Se è disponibile una versione nuova dell'assembly, il runtime la scarica nella cache di ClickOnce del computer client. Per ulteriori informazioni, vedere Distribuzione di soluzioni Office (2007 System).

  7. Il runtime di Visual Studio Tools per Office crea un nuovo dominio applicazione in cui caricare l'assembly del componente aggiuntivo.

  8. Il runtime di Visual Studio Tools per Office carica l'assembly del componente aggiuntivo nel dominio applicazione.

  9. Il runtime di Visual Studio Tools per Office chiama il metodo RequestComAddInAutomationService del componente aggiuntivo, se ne è stato eseguito l'override.

    Se occorre, è possibile eseguire l'override di questo metodo per esporre un oggetto del componente aggiuntivo alle altre soluzioni Microsoft Office. Per ulteriori informazioni, vedere Chiamata di codice nei componenti aggiuntivi a livello di applicazione da altre soluzioni Office.

  10. Il runtime di Visual Studio Tools per Office chiama il metodo RequestService del componente aggiuntivo, se ne è stato eseguito l'override.

    Se occorre, è possibile eseguire l'override di questo metodo per estendere una funzionalità di Microsoft Office System 2007 tramite la restituzione di un oggetto che implementa un'interfaccia extensibility. Per ulteriori informazioni, vedere Personalizzazione delle funzionalità dell'interfaccia utente utilizzando le interfacce di estensibilità.

  11. Il runtime di Visual Studio Tools per Office chiama il metodo ThisAddIn_Startup del componente aggiuntivo. Questo metodo è il gestore eventi predefinito per l'evento Startup. Per ulteriori informazioni, vedere Eventi di progetti Visual Studio Tools per Office.

Nota:

Il runtime di Visual Studio Tools per Office effettua una chiamata specifica al metodo RequestService per ogni interfaccia extensibility supportata dall'applicazione host. Anche se la prima chiamata al metodo RequestService di solito si verifica prima della chiamata al metodo ThisAddIn_Startup, il componente aggiuntivo non deve fare alcuna supposizione su quando o su quante volte il metodo RequestService verrà chiamato.

Funzionamento dei componenti aggiuntivi in Microsoft Office 2003

Quando un utente avvia un'applicazione di Microsoft Office, l'applicazione utilizza le informazioni contenute nel manifesto dell'applicazione (e, facoltativamente, nel manifesto di distribuzione) per caricare l'assembly del componente aggiuntivo. Nella figura seguente viene illustrata l'architettura di base di un componente aggiuntivo per un'applicazione di Microsoft Office 2003.

Architettura dei componenti aggiuntivi per Microsoft Office 2003

Processo di caricamento

Quando un utente avvia un'applicazione si verificano i passaggi seguenti:

  1. L'applicazione esegue una ricerca all'interno del Registro di sistema allo scopo di individuare la presenza di voci che identificano componenti aggiuntivi creati tramite Visual Studio Tools per Office.

  2. Se tale ricerca ha esito positivo, l'applicazione carica il file VSTOEE.dll che a sua volta carica il file AddinLoader.dll. Si tratta di DLL non gestite che costituiscono i componenti di caricamento di Visual Studio 2005 Tools per Office Second Edition Runtime. Per ulteriori informazioni, vedere Cenni preliminari su Visual Studio Tools per Office Runtime.

  3. AddinLoader.dll carica .NET Framework e avvia la parte gestita del runtime di Visual Studio Tools per Office.

  4. Il runtime di Visual Studio Tools per Office crea un nuovo dominio applicazione, imposta i criteri in modo che il dominio applicazione non consideri attendibile l'Area Risorse del computer e controlla l'archivio criteri di sicurezza per l'accesso al codice allo scopo di trovare un criterio per l'assembly del componente aggiuntivo.

  5. .NET Framework esegue una convalida della prova presentata dall'assembly in base ai criteri del dominio applicazione. Se ha esito negativo, viene generato un errore, mentre se ha esito positivo, il processo continua.

  6. Se il componente aggiuntivo utilizza un manifesto di distribuzione, il runtime di Visual Studio Tools per Office lo utilizza per verificare la presenza di aggiornamenti dell'assembly. Se sono necessari aggiornamenti, vengono effettuati adesso.

  7. Il runtime di Visual Studio Tools per Office carica l'assembly del componente aggiuntivo nel nuovo dominio applicazione.

  8. Il runtime di Visual Studio Tools per Office chiama il metodo RequestComAddInAutomationService del componente aggiuntivo, se ne è stato eseguito l'override.

    Se occorre, è possibile eseguire l'override di questo metodo per esporre un oggetto del componente aggiuntivo alle altre soluzioni Microsoft Office. Per ulteriori informazioni, vedere Chiamata di codice nei componenti aggiuntivi a livello di applicazione da altre soluzioni Office.

  9. Il runtime di Visual Studio Tools per Office chiama il metodo ThisAddIn_Startup del componente aggiuntivo. Questo metodo è il gestore eventi predefinito per l'evento Startup. Per ulteriori informazioni, vedere Eventi di progetti Visual Studio Tools per Office.

Comportamento di arresto dei componenti aggiuntivi di Outlook 2003

Se si esegue la migrazione di un componente aggiuntivo COM (ovvero di un componente aggiuntivo che implementa direttamente l'interfaccia IDTExtensibility2) esistente di Outlook 2003 a Visual Studio Tools per Office, rimuovere qualsiasi codice finalizzato a risolvere eventuali problemi di arresto. In caso contrario, è possibile che si verifichino conflitti con il processo di arresto dei componenti aggiuntivi di Outlook 2003 creati utilizzando Visual Studio Tools per Office, oppure che il componente aggiuntivo venga scaricato prima del previsto.

Nota:

Il comportamento descritto in questa sezione non è applicabile ai componenti aggiuntivi di Outlook 2007. Outlook 2007 chiama sempre il metodo OnDisconnection in un componente aggiuntivo, anche se quest'ultimo include già riferimenti a oggetti di Outlook.

Informazioni generali sul problema di arresto

Se un componente aggiuntivo COM presenta riferimenti a uno o più oggetti di Outlook, Outlook 2003 non chiama il metodo OnDisconnection del componente aggiuntivo. Se il componente aggiuntivo presenta riferimenti a oggetti che vengono eliminati solo nel metodo OnDisconnection, Outlook 2003 non chiama mai il metodo OnDisconnection. Di conseguenza, il componente aggiuntivo non viene mai scaricato e Outlook 2003 non viene mai chiuso.

Risoluzione del problema di arresto in Visual Studio Tools per Office

I componenti aggiuntivi di Outlook 2003 creati tramite Visual Studio Tools per Office vengono scaricati in modo tale da evitare questo problema qualora si verifichi. Se il componente aggiuntivo non presenta riferimenti ad alcun oggetto Explorer o Inspector quando si verifica una delle condizioni elencate di seguito, il runtime di Visual Studio Tools per Office genera l'evento Shutdown del componente aggiuntivo e ne scarica il dominio applicazione.

Quando viene scaricato il dominio applicazione, tutti i riferimenti esistenti ad altri oggetti Outlook vengono eliminati. A questo punto può avvenire l'arresto del componente aggiuntivo e la chiusura di Outlook 2003.

Vedere anche

Concetti

Architettura delle personalizzazioni a livello di documento

Cenni preliminari su Visual Studio Tools per Office Runtime

Programmazione di componenti aggiuntivi a livello di applicazione

Sviluppo di soluzioni Office

Altre risorse

Architettura di soluzioni Visual Studio Tools per Office

Protezione nelle soluzioni Office

Distribuzione di soluzioni Office