Arquitectura de VSPackage de control de código fuente

Un paquete de control de código fuente es un VSPackage que usa servicios que proporciona el IDE de Visual Studio. A cambio, un paquete de control de código fuente proporciona su funcionalidad como servicio de control de código fuente. Además, un paquete de control de código fuente es una alternativa más versátil que un complemento de control de código fuente para integrar el control de código fuente en Visual Studio.

Un complemento de control de código fuente que implementa la API del complemento de control de código fuente cumple un contrato estricto. Por ejemplo, un complemento no puede reemplazar la interfaz de usuario (UI) predeterminada de Visual Studio. Además, la API del complemento de control de código fuente no habilita un complemento para implementar su propio modelo de control de código fuente. Sin embargo, un paquete de control de código fuente supera ambas limitaciones. Un paquete de control de código fuente tiene control completo sobre la experiencia de control de código fuente de un usuario de Visual Studio. Además, un paquete de control de código fuente puede usar su propio modelo y lógica de control de código fuente, y puede definir todas las interfaces de usuario relacionadas con el control de código fuente.

Componentes del paquete de control de código fuente

Como se muestra en el diagrama de arquitectura, un componente de Visual Studio denominado código auxiliar de control de código fuente es un VSPackage que integra un paquete de control de código fuente con Visual Studio.

El código auxiliar de control de código fuente controla las siguientes tareas.

  • Proporciona la interfaz de usuario común necesaria para el registro de paquetes de control de código fuente.

  • Carga un paquete de control de código fuente.

  • Establece un paquete de control de código fuente como activo o inactivo.

    Código auxiliar de control de código fuente busca el servicio activo para el paquete de control de código fuente y enruta todas las llamadas de servicio entrantes del IDE a ese paquete.

    El paquete del adaptador de control de código fuente es un paquete especial de control de código fuente que proporciona Visual Studio. Este paquete es el componente central para admitir complementos de control de código fuente basados en la API del complemento de control de código fuente. Cuando un complemento de control de código fuente es el complemento activo, el código auxiliar de control de código fuente envía sus eventos al paquete del adaptador de control de código fuente. A su vez, el paquete del adaptador de control de código fuente se comunica con el complemento de control de código fuente mediante la API del complemento de control de código fuente y también proporciona una interfaz de usuario predeterminada que es común para todos los complementos de control de código fuente.

    Cuando un paquete de control de código fuente es el paquete activo, por otro lado, el código auxiliar de control de código fuente se comunica directamente con el paquete mediante las interfaces del Paquete de control de código fuente del SDK de Visual Studio. El paquete de control de código fuente es responsable de hospedar su propia interfaz de usuario de control de código fuente.

    Source Control Architecture graphic

    Para un paquete de control de código fuente, Visual Studio no proporciona código de control de código fuente ni una API para la integración. Contrasta esto con el enfoque descrito en Creación de un complemento de control de código fuente donde el complemento de control de código fuente tiene que implementar un conjunto rígido de funciones y devoluciones de llamada.

    Al igual que cualquier VSPackage, un paquete de control de código fuente es un objeto COM que se puede crear mediante CoCreateInstance. VSPackage se pone a disposición del IDE de Visual Studio mediante la implementación IVsPackagede . Cuando se ha creado una instancia, un VSPackage recibe un puntero de sitio y una IServiceProvider interfaz que proporciona acceso vsPackage a los servicios e interfaces disponibles en el IDE.

    La escritura de un paquete de control de código fuente basado en VSPackage requiere conocimientos de programación más avanzados que escribir un complemento basado en API de control de código fuente.