Modelado de proyectos
El siguiente paso para proporcionar automatización para el proyecto es implementar los objetos de proyecto estándar: las Projects colecciones y ProjectItems
, los Project
objetos y ProjectItem y y los objetos restantes únicos para la implementación. Estos objetos estándar se definen en el archivo Dteinternal.h. En el ejemplo BscPrj se proporciona una implementación de los objetos estándar. Puede usar estas clases como modelos para crear sus propios objetos de proyecto estándar que se den en paralelo con objetos de proyecto de otros tipos de proyecto.
Un consumidor de automatización supone poder llamar Solutiona ("<UniqueProjName>")
y ProjectItems (n
) donde n es un número de índice para obtener un proyecto específico en la solución. Realizar esta llamada de automatización hace que el entorno llame GetProperty a en la jerarquía de proyectos adecuada, pasando VSITEMID_ROOT como parámetro ItemID y VSHPROPID_ExtObject como parámetro VSHPROPID. IVsHierarchy::GetProperty
devuelve un IDispatch
puntero al objeto de automatización que proporciona la interfaz principal Project
, que ha implementado.
A continuación se muestra la sintaxis de IVsHierarchy::GetProperty
.
HRESULT GetProperty (
VSITEMID
itemid
,
VSHPROPID
propid
,
VARIANT
*pvar
);
Los proyectos admiten el anidamiento y usan colecciones para crear grupos de elementos de proyecto. La jerarquía tiene este aspecto.
Projects
|- Project
|- ProjectItems (a collection of ProjectItem)
|- ProjectItem (single object) or ProjectItems (another collection)
El anidamiento significa que un ProjectItem objeto puede ser ProjectItems colección al mismo tiempo porque una ProjectItems
colección puede contener los objetos anidados. El ejemplo de proyecto básico no muestra este anidamiento. Al implementar el Project
objeto, participa en la estructura similar a árbol que caracteriza el diseño del modelo de automatización general.
La automatización del proyecto sigue la ruta de acceso del diagrama siguiente.
Automatización de proyectos
Si no implementa un Project
objeto, el entorno seguirá devolviendo un objeto genérico Project
que contenga solo el nombre del proyecto.