Modélisation de projet
L’étape suivante de la fourniture d’automatisation pour votre projet consiste à implémenter les objets de projet standard : les Projects et ProjectItems
collections ; les Project
objets et ProjectItem les objets restants propres à votre implémentation. Ces objets standard sont définis dans le fichier Dteinternal.h. Une implémentation des objets standard est fournie dans l’exemple BscPrj. Vous pouvez utiliser ces classes en tant que modèles pour créer vos propres objets de projet standard qui se trouvent côte à côte avec des objets de projet d’autres types de projet.
Un consommateur automation suppose de pouvoir appeler Solution("<UniqueProjName>")
et ProjectItems (n
) où n est un numéro d’index pour obtenir un projet spécifique dans la solution. L’exécution de cet appel d’automatisation entraîne l’appel GetProperty de l’environnement sur la hiérarchie de projet appropriée, en passant VSITEMID_ROOT en tant que paramètre ItemID et VSHPROPID_ExtObject en tant que paramètre VSHPROPID. IVsHierarchy::GetProperty
retourne un IDispatch
pointeur vers l’objet Automation fournissant l’interface principale Project
que vous avez implémentée.
Voici la syntaxe de IVsHierarchy::GetProperty
.
HRESULT GetProperty (
VSITEMID
itemid
,
VSHPROPID
propid
,
VARIANT
*pvar
);
Les projets prennent en charge l’imbrication et l’utilisation de collections pour créer des groupes d’éléments de projet. La hiérarchie ressemble à ceci.
Projects
|- Project
|- ProjectItems (a collection of ProjectItem)
|- ProjectItem (single object) or ProjectItems (another collection)
L’imbrication signifie qu’un ProjectItem objet peut être ProjectItems une collection en même temps, car une ProjectItems
collection peut contenir les objets imbriqués. L’exemple De projet de base ne montre pas cet imbrication. En implémentant l’objet Project
, vous participez à la structure de type arborescence qui caractérise la conception du modèle d’automatisation global.
L’automatisation du projet suit le chemin d’accès dans le diagramme suivant.
Automatisation du projet
Si vous n’implémentez pas d’objet Project
, l’environnement retourne toujours un objet générique Project
qui contient uniquement le nom du projet.