конструктор подтипов проекта
Подтипы проекта позволяют расширять проекты VSPackages, основанные на системе построения Майкрософт (msbuild). Использование агрегата позволяет повторно использовать большую часть системы проекта, реализованной в управляемой core Visual Studio но по-прежнему настраивать функциональности для конкретного сценария.
В следующих подразделах проектирования и углубленную детализацию базовую реализацию подтипов проекта:
Конструктор подтипа проекта.
Многоуровневый агрегат.
Поддержка интерфейсов.
Конструктор подтипа проекта
Инициализация подтипа проекта достигается путем статистического вычисления main IVsHierarchy и IVsProject объекты. Это статистическое выражение позволяет подтип проекта для переопределения или расширить большинство возможностей базового проекта. Подтипы проекта получают возможность настроить свойства с помощью первый IVsHierarchyс помощью команды IOleCommandTarget и IVsUIHierarchyи управление с помощью элемента проекта IVsProject3. Подтипы проекта также могут расширять:
Объекты конфигурации проекта.
Объекты Конфигурация-зависимой ячейки.
Конфигурация-независимо просмотр объектов.
Объекты автоматизации проектов.
Коллекции свойств автоматизации проектов.
Дополнительные сведения о расширяемости для подтипов проекта см. в разделе свойства и методы расширенные подтипами проекта.
Файлы политики
Visual Studio среда пример расширения базовую систему проекта с подтипом проекта в своей реализации файлов политики. Файл политики позволяет являющаяся Visual Studio среда для управления функции, включающие обозревателе решений Добавьте в проект откроется диалоговое окно Добавление нового элемента диалоговое окно и Свойства диалоговое окно. Подтип политики переопределяет эти функции и увеличивается до конца IVsFilterAddProjectItemDlg" IOleCommandTarget и IVsUIHierarchy реализации.
Механизм статистической обработки
Механизм статистической обработки подтипа проекта среды поддерживает несколько уровней статистической обработки, таким образом разрешая расширенный подтип, который реализует более дальнеиший flavoring приправленный проект. Кроме того, вспомогательные объекты, такие как подтипа проекта IVsProjectFlavorCfgвыберите проектирование, чтобы разрешить использовать несколько уровней наслаивать. 0Nв Соответствии с ограничениями правилами статистической обработки модели COM и модели COM, подтипы проекта и базовые проекты должны быть запрограммированным совместно, чтобы включить внутренний или подтип базовый проект правильно участвовать в делегируя вызовах метода и счетчики ссылок управления. Иными словами, проект будет статистической обработке должен быть запрограммирован для поддержки статистической обработки.
На следующем рисунке показано схематическое представление многоуровневого агрегата подтипа проекта.
Многоуровневый подтип проекта
Многоуровневый агрегат подтипа проекта состоит из 3 уровней базового проекта, статистическая обработка подтипом проекта, затем далее статистическая обработка проводится дополнительным подтипом данного проекта. Диаграмма фокусируется на некоторых поддержка интерфейсов, предоставляемых как часть Visual Studio архитектура подтипа проекта.
Механизмы развертывания
Улучшенные функциональные возможности для множества из базового системы проектов подтипом проекта механизмы развертывания. Подтип проекта влияет на механизмы развертывания, реализовав интерфейсы конфигурации (например, IVsDeployableProjectCfg и IVsBuildableProjectCfg), восстанавливается путем вызова QueryInterface on IVsProjectCfgProvider. В сценарии, где и подтип проекта, и предварительного подтип проекта добавить различные реализации конфигурации основные вызовы проекта QueryInterface в расширенном подвиде проекта IUnknown. Если внутренний подтип проекта содержит реализацию конфигурации, базовый проект запрашивает, необходимые делегаты подтипа проекта в реализации заданных внутренним подтипом данного проекта. По мере того, как механизм для сохранения состояния из одного слоя в другой статистической обработки всех уровней " подтипов проекта IPersistXMLFragment сохранение non-построение связанных данных XML в файлы проекта. Дополнительные сведения см. в разделе Сохранение данных в файле проекта MSBuild. IInternalExtenderProvider реализует как механизм для получения расширители автоматизации из подтипов проекта.
Ниже рассматриваются реализации расширителей автоматизации, конфигурация проекта обзор объект в частности, используемое для подтипов проекта, чтобы расширить основную систему проектов.
Расширитель автоматизации подтипа проекта.
Подтипы проектов могут дальше расширить систему проекта, расширяющие базовую объектную модель автоматизации. Они указываются как часть объекта автоматизации DTE и используются для расширения проекта, объект ProjectItem объект и Configuration объект. Дополнительные сведения см. в разделе Расширение объектную модель базового проекта.
Многоуровневый агрегат
Реализации подтипа проекта, которая создает программу-оболочку подтип проекта более низком уровне, необходимо запрограммированным совместно, чтобы разрешить внутренний подтип проекта, чтобы работать правильно. Список ответственностей программирования включает:
Save реализация подтипа проекта, который создает внутренний подтип должны делегировать в программу-оболочку IPersistXMLFragment реализация внутреннего подтипа для обоих проектов IPersistXMLFragment и Load методы.
IInternalExtenderProvider реализация подтипа проекта программы-оболочки должен делегировать этому из своего внутреннего подтипа проекта. В частности, реализации GetExtenderNames требуется получить строку имен из внутреннего подтипа проекта, а затем сцепления строк как он желает добавить расширителей.
IVsProjectCfgProvider реализация подтипа программы-оболочки создать экземпляр проекта IVsProjectFlavorCfg объект внутреннего подтипа проекта и сохраняет его как закрытый делегат, поскольку только объект конфигурации проекта базового проекта непосредственно знает, что объект конфигурации подтипа проекта программы-оболочки существует. Внешний подтип проекта может изначально выбрать интерфейсы конфигурации его необходимо обрабатывать непосредственно, а затем остальные делегатов реализации внутреннего подтипа проекта get_CfgType.
Поддержка интерфейсов
Базовый проект вызовы делегатов, поддерживающий интерфейсы, добавленным подтипом данного проекта, чтобы расширить различные аспекты реализации. Это включает расширение объекты конфигурации проекта, а также различные объекты обозревателя свойств. Эти интерфейсы получены путем вызова QueryInterface на punkOuter (указатель IUnknown) внешней накопителя подтипа проекта.
Интерфейс |
Подтип проекта |
---|---|
Разрешает подтип проекта:
|
|
Разрешает подтип проекта:
Значения свойств берутся из вышеуказанных __VSHPROPID2 перечисление. |
|
Разрешает подтип проекта для сопоставления обратно к IVsCfg объект заданную конфигурацию проекта обзор объект. |
|
Разрешает подтип проекта для сопоставления обратно к IVsHierarchy или VSITEMID объект, заданную конфигурацию проекта обзор объект. |
|
Разрешает подтип проекта для сохранения произвольные структурированные данные XML в файл проекта (с расширением vbproj или csproj). Эти данные скрыты в msbuild. |
|
Разрешает подтип проекта:
|