2011-06-21 22 views
14

Creamos una aplicación que usa Office 2007 (Excel 2007) para leer los datos de una hoja de cálculo de Excel. Sin embargo. Me di cuenta de que cuando quiero implementar la aplicación en un sistema con Office 2003 instalado, se cuelga porque otras PIA (y otras dll) necesitan referencia para esta versión de la oficina.admite diferentes versiones de Office con Office Automation

¿Necesito compilar diferentes versiones de mi aplicación para poder soportar diferentes versiones de Office o hay una solución más elegante para este problema?

Uso Visual Studio 2010 (C#) y la plataforma .Net 4.0.

Respuesta

18

Como está utilizando .NET 4, puede usar PIA "incrustados" (también conocidos como "No PIA"). Cambie la opción en la referencia de Office para que "Insertar tipos de interoperabilidad" sea Verdadero.

Siempre que solo use las características de Office admitidas en la máquina en la que implemente, debería estar bien.

También significa que: - no es necesario que preocuparse de la propia PIA no estar presente en la máquina objetivo - Cualquier métodos o propiedades que son del tipo VARIANT en la interfaz COM original, ahora se representan utilizando dynamic en su código, que puede simplificar su vida

+0

Eso hubiera hecho mi vida hace 2 años mucho más fácil. Escribir contra complementos en vs05 fue una molestia. – asawyer

+0

Esto resolvió mi problema. Muchas gracias. – Chris

0

Puede hacer referencia a las PIA's para múltiples versiones de la oficina y averiguar en tiempo de ejecución de qué enrutar sus llamadas.

+0

Esto es exactamente lo que no debe hacer: http://blogs.msdn.com/b/andreww/archive/2007/06/15/can-you-build-one -add-in-for-multiple-versions-of-office.aspx – Andy

+0

Esto es en realidad una ** buena ** idea. También quería hacerlo, ya que en mi empresa tenemos sistemas con diferentes versiones de Office instaladas. Y quería que mis aplicaciones fueran compatibles con ** cualquier versión **. – Bitterblue

Cuestiones relacionadas