¿Puedo seguir usando ensamblados Microsoft.Office.Interop con Office 2013?

Resuelto Zapnologica asked hace 10 años • 5 respuestas

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 van a tener Office 2012 o 2013.
Zapnologica avatar Jan 09 '14 14:01 Zapnologica
Aceptado

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. Su valor predeterminado es True. Un buen vídeo que cubre la tecnología subyacente está 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 agregar una referencia a los Microsoft.Office.Interopensamblados como está disponible en el cuadro de diálogo Agregar referencia, pestaña .NET Framework, ahora usa la pestaña COM. Y seleccione, digamos " 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 nueva que la que tiene instalada en su máquina, lo que puede hacer que su programa falle con excepciones muy difíciles de diagnosticar como AccessViolationException.

Tenga en cuenta que debe realizar pequeñas modificaciones en su código para que funcione. Las " " clases sintéticas XxxxClassno están integradas, sólo las " Xxxx" interfaces. Simplemente elimine la palabra " Class" de la nueva declaración.

Hans Passant avatar Jan 09 '2014 11:01 Hans Passant

Comunidad VS 2015 con Office 365: por alguna razón, Agregar desde el objeto COM no funciona. La solución es ingresar al GAC y buscar los ensamblados de interoperabilidad, copiarlos a un directorio temporal y luego agregarlos a su proyecto como cualquier DLL.

Rob avatar Sep 26 '2016 14:09 Rob

Además, si aún no lo sabes, Windows 8 tiene versiones anteriores de .NET Framework pero no están instaladas de forma predeterminada. Vaya a Funciones del programa ---> Agregar funciones a Windows ----> y la primera casilla de verificación debe ser .NET 3.0 y tal vez 2.0. Tenga en cuenta que si está en un servidor WSUS, deberá indicarle a Windows que tome los archivos de los servidores de Windows Update. ¡Espero eso ayude!

amoor005 avatar Jul 16 '2014 14:07 amoor005