Compartir a través de


Interfaz de usuario personalizada (VSPackage de control de código fuente)

Un VSPackage declara sus elementos de menú y sus estados predeterminados a través del archivo de tabla de comandos de Visual Studio (.vsct). El entorno de desarrollo integrado (IDE) de Visual Studio muestra los elementos de menú en sus estados predeterminados hasta que se carga VSPackage. Posteriormente, se llama al método QueryStatus para habilitar o deshabilitar los elementos de menú.

Un VSPackage puede establecer una clave del Registro para que se pueda cargar automáticamente dependiendo de un contexto de interfaz de usuario (UI) de comandos, aunque normalmente un VSPackage de control de código fuente debe cargarse a petición en lugar de simplemente cambiar a un contexto de interfaz de usuario determinado. Para obtener más información sobre la clave del Registro AutoLoadPackages , consulte Administración de VSPackages.

INTERFAZ de usuario de VSPackage

Un paquete de control de código fuente se implementa como VSPackage y no usa ninguna interfaz de usuario de Visual Studio. Cada control de código fuente VSPackage debe especificar sus propios elementos de interfaz de usuario, como elementos de menú, grupos de menús, ventanas de herramientas, barras de herramientas y cualquier interfaz de usuario necesaria para establecer opciones específicas del control de código fuente VSPackage. Estos elementos de interfaz de usuario se pueden habilitar de forma estática o dinámica. Los elementos estáticos de la interfaz de usuario se definen en un archivo .vsct y se muestran si el VSPackage se carga o no. Los elementos dinámicos de la interfaz de usuario pueden ser visibles en función de un contexto de interfaz de usuario de comando determinado, como vsContextNoSolution, o como resultado de una llamada al QueryStatus método . La visibilidad de los elementos dinámicos de la interfaz de usuario cumple con la estrategia para la carga retrasada de VSPackages.

Restricciones de interfaz de usuario en VSPackages de control de código fuente

Dado que el VSPackage de control de código fuente no se puede quitar del IDE después de cargarse, el VSPackage debe poder entrar en un estado inactivo. Cuando un VSPackage recibe una notificación de que ya no está activo, VSPackage deshabilita su interfaz de usuario y omite cualquier interacción del IDE externo. La implementación del VSPackage en el método QueryStatus debe ocultar los comandos cuando el VSPackage no está activo.

Cada control de código fuente VSPackage debe implementar la IVsSccProvider interfaz. El VSPackage debe implementar dos métodos en la interfaz SetActive y SetInactive.

El control de código fuente VSPackage puede haberse suscrito a varios eventos IDE, que se implementan mediante IVsSolutionEvents3, IVsTrackProjectDocumentsEvents2, etc. Además, VSPackage puede haber implementado interfaces de devolución de llamada habilitadas para el Registro, como IVsSolutionPersistence. Todas estas interfaces deben omitirse cuando están inactivas.

En la lista siguiente se muestran las interfaces afectadas por el estado activo de un VSPackage de control de código fuente:

  • Haga seguimiento de los eventos de los documentos del proyecto.

  • Eventos de la solución.

  • Interfaces de persistencia de soluciones. Cuando estén inactivos, los paquetes no deben escribir en los archivos .sln y .suo.

  • Ampliadores de propiedad.

    Cuando el VSPackage del control de código fuente está inactivo, no se llaman las interfaces necesarias IVsQueryEditQuerySave2 y IVsSccManager2, ni las interfaces opcionales asociadas con el control de código fuente.

    Cuando se inicia el IDE de Visual Studio, Visual Studio establece el contexto de la interfaz de usuario del comando en el identificador del control de código fuente predeterminado actual VSPackage ID. Esto hace que la interfaz de usuario estática del control de código fuente activo VSPackage aparezca en el IDE sin cargar realmente VSPackage. Visual Studio se detiene para que VSPackage se registre con Visual Studio a través de IVsRegisterScciProvider antes de realizar las llamadas a VSPackage.

    En la tabla siguiente se describen detalles específicos sobre cómo el IDE de Visual Studio oculta distintos elementos de interfaz de usuario.

Elemento de interfaz de usuario Description
Menús y barras de herramientas El paquete de control de código fuente debe establecer los estados de visibilidad del menú inicial y la barra de herramientas en el identificador del paquete de control de código fuente en la sección VisibilityConstraints del archivo .vsct . Esto permite al IDE de Visual Studio establecer el estado de los elementos de menú adecuadamente sin cargar VSPackage y llamar a una implementación del QueryStatus método .
Ventanas de herramientas El control de código fuente VSPackage oculta las ventanas de herramientas que posee cuando se hace inactiva.
Páginas de opciones específicas de VSPackage del control de código fuente La clave del Registro HKLM\SOFTWARE\Microsoft\VisualStudio\X.Y\ToolsOptionsPages\VisibilityCmdUIContexts permite que un VSPackage establezca los contextos en los que requiere que se muestren sus páginas de opciones. Una entrada del Registro bajo esta clave tendría que crearse mediante el identificador de servicio (SID) del servicio de control de código fuente y asignarle un valor DWORD de 1. Cada vez que se produce un evento de interfaz de usuario en un contexto con el que el VSPackage de control de código fuente está registrado, se llamará al VSPackage si está activo.