Моделирование проекта
Следующим шагом в предоставлении автоматизации для проекта является реализация стандартных объектов проекта: Projects коллекций и ProjectItems
коллекций, Project
а ProjectItem также оставшихся объектов, уникальных для реализации. Эти стандартные объекты определены в файле Dteinternal.h. Реализация стандартных объектов предоставляется в примере BscPrj. Эти классы можно использовать в качестве моделей для создания собственных стандартных объектов проекта, которые стоят параллельно с объектами проекта из других типов проектов.
Потребитель службы автоматизации предполагает возможность вызова Solution("<UniqueProjName>")
и ProjectItems (n
) где n является номером индекса для получения определенного проекта в решении. Вызов автоматизации приводит к вызову среды для вызова GetProperty соответствующей иерархии проекта, передав VSITEMID_ROOT в качестве параметра ItemID и VSHPROPID_ExtObject в качестве параметра VSHPROPID. IVsHierarchy::GetProperty
возвращает указатель на объект автоматизации, предоставляющий основной IDispatch
Project
интерфейс, который вы реализовали.
Ниже приведен синтаксис IVsHierarchy::GetProperty
.
HRESULT GetProperty (
VSITEMID
itemid
,
VSHPROPID
propid
,
VARIANT
*pvar
);
Проекты размещают вложенные и используют коллекции для создания групп элементов проекта. Иерархия выглядит следующим образом.
Projects
|- Project
|- ProjectItems (a collection of ProjectItem)
|- ProjectItem (single object) or ProjectItems (another collection)
Вложение означает, что ProjectItem объект может быть ProjectItems коллекцией одновременно, так как ProjectItems
коллекция может содержать вложенные объекты. Пример "Базовый проект" не демонстрирует это вложение. Реализуя Project
объект, вы участвуете в структуре, похожей на дерево, которая характеризует структуру общей модели автоматизации.
Автоматизация проектов соответствует пути на следующей схеме.
Автоматизация проектов
Если объект не реализован Project
, среда по-прежнему возвращает универсальный Project
объект, содержащий только имя проекта.