Pregunta

Tuve que importar un proyecto anterior (en .Net 2) a Visual Studio 2013, que utiliza los ensamblajes de interoperabilidad primaria de Microsoft.

Visual Studio dijo que necesito agregar referencias al proyecto.Ahora fui y leí un poco y aparentemente Microsoft solo lanzó el PIA para Office 2010.(Tengo Office 2013)

Ahora lo que me gustaría saber es.

  1. ¿Puedo hacer que funcione con Office 2013 y que sea compatible con versiones anteriores?
  2. Y si es así, ¿es este un buen camino a seguir para el futuro?¿Será compatible?porque veo que necesitas .Net 2 (a más tardar) y Windows 8 viene con 4.5 y no 3 (por defecto) y la mayoría de las computadoras nuevas tendrán Office 2012 o 2013.
¿Fue útil?

Solución

Los PIA son un artefacto histórico, requerido solo por versiones antiguas de .NET (anteriores a v4).Han sido reemplazados completa y elegantemente por la función "Incrustar tipos de interoperabilidad", también conocida como función "Sin PIA".Compatible desde Visual Studio 2010, lo encontrará nuevamente en la ventana Propiedades cuando seleccione un ensamblaje de referencia.Por defecto es True.Un buen vídeo que cubre la tecnología subyacente es disponible aquí.

Esta es la razón por la que Microsoft no publica los PIA para Office 2013; en su lugar, esperan que usted incorpore los tipos de interoperabilidad.

La característica es muy deseable, evita que su cliente tenga que instalar los PIA en su máquina y que usted los incluya con su instalador.Resolver el problema cuando ninguno de los dos se ocupa de ello, un contratiempo demasiado común.Además, los PIA para Office son muy grandes, la gran ventaja de incorporar los tipos de interoperabilidad es que su ensamblaje solo contiene los tipos que realmente usa.Muchos megas reducidos a unos pocos kilos.

El flujo de trabajo es un poco diferente.En lugar de añadir una referencia a la Microsoft.Office.Interop ensamblados disponibles en el cuadro de diálogo Agregar referencia, pestaña .NET Framework, ahora usa la pestaña COM.Y elige, di: "Microsoft Excel 15.0 Object Library"para generar los tipos de interoperabilidad para un programa que usa Excel.Si carga un proyecto antiguo que anteriormente usaba PIA, simplemente elimine esos ensamblajes de referencia y vuelva a agregarlos desde la pestaña COM.

Tenga en cuenta que se pierde una función; es más difícil apuntar intencionalmente a una versión antigua de Office que en realidad no tiene instalada en su máquina de desarrollo.Si ese es un requisito, entonces aún necesita los PIA para esa versión, fuerce la opción Incrustar tipos de interoperabilidad en Verdadero en la ventana Propiedades.En realidad, hacer esto es cuestionable, a Microsoft le cuesta mantener las nuevas versiones de Office completamente compatibles con las versiones antiguas.Lo han mantenido durante 15 años pero se ha ido perdiendo fuerza.El peor de los casos es apuntar a una versión más reciente que la que tiene instalada en su máquina, lo que puede hacer que su programa falle. muy Es difícil diagnosticar excepciones como AccessViolationException.

Tenga en cuenta que debe realizar pequeñas modificaciones en su código para que funcione.El sintético"XxxxClass"las clases no están integradas, sólo las"Xxxx"interfaces.Simplemente elimine la palabra "Class" desde el nuevo declaración.

Otros consejos

vs 2015 Community con Office 365 - Por cualquier motivo, el agregado del objeto COM no funciona.La solución se encuentra en el GAC y encuentra los conjuntos de interopes, cópielo a un directorio TEMP, luego agregue a su proyecto como cualquier DLL.

Además, si no lo sabe, Windows 8 tiene versiones anteriores de Framework .NET, pero no están instalados de forma predeterminada.Ir a las funciones del programa ---> Agregar características a Windows ----> Y la primera casilla de verificación debe ser .NET 3.0 y quizás 2.0.Nota: Si está en un servidor WSUS, deberá decirle a Windows que obtenga los archivos de los servidores de Windows Update.Espero que ayude!

Oficialmente, no existe una compatibilidad atrasada de la PIA para la oficina.De hecho funciona.

Para las razones de compatibilidad hacia atrás, estoy usando la PIA para Office XP desde varios años y funciona bien con Office XP, 2003, 2007 y 2010 (aún no probado con 2013) y en Windows XP, Vista, 7 y 8.

Para compatibilidad con las diferentes versiones de Windows, estoy usando .NET Framework 3.5.

Para el futuro ... depende de lo que estés haciendo con la PIA.Si es posible, es mucho mejor lidiar directamente con los archivos XML abiertos o para crear un complemento para Word / Excel.

Acabo de descubrir que el Express Visual Studio 2013 ya no tiene soporte de oficina.Así que necesita al menos la versión pro para que funcione.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top