Risoluzione dei problemi relativi a errori di runtime nelle soluzioni Office

Quando si eseguono le attività seguenti in fase di esecuzione di soluzioni Office create in Visual Studio, possono verificarsi problemi:

  • Installazione di soluzioni

  • Caricamento o esecuzione di soluzioni

  • Utilizzo di proprietà, metodi ed eventi specifici nelle soluzioni

  • Personalizzazione dell'interfaccia utente

  • Associazione di dati ai controlli e memorizzazione dei dati nella cache

  • Utilizzo della classe ServerDocument

Installazione di soluzioni

Runtime di Visual Studio Tools per Office scrive messaggi nel Visualizzatore eventi di Windows per tutte le eccezioni generate quando si installano o disinstallano soluzioni Office. Questi messaggi possono essere utilizzati per risolvere problemi di installazione e di distribuzione. Per ulteriori informazioni, vedere Registrazione degli eventi per le soluzioni Office.

Quando si installano soluzioni di Office possono verificarsi gli errori seguenti.

Impossibile installare il componente aggiuntivo utilizzando la finestra di dialogo Componenti aggiuntivi COM

Se si tenta di utilizzare la finestra di dialogo Componenti aggiuntivi COM in un'applicazione di Office per installare un componente aggiuntivo creato tramite gli strumenti di sviluppo di office in Visual Studio, si verificherà l'errore seguente.

"nome componente aggiuntivo.dll non è un componente aggiuntivo valido di Office."

Non è possibile utilizzare la finestra di dialogo Componenti aggiuntivi COM per installare un componente aggiuntivo creato tramite gli strumenti di sviluppo di Office in Visual Studio. Effettuare, invece, una delle operazioni seguenti:

  • Se si sta tentando di eseguire il componente aggiuntivo nel computer di sviluppo, compilare il progetto, quindi avviare l'applicazione di Office. Il componente aggiuntivo si dovrebbe caricare automaticamente. In alternativa, scegliere Avvia senza eseguire debug nel menu Debug di Visual Studio. Per ulteriori informazioni, vedere Cenni preliminari sul processo di compilazione delle soluzioni Office.

  • Se si sta tentando di eseguire il debug del componente aggiuntivo nel computer di sviluppo, premere F5 o scegliere Avvia debug nel menu Debug di Visual Studio. Per ulteriori informazioni, vedere Debug in progetti a livello di applicazione.

  • Se si tenta di installare il componente aggiuntivo nel computer dell'utente finale, utilizzare ClickOnce o Windows Installer per distribuire il componente aggiuntivo. Per ulteriori informazioni, vedere Distribuzione di soluzioni Office.

La soluzione viene installata correttamente, ma nel Visualizzatore eventi è indicata l'eccezione FrameworkVersionMismatchException

Quando si installa una soluzione Office creata mediante Visual Studio, è possibile che nel Visualizzatore eventi venga riportato un errore relativo alla generazione dell'eccezione Microsoft.VisualStudio.Tools.Applications.Deloyment.FrameworkVersionMismatchException. Questa eccezione non indica un reale errore della soluzione ed è in genere possibile ignorarla.

Questa eccezione viene generata e intercettata internamente da Runtime di Visual Studio Tools per Office quando si installa una soluzione Office destinata a .NET Framework 4 in un computer in cui è installato sia .NET Framework 3.5 che .NET Framework 4. Runtime di Visual Studio Tools per Office utilizza questa eccezione per determinare quale versione del Common Language Runtime (CLR) caricare per la soluzione.

Caricamento o esecuzione di soluzioni

In Runtime di Visual Studio Tools per Office è possibile scrivere tutti gli errori che si verificano all'avvio in un file di log o visualizzare ciascun errore in una finestra di messaggio. Per impostazione predefinita, queste opzioni sono disabilitate. Per attivarle, è possibile creare specifiche variabili di ambiente. Per ulteriori informazioni, vedere Debug nei progetti a livello di documento e Debug in progetti a livello di applicazione.

Quando si caricano o eseguono soluzioni Office possono verificarsi gli errori seguenti.

Impossibile caricare Common Language Runtime o Microsoft .NET Framework

Il computer dell'utente finale deve disporre della versione di .NET Framework di destinazione dalla soluzione. Per ulteriori informazioni sulle versioni di .NET Framework a cui le soluzioni di Office possono essere destinate, vedere Progettazione e creazione di soluzioni Office.

Impossibile trovare o caricare l'assembly

Il problema causa la visualizzazione del seguente messaggio di errore.

"Impossibile trovare l'assembly di personalizzazione oppure impossibile caricarlo. È comunque possibile modificare e salvare il documento. Per ulteriori informazioni, contattare l'amministratore o l'autore del documento."

Per correggere l'errore, provare a effettuare le operazioni seguenti:

  • Verificare che l'utente abbia accesso al percorso dell'assembly e che sia presente l'assembly denominato. Per ulteriori informazioni, vedere Cenni preliminari sugli assembly nelle soluzioni Office.

  • Se l'assembly è disponibile, verificare se in Word o in Excel è in esecuzione una personalizzazione, ad esempio un componente aggiuntivo, uno smart tag o uno Smart document, che ha caricato esplicitamente .NET Framework 1.1. Per risolvere il problema, disabilitare tutte le personalizzazioni che caricano esplicitamente .NET Framework 1.1. Questa versione di .NET Framework non può essere caricata nello stesso processo dell'applicazione con versioni successive di .NET Framework. Per ulteriori informazioni, vedere Esecuzione side-by-side in-process.

    Nota

    Gli smart tag sono deprecati in Excel 2010 e Word 2010. Per ulteriori informazioni, vedere Cenni preliminari sugli smart tag.

  • Controllare se un'eccezione non gestita nell'assembly di personalizzazione impedisce il caricamento dell'assembly. Eseguire il debug della soluzione con il debugger impostato affinché venga interrotta l'esecuzione in corrispondenza delle eccezioni di Common Language Runtime o con l'opzione Interrompi quando le eccezioni superano il dominio dell'applicazione o i limiti gestiti/nativi selezionata nella finestra di dialogo Opzioni. Per ulteriori informazioni, vedere Procedura: gestire gli errori nei progetti Office.

  • È possibile ottenere informazioni aggiuntive sulla risoluzione dei problemi impostando le variabili d'ambiente che consentono al Runtime di Visual Studio Tools per Office di visualizzare messaggi di errore dettagliati e di scrivere tutte le azioni su un file di log. Per ulteriori informazioni, vedere Debug nei progetti a livello di documento e Debug in progetti a livello di applicazione.

Impossibile caricare il componente aggiuntivo oppure il componente è disabilitato

Esistono diverse possibilità per verificare se un componente aggiuntivo a livello di applicazione non esegue correttamente il caricamento:

  • Se l'applicazione Microsoft Office viene chiuso in modo imprevisto oppure si verifica un errore durante l'inizializzazione di un componente aggiuntivo, il componente potrebbe essere stato disabilitato dall'applicazione. Per ulteriori informazioni, vedere Procedura: riabilitare un componente aggiuntivo disabilitato in precedenza.

  • È possibile che l'applicazione di Microsoft Office esegua un componente aggiuntivo che ha caricato in modo esplicito .NET Framework 1.1. Per risolvere il problema, disabilitare tutti i componenti aggiuntivi che caricano esplicitamente .NET Framework 1.1. Questa versione di .NET Framework non può essere caricata nello stesso processo dell'applicazione con versioni successive di .NET Framework. Per ulteriori informazioni, vedere Esecuzione side-by-side in-process.

  • È possibile ottenere informazioni aggiuntive sulla risoluzione dei problemi impostando le variabili d'ambiente che consentono al Runtime di Visual Studio Tools per Office di visualizzare messaggi di errore dettagliati e di scrivere tutte le azioni su un file di log. Per ulteriori informazioni, vedere Debug in progetti a livello di applicazione.

Impossibile caricare il tipo

Il problema causa la visualizzazione del seguente messaggio di errore:

"Impossibile caricare il tipo nomeprogetto dall'assembly nomeassembly."

È possibile che questo messaggio venga visualizzato quando il codice del progetto Office viene offuscato. L'offuscamento del codice implica la modifica dei nomi di tutte le classi, i cui nomi originali restano come riferimento nel manifesto, che tuttavia non viene modificato dall'offuscamento.

Per evitare questo errore, aggiungere i nomi delle classi generate del progetto all'elenco delle classi da non rinominare nell'offuscatore.

Mancata esecuzione del codice nonostante l'assenza di errori all'apertura del documento di Office

Di seguito vengono descritti i motivi per cui il codice non viene eseguito ma non vengono visualizzati messaggi di errore:

  • Gli assembly di interoperabilità primari (PIA) di Office non sono installati nella cache di assembly globale, probabilmente perché .NET Framework non è installato nel computer oppure perché non sono stati installati durante l'installazione di Office.

  • Un progetto Documento di Word è aperto in Visual Studio sullo stesso computer. Chiudere Visual Studio e aprire nuovamente il documento.

Per ulteriori informazioni, vedere Debug nei progetti a livello di documento.

Utilizzo di proprietà, metodi ed eventi specifici nelle soluzioni

È possibile che si verifichino i problemi seguenti relativi a proprietà, metodi ed eventi specifici negli assembly di interoperabilità primari (PIA) di Microsoft Office e in Runtime di Visual Studio Tools per Office.

Mancata generazione dell'evento DocumentChange all'apertura del documento in Word

L'evento DocumentChange viene generato in occasione della modifica del documento attivo, nonché, di frequente, all'apertura di un documento. Poiché tuttavia un documento può essere aperto in Word in numerosi modi, ad esempio da una riga di comando, da Esplora risorse o dal menu File di Word, è possibile che l'evento DocumentChange non venga sempre generato all'apertura del documento. Dovrebbe essere sempre generato quando il documento attivo viene modificato dopo l'apertura. Per eseguire operazioni all'apertura del documento, utilizzare l'evento Startup.

Gli eventi di Excel in Internet Explorer vengono generati diversamente rispetto ad Excel

Gli eventi di una cartella di lavoro ospitata in Internet Explorer vengono generati secondo un ordine diverso rispetto a quando la cartella viene aperta in Excel. Alcuni degli eventi vengono inoltre generati due volte. Se la soluzione include Internet Explorer, verificare l'impatto della diversa sequenza di eventi sul funzionamento della soluzione.

Mancata generazione dell'evento New quando si crea un documento da un modello

Quando si utilizza un prompt dei comandi per aprire un modello di Word e creare un nuovo documento, è necessario utilizzare l'opzione /z per generare l'evento New. Non includere uno spazio dopo /z. In caso contrario, si otterrà l'apertura del modello per la modifica in Word anziché la creazione di un nuovo documento basato sul modello. Ad esempio: winword.exe /z"mytemplate.dot"

Si ottiene così un risultato analogo a quello garantito dall'utilizzo dell'opzione /t, con l'aggiunta della generazione dell'evento New da parte dell'opzione /z.

Mancata generazione dell'evento Open all'apertura di un foglio di lavoro XML

Se un progetto Excel viene basato su un foglio di lavoro esistente non nativo, ad esempio nel formato XML di Excel, l'evento Open non verrà generato all'apertura del foglio di lavoro.

Esecuzione del metodo BeforeClose nonostante la cartella di lavoro venga mantenuta aperta

L'utente finale può annullare l'operazione di chiusura di una cartella di lavoro e continuare a utilizzare la soluzione dopo la chiamata del gestore eventi BeforeClose. Questa situazione può verificarsi quando l'utente apporta delle modifiche in un foglio di lavoro e quindi esegue un'operazione per chiudere la cartella di lavoro senza salvare. Viene chiamato il gestore eventi BeforeClose e all'utente viene quindi visualizzata una finestra di dialogo che consente di annullare l'operazione di chiusura.

Se nel gestore eventi BeforeClose viene inserito del codice per la chiusura delle connessioni a database o l'esecuzione di altre operazioni di pulitura, è possibile che tale codice venga chiamato mentre l'utente sta ancora utilizzando la soluzione.

Visualizzazione di un avviso di imprecisione o uscita imprevista da Word in seguito all'impostazione del parametro Cancel della finestra di dialogo SaveAs

Se si visualizza la finestra di dialogo SaveAs da un gestore eventi per l'evento DocumentBeforeSave e si imposta il parametro Cancel su false, l'applicazione potrebbe essere chiusa in modo imprevisto. Se si imposta il parametro Cancel su true, un messaggio di errore indicherà che è stata disabilitata la funzione di salvataggio automatico.

Chiusura imprevista di Word ed Excel a causa del metodo Close

Se si chiama il metodo Close di un documento o di una cartella di lavoro da un form non modale, è possibile che l'applicazione venga chiusa in modo imprevisto. Tutti i documenti o tutte le cartelle di lavoro verranno chiuse e potrebbero verificarsi perdite di dati. Se Microsoft Office Outlook è impostato in modo da utilizzare Word come editor per la posta elettronica, verranno chiusi anche tutti i messaggi di posta aperti. Questo problema può verificarsi anche se si visualizzano Windows Form o finestre di messaggio durante la gestione dell'evento AppDomain.DomainUnload.

Per ovviare al problema, non chiamare il metodo Close da un form non modale o in un evento per un form non modale. È invece opportuno utilizzare le procedure seguenti:

  • Utilizzare form modali, ad esempio il metodo ShowDialog invece del metodo Show, qualora fosse necessario chiudere il documento dal form.

  • Se è necessario utilizzare un form non modale, accertarsi che il form sia chiuso e che i riferimenti del form vengano eliminati in modo permanente prima di tentare di chiudere il documento o la cartella di lavoro. Il codice che segue fornisce un esempio in proposito. Per utilizzare questo codice, eseguirlo dalla classe ThisDocument in un progetto a livello di documento per Word.

    Dim form1 As SampleForm
    
    Sub OpenForm()
        form1 = New SampleForm
        form1.Show()  ' Show the form modelessly.
    End Sub
    
    Sub ForceShutdown()
    
        ' Completely close the form if it is still running.
        ' Note that hiding the form might not work by itself.
    
        If (Not form1 Is Nothing) Then
            form1.Close()
            form1.Dispose()
            form1 = Nothing
        End If
    
        Me.Close()
    End Sub
    
    SampleForm form1;
    
    private void OpenForm()
    {
        form1 = new SampleForm();
        form1.Show();  // Show form modelessly.
    }
    
    private void ForceShutdown()
    {
        // Completely close the form if it is still running.
        // Note that hiding the form might not work by itself.
    
        if (form1 != null)
        {
            form1.Close();
            form1.Dispose();
            form1 = null;
        }
        object saveChanges = Word.WdSaveOptions.wdSaveChanges; 
        this.Close(ref saveChanges, ref missing, ref missing);
    }
    

Per informazioni sul passaggio del parametro missing in C#, vedere Parametri facoltativi nelle soluzioni Office.

Generazione di un'eccezione InvalidCastException in seguito al passaggio di un controllo host di Excel a un metodo

Con alcuni metodi ed alcune proprietà di Excel è richiesto il passaggio di un oggetto Office nativo. Se l'attributo Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute viene impostato su false in un progetto destinato a .NET Framework 3.5 e viene passato un controllo host basato su un oggetto Office nativo, verrà generata un'eccezione InvalidCastException. Per passare oggetti Office nativi sottostanti a questi metodi e queste proprietà, è quindi possibile utilizzare la proprietà InnerObject dei controlli host. Per ulteriori informazioni sui problemi di localizzazione in Excel, vedere Formattazione di dati in Excel con varie impostazioni internazionali.

Personalizzazione dell'interfaccia utente

È possibile che si verifichino i seguenti errori relativi a tipi specifici di personalizzazioni dell'interfaccia utente nelle soluzioni Office.

Comportamento imprevedibile dei controlli Windows Form quando la finestra di un foglio di lavoro di Excel viene divisa

Se si divide la finestra di un foglio di lavoro che contiene controlli Windows Form, è possibile che il comportamento di tali controlli sia diverso nelle finestre. Se, ad esempio, viene eseguito del codice per modificare la proprietà BackColor di un oggetto TextBox in un foglio di lavoro, è possibile che la modifica venga applicata a una sola delle finestre.

Impossibile aggiungere pagine di proprietà personalizzate nei componenti aggiuntivi per Outlook

Se il componente aggiuntivo per Outlook crea una pagina delle proprietà personalizzata per la finestra di dialogo Opzioni di Outlook o la finestra di dialogo Proprietà di una cartella di Outlook, è necessario rendere esplicitamente visibile a COM la pagina delle proprietà personalizzata. Per impostazione predefinita, l'assembly non è visibile a COM. In caso contrario, il componente aggiuntivo non creerà la pagina delle proprietà personalizzata, e, durante il debug del componente aggiuntivo, potrà verificarsi un'eccezione COMException.

Esistono due modi per consentire la visualizzazione di pagina delle proprietà personalizzata in COM:

  • Aggiungere un oggetto ComVisibleAttribute alla classe che implementa la pagina delle proprietà personalizzata nel progetto. Per informazioni sull'applicazione di attributi nelle classi, vedere Applicazione di attributi.

  • Utilizzare Visual Studio per rendere l'intero assembly del componente aggiuntivo visibile a COM.

    Per rendere l'assembly del componente aggiuntivo visibile a COM utilizzando Visual Studio

    1. In Visual Studio fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni, quindi scegliere Proprietà.

    2. Fare clic sulla scheda Applicazione.

    3. Fare clic sul pulsante Informazioni assembly.

    4. Selezionare la casella di controllo Rendi assembly visibile a COM.

    5. Scegliere OK.

Associazione di dati ai controlli e memorizzazione dei dati nella cache

È possibile che si verifichino i seguenti errori nelle soluzioni Office che utilizzano associazione dati o dati memorizzati nella cache.

Errore di associazione dati di un controllo ListObject in seguito alla visualizzazione di una finestra di dialogo modale

Se in Excel viene visualizzata una finestra di dialogo modale durante l'aggiornamento del DataSet associato a un oggetto ListObject, l'associazione dati dell'oggetto ListObject non verrà eseguita correttamente. Se il controllo ListObject perde l'associazione dati, viene generato l'evento DataBindingFailure. Per eseguire di nuovo l'associazione del controllo ListObject all'origine dati, gestire l'evento DataBindingFailure e chiamare il metodo SetDataBinding.

I nomi dei dataset di Visual Basic memorizzati nella cache non vengono visualizzati correttamente nella cache dei dati

I nomi degli oggetti DataSet creati utilizzando Visual Basic che sono contrassegnati come Cached e WithEvents (inclusi gli oggetti DataSet trascinati dalla finestra Origini dati oppure la Casella degli strumenti la cui proprietà CacheInDocument è impostata su True) sono preceduti da un trattino di sottolineatura nella cache. Se ad esempio si crea un oggetto DataSet con nome Customers, il nome dell'oggetto CachedDataItem sarà _Customers nella cache. Quando si utilizza ServerDocument per accedere a questo elemento memorizzato nella cache, è necessario specificare _Customers anziché Customers.

Utilizzo della classe ServerDocument

Possono verificarsi gli errori seguenti nelle soluzioni Office che utilizzano la classe Microsoft.VisualStudio.Tools.Applications.ServerDocument.

Impossibile eseguire le applicazioni legacy che utilizzano ServerDocument in computer in cui è installato solo Visual Studio 2010 Tools for Office Runtime

Se si tenta di eseguire un'applicazione che utilizza la classe Microsoft.VisualStudio.Tools.Applications.ServerDocument in Visual Studio Tools per Office System 3.0 Runtime in un computer in cui è installato solo Visual Studio 2010 Tools per Office Runtime, l'applicazione potrebbe non riuscire in modo imprevisto. Per eseguire l'applicazione, installare Visual Studio Tools per Office System 3.0 Runtime nel computer. È possibile installare entrambe le versioni di runtime sullo stesso computer.

Vedere anche

Attività

Risoluzione dei problemi relativi alla fase di progettazione nelle soluzioni Office

Risoluzione dei problemi relativi alla sicurezza delle soluzioni Office

Concetti

Risoluzione dei problemi relativi alla distribuzione di soluzioni Office

Altre risorse

Risoluzione dei problemi relativi alle soluzioni Office

Cronologia delle modifiche

Data

Cronologia

Motivo

Settembre 2010

Aggiunte informazioni sulla visualizzazione di errori di installazione e caricamento.

Miglioramento delle informazioni.

Maggio 2010

Aggiunta sezione su FrameworkVersionMismatchException.

Miglioramento delle informazioni.