Definizione di modelli di progetto
Il passaggio successivo per fornire l'automazione per il progetto consiste nell'implementare gli oggetti progetto standard: gli Projects oggetti e ProjectItems
, gli Project
oggetti e ProjectItem e gli oggetti rimanenti univoci per l'implementazione. Questi oggetti standard sono definiti nel file Dteinternal.h. Nell'esempio BscPrj viene fornita un'implementazione degli oggetti standard. È possibile usare queste classi come modelli per creare oggetti progetto standard che si trovano side-by-side con oggetti di progetto di altri tipi di progetto.
Un consumer di automazione presuppone che sia in grado di chiamare Solution("<UniqueProjName>")
e ProjectItems (n
) dove n è un numero di indice per ottenere un progetto specifico nella soluzione. L'esecuzione di questa chiamata di automazione fa sì che l'ambiente chiami GetProperty nella gerarchia di progetto appropriata, passando VSITEMID_ROOT come parametro ItemID e VSHPROPID_ExtObject come parametro VSHPROPID. IVsHierarchy::GetProperty
restituisce un IDispatch
puntatore all'oggetto di automazione che fornisce l'interfaccia principale Project
implementata.
Di seguito è riportata la sintassi di IVsHierarchy::GetProperty
.
HRESULT GetProperty (
VSITEMID
itemid
,
VSHPROPID
propid
,
VARIANT
*pvar
);
I progetti supportano l'annidamento e usano raccolte per creare gruppi di elementi di progetto. La gerarchia ha un aspetto simile al seguente.
Projects
|- Project
|- ProjectItems (a collection of ProjectItem)
|- ProjectItem (single object) or ProjectItems (another collection)
L'annidamento significa che un ProjectItem oggetto può essere ProjectItems insieme contemporaneamente perché una ProjectItems
raccolta può contenere gli oggetti annidati. L'esempio di progetto di base non illustra questo annidamento. Implementando l'oggetto Project
, si partecipa alla struttura simile ad albero che caratterizza la progettazione del modello di automazione complessivo.
L'automazione del progetto segue il percorso nel diagramma seguente.
Automazione del progetto
Se non si implementa un Project
oggetto , l'ambiente restituirà comunque un oggetto generico Project
che contiene solo il nome del progetto.