Compartir a través de


Arquitectura de los complementos de nivel de aplicación

Actualización: noviembre 2007

Se aplica a

La información de este tema sólo se aplica a los proyectos de Visual Studio Tools para Office y versiones de Microsoft Office especificados.

Tipo de proyecto

  • Proyectos de nivel de aplicación

Versión de Microsoft Office

  • Microsoft Office System 2007

  • Microsoft Office 2003

Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto.

Los complementos que se crean con Visual Studio Tools para Office tienen unas características arquitectónicas que ponen de manifiesto la estabilidad y seguridad, y les permiten trabajar estrechamente con Microsoft Office. En este tema se describen los aspectos siguientes de los complementos de Visual Studio Tools para Office:

  • Introducción a los complementos

  • Componentes de los complementos

  • Cómo funcionan los complementos con Microsoft Office System 2007

  • Cómo funcionan los complementos con Microsoft Office 2003

  • Comportamiento de cierre de los complementos de Outlook 2003

Para obtener información general acerca de cómo se utilizan los complementos de Visual Studio Tools para Office, vea Información general sobre el desarrollo de soluciones de Office y Introducción a la programación de complementos de nivel de aplicación.

Introducción a los complementos

Cuando genera un complemento con Visual Studio Tools para Office, crea un ensamblado de código administrado que se carga mediante una aplicación de Microsoft Office. Una vez que se ha cargado el ensamblado, el complemento puede responder a los eventos que se inician en la aplicación (por ejemplo, cuando un usuario hace clic en un elemento de menú). El complemento también puede realizar una llamada en el modelo de objetos para automatizar y extender la aplicación, y puede utilizar cualquiera de las clases de .NET Framework.

El ensamblado se comunica con los componentes COM de la aplicación a través del ensamblado de interoperabilidad primario de la aplicación. Para obtener más información, consulte Ensamblados de interoperabilidad primarios de Office y Información general sobre el desarrollo de soluciones de Office.

Visual Studio Tools para Office carga cada complemento en un dominio de aplicación diferente. Esto significa que un complemento que se comporta incorrectamente no puede provocar errores en otros complementos. También garantiza que cuando se cierra la aplicación, se cierra todo el código y los ensamblados se descargan de la memoria. Para obtener más información sobre dominios de aplicación, vea Información general sobre dominios de aplicación.

Nota:

Los complementos que se crean con Visual Studio Tools para Office están diseñados para utilizarse únicamente cuando la aplicación de Microsoft Office la inicia un usuario final. Si se inicia la aplicación mediante programación (por ejemplo, utilizando Automatización), es posible que el complemento no funcione según lo previsto.

Componentes de los complementos

Aunque el ensamblado de complemento es el componente principal, hay algunos otros componentes que representan un papel importante en el modo en que Microsoft Office detecta las aplicaciones y carga los complementos.

Entradas del Registro

Para detectar los complementos, las aplicaciones de Microsoft Office buscan un conjunto de entradas del Registro. La mayoría de las entradas del Registro son iguales para las versiones 2003 y 2007 de Microsoft Office, pero una clave es diferente:

  • Las aplicaciones de Microsoft Office System 2007 buscan la entrada Manifest en la clave HKEY_CURRENT_USER\Software\Microsoft\Office\nombre de la aplicación\Complementos\identificador del complemento (o, en el caso de Visio, en HKEY_CURRENT_USER\Software\Microsoft\Visio\Complementos\identificador del complemento). La entrada Manifest especifica la ruta de acceso completa del manifiesto de implementación.

  • Las aplicaciones de Microsoft Office 2003 buscan las entradas ManifestName y ManifestLocation en la clave HKEY_CURRENT_USER\Software\Microsoft\Office\nombre de la aplicación\Complementos\identificador del complemento (o, en el caso de Visio, en HKEY_CURRENT_USER\Software\Microsoft\Visio\Complementos\identificador del complemento). Estas entradas especifican la ubicación y el nombre del manifiesto de aplicación.

Cuando genera una solución, Visual Studio Tools para Office crea todas las entradas del Registro necesarias en el equipo de desarrollo para que pueda depurar y ejecutar el complemento. Para obtener más información, consulte Información general acerca del proceso de compilación de soluciones de Office

Para obtener una lista completa de las entradas del Registro que utilizan los complementos, vea Entradas del Registro de complementos de nivel de aplicación.

Nota:

Puede implementar un complemento de Visual Studio Tools para Office para Microsoft Office 2003 de modo que esté a disposición de todos los usuarios de un equipo; para ello, cree las claves del Registro en HKEY_LOCAL_MACHINE en lugar de en HKEY_CURRENT_USER. Sin embargo, no puede implementar un complemento de Visual Studio Tools para Office para Microsoft Office System 2007 que esté a disposición de todos los usuarios de un equipo registrando el complemento en HKEY_LOCAL_MACHINE. Las aplicaciones de Microsoft Office System 2007 sólo reconocen los complementos de Visual Studio Tools para Office que están registrados en HKEY_CURRENT_USER.

Manifiesto de implementación y manifiesto de aplicación

Los complementos utilizan manifiestos de implementación y manifiestos de aplicación para identificar y cargar la versión más reciente del ensamblado de complemento. El manifiesto de implementación apunta al manifiesto de la aplicación actual. El manifiesto de aplicación señala al ensamblado de complemento y especifica la clase de punto de entrada que se va a ejecutar en el ensamblado. Para obtener más información, consulte Manifiestos de implementación y aplicación en soluciones de Office.

Motor en tiempo de ejecución de Microsoft Visual Studio Tools para Office

Para ejecutar complementos creados con Visual Studio Tools para Office, los equipos de usuario final deben tener instalado el motor en tiempo de ejecución de Visual Studio Tools para Office. El motor en tiempo de ejecución incluye los componentes no administrados y un conjunto de ensamblados administrados. Los componentes no administrados cargan el ensamblado de complemento. Los ensamblados administrados proporcionan el modelo de objetos que utiliza el código del complemento para automatizar y extender la aplicación host.

Para obtener más información, consulte Información general sobre el motor en tiempo de ejecución de Microsoft Visual Studio Tools para Office.

Cómo funcionan los complementos con Microsoft Office System 2007

Cuando un usuario inicia una aplicación en Microsoft Office System 2007, la aplicación utiliza el manifiesto de implementación y el manifiesto de aplicación para buscar y cargar la versión más reciente del ensamblado de complemento. En la ilustración siguiente se muestra la arquitectura básica de estos complementos.

Arquitectura de complementos en Microsoft Office System 2007

Proceso de carga

Los siguientes pasos tienen lugar cuando un usuario inicia una aplicación:

  1. La aplicación busca en el Registro las entradas que identifican los complementos que se crearon con Visual Studio Tools para Office.

  2. Si la aplicación encuentra estas entradas del Registro, la aplicación carga VSTOEE.dll, que, a su vez, carga VSTOLoader.dll. Se trata de archivos DLL no administrados que son los componentes del cargador del Microsoft Visual Studio Tools para Microsoft Office System (versión 3.0 Runtime). Para obtener más información, consulte Información general sobre el motor en tiempo de ejecución de Microsoft Visual Studio Tools para Office.

  3. VSTOLoader.dll carga .NET Framework e inicia la parte administrada del motor en tiempo de ejecución de Visual Studio Tools para Office.

  4. El motor en tiempo de ejecución de Visual Studio Tools para Office busca actualizaciones de los manifiestos y descarga las versiones más recientes de los manifiestos de aplicación e implementación.

  5. El motor en tiempo de ejecución de Visual Studio Tools para Office realiza una serie de comprobaciones de seguridad. Para obtener más información, consulte Seguridad en las soluciones de Office (2007 System).

  6. Si se confía en el complemento para que se ejecute, el motor en tiempo de ejecución de Visual Studio Tools para Office utiliza los manifiestos de implementación y aplicación para buscar actualizaciones del ensamblado. Si una nueva versión del ensamblado está disponible, el motor en tiempo de ejecución descarga la nueva versión del ensamblado en la memoria caché de ClickOnce del equipo cliente. Para obtener más información, consulte Implementar soluciones de Office (2007 System).

  7. El motor en tiempo de ejecución de Visual Studio Tools para Office crea un nuevo dominio de aplicación en el que se carga el ensamblado de complemento.

  8. El motor en tiempo de ejecución de Visual Studio Tools para Office carga el ensamblado de complemento en el dominio de aplicación.

  9. El motor en tiempo de ejecución de Visual Studio Tools para Office llama al método RequestComAddInAutomationService del complemento, si lo ha invalidado.

    Si lo desea, puede invalidar este método para exponer un objeto del complemento a otras soluciones de Microsoft Office. Para obtener más información, consulte Llamar a código en complementos de nivel de aplicación desde otras soluciones de Office.

  10. El motor en tiempo de ejecución de Visual Studio Tools para Office llama al método RequestService del complemento, si lo ha invalidado.

    Si lo desea, puede invalidar este método para extender una característica de Microsoft Office System 2007; para ello, debe devolver un objeto que implemente una interfaz de extensibilidad. Para obtener más información, consulte Personalizar características de la interfaz de usuario mediante interfaces de extensibilidad.

  11. El motor en tiempo de ejecución de Visual Studio Tools para Office llama al método ThisAddIn_Startup en el complemento. Este método es el controlador de eventos predeterminado del evento Startup. Para obtener más información, consulte Eventos de proyectos de Visual Studio Tools para Office.

Nota:

El motor en tiempo de ejecución de Visual Studio Tools para Office realiza llamadas independientes al método RequestService en cada interfaz de extensibilidad admitida por la aplicación host. Aunque la primera llamada al método RequestService normalmente se produce antes de la llamada al método ThisAddIn_Startup, el complemento no debería tener ninguna idea preconcebida acerca de cuándo o cuántas veces se llamará al método RequestService.

Cómo funcionan los complementos con Microsoft Office 2003

Cuando un usuario inicia una aplicación de Microsoft Office, la aplicación utiliza información del manifiesto de aplicación (y, opcionalmente, del manifiesto de implementación) para cargar el ensamblado de complemento. En la ilustración siguiente se muestra la arquitectura básica de un complemento en una aplicación de Microsoft Office 2003.

Arquitectura de complementos en Microsoft Office 2003

Proceso de carga

Los siguientes pasos tienen lugar cuando un usuario inicia una aplicación:

  1. La aplicación busca en el Registro las entradas que identifican los complementos que se crearon con Visual Studio Tools para Office.

  2. Si la aplicación encuentra estas entradas del Registro, la aplicación carga VSTOEE.dll, que, a su vez, carga AddinLoader.dll. Se trata de archivos DLL no administrados que son los componentes del cargador del Visual Studio 2005 Tools para Office Second Edition runtime. Para obtener más información, vea Información general sobre el motor en tiempo de ejecución de Microsoft Visual Studio Tools para Office.

  3. AddinLoader.dll carga .NET Framework e inicia la parte administrada del motor en tiempo de ejecución de Visual Studio Tools para Office.

  4. El motor en tiempo de ejecución de Visual Studio Tools para Office crea un nuevo dominio de aplicación, establece la directiva en el dominio de aplicación para no confiar en la zona de Mi PC y comprueba el almacén de directivas de seguridad de acceso del código para buscar una directiva para el ensamblado de complemento.

  5. .NET Framework valida las pruebas presentadas por el ensamblado respecto a la directiva del dominio de aplicación. Si no se cumple, se genera un error. Si la validación es correcta, el proceso continúa.

  6. Si el complemento utiliza un manifiesto de implementación, el motor en tiempo de ejecución de Visual Studio Tools para Office lo utiliza para buscar actualizaciones del ensamblado. Si es necesario aplicar actualizaciones, se realizan en este momento.

  7. El motor en tiempo de ejecución de Visual Studio Tools para Office carga el ensamblado de complemento en el nuevo dominio de aplicación.

  8. El motor en tiempo de ejecución de Visual Studio Tools para Office llama al método RequestComAddInAutomationService del complemento, si lo ha invalidado.

    Si lo desea, puede invalidar este método para exponer un objeto del complemento a otras soluciones de Microsoft Office. Para obtener más información, consulte Llamar a código en complementos de nivel de aplicación desde otras soluciones de Office.

  9. El motor en tiempo de ejecución de Visual Studio Tools para Office llama al método ThisAddIn_Startup en el complemento. Este método es el controlador de eventos predeterminado del evento Startup. Para obtener más información, vea Eventos de proyectos de Visual Studio Tools para Office.

Comportamiento de cierre de los complementos de Outlook 2003

Si está migrando un complemento COM de Outlook 2003 existente (es decir, un complemento que directamente implementa la interfaz IDTExtensibility2 ) a Visual Studio Tools para Office, quite todo el código destinado a evitar posibles problemas de cierre. De lo contrario, este código podría entrar en conflicto con el proceso de cierre de los complementos de Outlook 2003 creados con Visual Studio Tools para Office o el complemento podría descargarse antes de tiempo.

Nota:

El comportamiento descrito en esta sección no se aplica a los complementos de Outlook 2007. Outlook 2007 siempre llama al método OnDisconnection en un complemento, incluso si el complemento tiene referencias a objetos de Outlook.

Información general del problema de cierre

Siempre que un complemento COM tenga una referencia a uno o varios objetos de Outlook, Outlook 2003 no llama al método OnDisconnection en el complemento. Si el complemento tiene referencias a objetos que sólo se limpian en el método OnDisconnection, Outlook 2003 nunca llama al método OnDisconnection. Como resultado, el complemento nunca se carga y Outlook 2003 nunca se cierra.

Cómo se resuelve el problema de cierre en Visual Studio Tools para Office

Los complementos de Outlook 2003 creados con Visual Studio Tools para Office se descargan de forma que se evita este problema. El motor en tiempo de ejecución de Visual Studio Tools para Office provoca el evento Shutdown del complemento y descarga el dominio de aplicación del complemento si el complemento no tiene referencias a ningún objeto Explorer ni Inspector cuando se produce una de las siguientes situaciones:

Cuando se descarga el dominio de aplicación, se limpian todas las referencias pendientes a otros objetos de Outlook y, a continuación, Outlook 2003 puede cerrar el complemento y salir.

Vea también

Conceptos

Arquitectura de las personalizaciones de nivel de documento

Información general sobre el motor en tiempo de ejecución de Microsoft Visual Studio Tools para Office

Programar complementos de nivel de aplicación

Desarrollar soluciones de Office

Otros recursos

Arquitectura de las soluciones de Visual Studio Tools para Office

Seguridad en las soluciones de Office

Implementar soluciones de Office