Share via


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 (

VSITEMIDitemid,

VSHPROPIDpropid,

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.

Visual Studio Project Objects 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.

Vedi anche