Пользовательский пользовательский интерфейс (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.

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

Так как 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, пока VSPackage не зарегистрируется в Visual Studio через IVsRegisterScciProvider.

    В следующей таблице описываются конкретные сведения о том, как интегрированная среда разработки 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 будет вызван, если он активен.