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


Моделирование проекта

Следующим шагом в предоставлении автоматизации для проекта является реализация стандартных объектов проекта: 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 (

VSITEMIDitemid,

VSHPROPIDpropid,

VARIANT *pvar

);

Проекты размещают вложенные и используют коллекции для создания групп элементов проекта. Иерархия выглядит следующим образом.

Projects
  |- Project
      |- ProjectItems (a collection of ProjectItem)
          |- ProjectItem (single object) or ProjectItems (another collection)

Вложение означает, что ProjectItem объект может быть ProjectItems коллекцией одновременно, так как ProjectItems коллекция может содержать вложенные объекты. Пример "Базовый проект" не демонстрирует это вложение. Реализуя Project объект, вы участвуете в структуре, похожей на дерево, которая характеризует структуру общей модели автоматизации.

Автоматизация проектов соответствует пути на следующей схеме.

Объекты проекта Visual Studio

Автоматизация проектов

Если объект не реализован Project , среда по-прежнему возвращает универсальный Project объект, содержащий только имя проекта.

См. также