Поделиться через


Пользовательский пользовательский интерфейс (VSPackage системы управления версиями)

VSPackage объявляет элементы меню и их состояния по умолчанию через файл командной таблицы Visual Studio (VSCT). Интегрированная среда разработки Visual Studio отображает элементы меню в их состояниях по умолчанию до загрузки VSPackage. QueryStatus Затем метод вызывается для включения или отключения элементов меню.

VSPackage может задать раздел реестра, чтобы VSPackage можно автоматически загружать в зависимости от контекста пользовательского интерфейса команды, хотя обычно vsPackage системы управления версиями должен загружаться по запросу, а не просто переключаться на определенный контекст пользовательского интерфейса. Дополнительные сведения о разделе реестра AutoLoadPackages см. в разделе "Управление VSPackages".

Пользовательский интерфейс VSPackage

Пакет управления версиями реализуется как VSPackage и не использует пользовательский интерфейс из Visual Studio. Каждый элемент управления версиями VSPackage должен указывать собственные элементы пользовательского интерфейса, такие как элементы меню, группы меню, окна инструментов, панели инструментов и любой необходимый пользовательский интерфейс для настройки параметров, относящихся к VSPackage системы управления версиями. Эти элементы пользовательского интерфейса можно включить статически или динамически. Статические элементы пользовательского интерфейса определяются в VSCT-файле и отображаются, загружается ли VSPackage. Элементы динамического пользовательского интерфейса могут отображаться в зависимости от определенного контекста пользовательского интерфейса команды, например vsContextNoSolutionили в результате вызова QueryStatus метода. Видимость динамических элементов пользовательского интерфейса соответствует стратегии задержки загрузки VSPackages.

Ограничения пользовательского интерфейса для VSPackage для управления версиями

Так как пакет УПРАВЛЕНИЯ версиями VSPackage не может быть удален из интегрированной среды разработки после загрузки, VSPackage должен иметь возможность ввести неактивное состояние. Когда VSPackage получает уведомление о том, что он больше не активен, VSPackage отключает пользовательский интерфейс и игнорирует любое внешнее взаимодействие IDE. Реализация QueryStatus метода VSPackage должна скрывать команды, если VSPackage не активен.

Каждый VSPackage системы управления версиями должен реализовать IVsSccProvider интерфейс. Два метода интерфейса SetActive и SetInactiveдолжны быть реализованы VSPackage.

VSPackage системы управления версиями может подписаться на различные события интегрированной среды разработки, которые реализуются IVsSolutionEvents3IVsTrackProjectDocumentsEvents2и т. д. Кроме того, VSPackage может реализовать интерфейсы обратного вызова с поддержкой реестра, такие как IVsSolutionPersistence. Эти интерфейсы должны игнорироваться при неактивном выполнении.

В следующем списке показаны интерфейсы, затронутые активным состоянием VSPackage системы управления версиями:

  • Отслеживание событий документов проекта.

  • События решения.

  • Интерфейсы сохраняемости решения. При неактивном выполнении пакеты не должны записывать файлы SLN и SUO .

  • Расширяющие свойства.

    Обязательные IVsQueryEditQuerySave2 и IVsSccManager2любые необязательные интерфейсы, связанные с системой управления версиями, не вызываются, когда VSPackage управления версиями неактивен.

    При запуске интегрированной среды разработки Visual Studio задает контекст пользовательского интерфейса команды идентификатору текущего элемента управления версиями VSPackage по умолчанию. Это приводит к тому, что статический пользовательский интерфейс активного элемента управления версиями VSPackage отображается в интегрированной среде разработки без фактической загрузки VSPackage. Visual Studio приостанавливает регистрацию VSPackage в Visual Studio до IVsRegisterScciProvider выполнения вызовов VSPackage.

    В следующей таблице описываются конкретные сведения о том, как интегрированная среда разработки Visual Studio скрывает различные элементы пользовательского интерфейса.

Элемент пользовательского интерфейса Description
Меню и панели инструментов Пакет управления версиями должен задать начальное меню и состояния видимости панели инструментов идентификатор пакета управления версиями в разделе VisibilityConstraints файла VSCT. Это позволяет интегрированной среде разработки Visual Studio задать состояние элементов меню соответствующим образом, не загружая VSPackage и вызывая реализацию QueryStatus метода.
Окна инструментов VSPackage системы управления версиями скрывает все окна инструментов, принадлежащие ему при неактивном выполнении.
Страницы параметров для управления версиями VSPackage Раздел реестра HKLM\SOFTWARE\Microsoft\VisualStudio\X.Y\ToolsOptionsPages\VisibilityCmdUIContexts позволяет vsPackage задать контексты, в которых требуется отображать страницы параметров. Запись реестра в этом разделе должна быть создана с помощью идентификатора службы (SID) службы управления версиями и назначения ему значения DWORD 1. Всякий раз, когда событие пользовательского интерфейса происходит в контексте регистрации VSPackage системы управления версиями, VSPackage будет вызываться, если он активен.