Tengo una aplicación desarrollada en Visual Studio 2005 que estoy implementando usando ClickOnce. Mi solución contiene dos proyectos: una capa de interfaz de usuario codificada en VB y una biblioteca de clase codificada en C#. La biblioteca de mi clase C# tiene algún código que usa las Asambleas de Interoperación de Outlook y Excel (Microsoft.Office.Interop.Outlook y Microsoft.Office.Interop.Excel, ambas versiones 11). Aquí están mis preguntasMicrosoft Office Interop Assembly referencias
- Aunque no he encontrado que esto se afirma como un absoluto, mi entendimiento es que debes tener las versiones adecuadas de las aplicaciones de Office (Outlook/Excel) con el fin de instalar una aplicación que utiliza la ensamblados de interoperabilidad . ¿Es esto correcto?
Si (1 = Sí) Entonces
¿Cómo manejaría la situación en la que la aplicación utiliza los ensamblados de interoperabilidad por sólo un par de características que va a ser utilizado por sólo unos pocos elegidos de la base total de usuarios? ¿Por qué debo exigir a cada usuario de mi aplicación que instale Microsoft Office si solo algunos usuarios necesitarán usar esas características? Estos ensambles Interop son solo .dll, entonces ¿qué los hace tan diferentes de otros en que no se puede simplemente publicar el archivo con su proyecto y hacer que satisfaga la referencia sin importar qué software está instalado en el cliente? (Claramente no entiendo bien el GAC y su efecto en el comportamiento de Visual Studio). Me gustaría escribir mi propio código para verificar la existencia del software de Office requerido para las pocas características que los usan. No Oficina, sin acceso a la función ...
Else
Si mi entendimiento sobre esto es incorrecto, entonces, ¿cómo puedo configurar mis referencias y ajustes de ClickOnce para que los usuarios no se encuentran con el siguiente mensaje de error tras intento de instalación?
"No se puede instalar o ejecutar la aplicación. La aplicación requiere que la versión 11.0.0.0 oficina de montaje se instala en el caché de ensamblados global (GAC) en primer lugar.
Póngase en contacto con el administrador del sistema."
- He intentado configurar mi referencia de Interoperación propiedad CopyLocal a True y False.
- En mi lista de archivos de la aplicación ClickOnce, he intentado configurar estos conjuntos para Incluir, Excluir y Prerrequisito.
- En mi investigación he visto que algunas personas tienen estas referencias que apuntan a * C: \ WINDOWS \ assembly \ GAC *, mina puntos a * C: \ Archivos de programa \ Microsoft Visual Studio 9.0 \ Visual Studio Tools para Office \ PIA \ Office11 * pero no he encontrado una forma de cambiar la ruta de referencia. De acuerdo con http://msdn.microsoft.com/en-us/library/ez524kew(VS.80).aspx NO PUEDE agregar referencias del GAC, entonces, ¿cómo lo administraron otras personas?
- He intentado copiar las referencias de * C: \ Archivos de programa \ Microsoft Visual Studio 9.0 \ Herramientas de Visual Studio para Office \ PIA \ Office11 * a mi directorio de proyecto y hacer referencia allí.
End If
supongo que lo más importante que hay que saber es cómo/si puedo incluir estos ensamblajes en mi publicación y satisfacer o pasar por alto el requisito GAC.
Siempre que sea posible, intente responder mis preguntas tan directamente como sea posible. Si bien los artículos son útiles, ya he leído MUCHOS artículos y he probado MUCHAS soluciones sugeridas y no he encontrado ningún éxito. Tenga en cuenta mi falta de comprensión de la logística de cómo funciona todo esto para empezar.
Perdóneme por mi falta de comprensión y gracias por cualquier ayuda que pueda ofrecer. ¡Es muy apreciado!
Gracias por su respuesta. Hasta el momento no he tenido problemas de conflicto de versiones: los usuarios con tanto 2003 como 2007 han podido usar estas funciones muy bien. Supongo que una pregunta más simple para apuntar realmente a lo que me pregunto es: ¿puedo hacer que mi aplicación sea instalable para usuarios que NO TIENEN CUALQUIER versión de Office, permitiéndoles usar las características que no son de Interop de mi aplicación? Entiendo que deben tener Outlook/Excel para usar mis funciones basadas en Interop, pero la mayor parte de mi aplicación no tiene nada que ver con Office. –
Me gustaría pensar que una instancia del código de Interop no limitaría por completo su aplicación a aquellos que tienen Office instalado. –
Una cosa que debes probar es usar Descargar a petición (http://msdn.microsoft.com/en-us/library/ak58kz04(VS.80).aspx) - deberías poder codificar para que antes de invocando/descargando el ensamblado que contiene sus clases de interoperabilidad de Office, se verifica si Office está instalado. Lo que no sé es si ClickOnce demora la verificación de dependencias hasta que realmente se solicite la descarga del ensamblaje Descargar a pedido o si se verifican todas las dependencias posibles fuera de la puerta de enlace. –