2009-07-01 14 views
5

Tengo Office 2007 en mi máquina de desarrollo. Tengo una pequeña aplicación que estoy creando para un servidor de clientes con Office 2003 que necesita hacer algo de interoperabilidad. Mi programa se ejecutará como una tarea programada en un proceso por lotes nocturno.Interoperabilidad de Office: desarrollo con PIA 2003 en una máquina con Office 2007

No importa lo que haga, no puedo encontrar la versión 11.0 del ensamblado de interoperabilidad de Access para que funcione en el servidor.

He intentado descargarlos explícitamente e instalarlos en mi máquina. Intenté instalar los ensamblados de interoperabilidad de 2007 en el servidor (una instalación completa de Office 2007 está descartada). Probé varias referencias COM diferentes. Intenté buscar el objeto COM en el servidor para hacer referencia en el proyecto de Visual Studio. Y he intentado muchas otras cosas pequeñas para enumerarlas todas aquí.

¿Qué está pasando aquí? ¿Cómo puedo hacer que esto funcione?

+0

Supongo que marcó C: \ WINDOWS \ assembly \ GAC \ Microsoft.Office.Interop.Access? –

+0

Sí, lo hice. –

+0

No sé sobre el entorno en el que está programando, pero ¿tiene que utilizar el enlace anticipado? ¿No hay ninguna forma de enlace tardío que pueda usar que sea independiente de la versión de Office? –

Respuesta

1

He encontrado la única manera de hacerlo, incluso con las dos versiones instaladas una al lado de la otra, en .Net v2 y superior, era agregar una referencia al PIA (en lugar de la lib COM). Frameork v1.1 realmente se uniría a la versión correcta, si estuvieran presentes una al lado de la otra.

+0

No puedo encontrar el archivo PIA en ninguna parte. –

+0

Bien: soy un idiota.No pude encontrar el archivo en el GAC del servidor, pero la versión 2007 (y solo la versión 2007, aunque he instalado explícitamente las PIA de 2003) está en mi GAC local. Desafortunadamente, esto todavía no funciona en el servidor y simplemente se bloquea cuando intento abrir el archivo de Access. Pero esa es una pregunta completamente diferente –

+0

Debo admitir que, para obtener los PIA en primer lugar, los extrajimos del GAC (los PIA de Office XP vienen en un bonito ZIP que los hace más fáciles de conseguir). No estoy seguro sobre las implicaciones de la licencia, pero ¿podría usted al lado del PIA? (obviamente todavía necesitaría Access allí) –

0

¿No puede copiar el PIA del servidor a su máquina (en una carpeta local) y luego agregar una referencia a esa copia?

Si te gusta ir de otra manera, podrías evitar usar los PIA y usar ComImport en su lugar. Andrew Whitechapel tiene los detalles en su blog:

Add-ins for Multiple Office Versions without PIAs

actualización (de comentarios): Si no puede localizar el PIA de acceso en el servidor que usted podría intentar lo siguiente:

  • Descargar la configuración del PIA de Office 2003 desde aquí: Office 2003 Update: Redistributable Primary Interop Assemblies

  • Extraiga el ejecutable autoextraíble en la línea de comandos (/? mostrará una lista de las opciones):

    >O2003PIA.exe /C /T:C:\PIA 
    
  • Ejecutar el MSI se extrae con habilitado el registro completo:

    >msiexec -i O2003PIA.msi /l*vx log.txt 
    

    y comprobar el registro para el ensamblado de interoperabilidad acceso y otras sugerencias si algo salió mal con la instalación. Como alternativa a este paso, puede usar una utilidad MSI Unpacker para geth el ensamblado.

+0

No, el archivo PIA no existe en el servidor en ninguna parte, incluso después de haberlo descargado e instalado manualmente. –

+0

BTW: solución interesante en el enlace, pero si utilizara algo así, me reirían de la sala en el momento de revisar el código. Puedo verlo ahora: "¿WTF es toda esta mierda?" –

+0

De hecho. Estamos ansiosos por VS 2010, que se encargará de todos los ComImports por usted ... –

Cuestiones relacionadas