La interoperabilidad de Excel funciona en la máquina con Office 2007 pero falla en la máquina con Office 2010

Tengo una aplicación C # WPF (.NET 4.0) que usa interoperabilidad de Excel para leer datos de un file de Excel.

Cuando ejecuto esta aplicación en mi máquina de desarrollo, que tiene Excel 2007, funciona bien. Cuando lo ejecuto en otra máquina que tiene instalado Excel 2010, falla con el siguiente post de error:

System.Runtime.InteropServices.COMException (0x80040154): Se produjo un error al recuperar la fábrica de la class COM para el componente con CLSID {00024500-0000-0000-C000-000000000046} debido al siguiente error: 80040154 Clase no registrada (exception de HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG) )).

El error ocurre al intentar crear un object Microsoft.Office.Interop.Excel.Application , como en:

 var app = new Application(); 

Mi proyecto tiene una reference a Microsoft.Office.Interop.Excel.dll (versión 14.0.0.0, versión de time de ejecución v2.0.50727), que se encuentra en:

C: \ Archivos de progtwig \ Microsoft Visual Studio 10.0 \ Herramientas de Visual Studio para Office \ PIA \ Office14 \ Microsoft.Office.Interop.Excel.dll

Traté de ejecutar la aplicación con la configuration pnetworkingeterminada en el dll de reference:

  • Copiar local = falso
  • Incrustar types de interoperabilidad = True
  • Versión específica = Verdadero

También traté de ejecutar la aplicación con la siguiente configuration en la dll referenceda:

  • Copiar local = verdadero
  • Incrustar types de interoperabilidad = Falso
  • Versión específica = Verdadero

Pero en la máquina con Office 2010, ninguno de estos bashs funcionó.

Otras notas: La máquina con Office 2010 es de 64 bits con Windows 7. Mi máquina de desarrollo es X86 con Windows XP.

Pregunta

¿Qué está causando la exception de "class no registrada" y cómo la soluciono?

Editar

En respuesta a la respuesta de Alex, intenté build la aplicación como Any CPU, X86 y X64, pero no hizo ninguna diferencia. Todavía recibo el mismo error de "class no registrada".

Editar 2

Acabo de probar la aplicación en una máquina de 32 bits con Office 2010. Sin errores. Por lo tanto, podría ser algo incorrecto con la máquina en particular, o podría ser la combinación de 64 bits y Office 2010.

Editar 3

Bien, ahora lo he probado en otra máquina de 64 bits con Office 2010. Nuevamente no hay errores. Creo que esto significa que algo está mal con la máquina en particular y no es culpa de mi software. Ahh progtwigndo

Respuesta preliminar: mi software estaba bien y algo estaba mal con la configuration en esa máquina en particular.

Editar

Acabo de descubrir algo que probablemente sea la fuente del problema. El equipo con problemas tiene Office, pero está configurado como clic para ejecutar (se ejecuta fuera de Internet) en lugar de basado en MSI (se ejecuta desde un EXE). Esto significa que ciertas configuraciones de logging, DLL, componentes, etc. no están disponibles para Microsoft.Office.Interop.Excel , por lo que falla.

Editar 2

Ese fue definitivamente el problema. Acabo de actualizar a una installation completa de Office basada en MSI, y todo funciona muy bien.

Editar 3

Se agregó esto como un error a Microsoft Connect:

https://connect.microsoft.com/VisualStudio/feedback/details/672276/excel-interop-fails-on-machine-where-office-is-installed-as-click-to-run#details