2015-04-29 22 views
5

Ho sviluppato un addin per word in vs2010. Funziona alla perfezione nella versione a 32 bit dell'ufficio, ma non funziona sulla versione a 64 bit dell'ufficio. Ha ricercato molto e ha scoperto cheCome sviluppare Microsoft addin word office per 64bit versione office in vs2010

For 64-bit Root\Software\Microsoft\Office\application name\Addins\add-in ID 
For 32-bit Root\Software\Wow6432Node\Microsoft\Office\application name\Addins\add-in ID 

informazioni del registro path's.I cercato registrare le informazioni per la 64bit.Even troppo non il suo lavoro in 64 bit di office. In ufficio a 64 bit il mio addin era visualizzato sotto InActive Application Add-in. Ho persino provato ad abilitarlo.

Come sviluppare e distribuire un addin per 64 bit di ufficio ..?

e sto ottenendo il seguente errore .. !!

Impossibile caricare il file o l'assembly 'xxxxx, Versione = 1.0.0.0, Culture = neutro, PublicKeyToken = null' o una delle sue dipendenze. Si è tentato di caricare un programma con un formato errato.

************** Testo di eccezione ************** System.BadImageFormatException: Impossibile caricare il file o l'assembly 'xxxxx, Versione = 1.0.0.0, Culture = neutral, PublicKeyToken = null 'o una delle sue dipendenze. Si è tentato di caricare un programma con un formato errato. Nome file: 'xxxxx, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null'

at MyWord.ThisAddIn.ThisAddIn_Startup(Object sender, EventArgs e) 
    at MyWord.ThisAddIn.FinishInitialization() 

a Microsoft.VisualStudio.Tools.Office.Runtime.DomainCreator.ExecuteCustomization.ExecutePhase (executionPhases executionPhases) a Microsoft.VisualStudio.Tools.Office.Runtime.DomainCreator.ExecuteCustomization.Microsoft.VisualStudio.Tools.Office.Runtime.Interop.IExecuteCustomization2.ExecuteEntryPoints() WRN: Assemblea registrazione vincolante è spento. Per abilitare la registrazione degli errori di associazione , impostare il valore di registro [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) su 1. Nota: Ci sono alcune penalità legate alle prestazioni associate alla registrazione del guasto di associazione . Per disattivare questa funzione, rimuovere il valore di registro [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

+0

Penso che tu sia un po 'confuso, per compatibilità con le versioni precedenti il ​​Wow64 è per applicazioni a 32 bit. Controlla il seguente [post per risolvere il caricamento dell'addin] (http://stackoverflow.com/a/14698249/495455) - controlla i punti 1,2,3,4 e 7 –

+0

@JeremyThompson ma ora ho i dettagli del mio registro in Root \ Software \ Microsoft \ Office \ nome applicazione \ Addins \ add-in ID per addin ufficio e il suo funziona perfettamente per me in 32 bit di ufficio, ma non funziona (gettinbg abilitato) in 64 bit dell'ufficio ..? Quale potrebbe essere il problema ...? – Arshad

+0

Avete due versioni di Office sullo stesso PC? –

risposta

1

Dai un'occhiata all'articolo Deploying an Office Solution by Using Windows Installer in MSDN che descrive in dettaglio tutti i passaggi richiesti. Essa afferma quanto segue:

32 bit

HKEY_LOCAL_MACHINE\SOFTWARE(32-Bit)\Microsoft\Office\Excel\Addins\SampleCompany.ExcelAddIn 

64-bit

HKEY_LOCAL_MACHINE\SOFTWARE(32-Bit)\Microsoft\Office\Excel\Addins\SampleCompany.ExcelAddIn 
HKEY_LOCAL_MACHINE\SOFTWARE(64-Bit)\Microsoft\Office\Excel\Addins\SampleCompany.ExcelAddIn 

Un programma di installazione per Windows a 64 bit richiede due percorsi del Registro perché è possibile per gli utenti di eseguire a 32 bit e versioni a 64 bit di Office su un computer che esegue Windows a 64 bit.

Ma è possibile rilevare (nelle azioni personalizzate) il testimone di MS Office installato e creare le chiavi nell'alveare corretto.

+0

il collegamento che hai condiviso è basato su instaSheild, ma sto usando il programma di installazione WIX. – Arshad

+0

Buon articolo, fortunato per l'OP che ha VS2010 che ha il progetto di installazione. +1 –

+0

Nell'angolo in alto a sinistra c'è un collegamento per passare l'articolo a VS2010. Vedere [Distribuzione di strumenti di Visual Studio 2010 per Office Solution mediante Windows Installer] (https://msdn.microsoft.com/en-us/vsto/ff937654.aspx). –

2

Si è tentato di caricare un programma con un formato non corretto

Nel 99% dei casi, che significa solo una cosa quando questa eccezione è sollevata in un programma a 64 bit. Il "formato errato" è una DLL che contiene codice a 32 bit. Non può funzionare, un programma a 64 bit può caricare solo DLL a 64 bit.

Se si è utilizzato C# per scrivere tale componente aggiuntivo, si tratta di una soluzione molto semplice. Fare clic con il tasto destro del mouse sul progetto nella finestra Esplora soluzioni, Proprietà, scheda Costruisci. Impostare "Target piattaforma" su AnyCPU. Deseleziona la casella di controllo "Prefer 32-bit" se la vedi (VS2012 e successivi). Ripeti questo per la configurazione di rilascio.


Altre spiegazioni possibili per questo, i casi insoliti:

  • Non avendo la versione a 64 bit di .NET Framework installato
  • codice di scrittura nella ++/linguaggio C CLI, avete per costruire la versione x64
  • Avere una dipendenza da una DLL non gestito a 32 bit
  • accidentalmente caricamento della DLL sbagliato

Avrete bisogno del Process Monitor di SysInternals per inseguire questo tipo di contrattempi. La traccia mostra quali DLL il programma di Office sta cercando e in quali directory ha cercato la DLL. Sarà una grande traccia, lavoro dal fondo della traccia all'indietro.