Udostępnij za pośrednictwem


Modelowanie projektu

Następnym krokiem w dostarczaniu automatyzacji projektu jest zaimplementowanie standardowych obiektów projektu: Projects kolekcji i, Project obiektów i ProjectItems ProjectItem oraz pozostałych obiektów unikatowych dla implementacji. Te standardowe obiekty są definiowane w pliku Dteinternal.h. Implementacja obiektów standardowych jest dostępna w przykładzie BscPrj. Możesz użyć tych klas jako modeli, aby utworzyć własne standardowe obiekty projektu, które stoją obok siebie z obiektami projektu z innych typów projektów.

Użytkownik automatyzacji zakłada, że może wywołać metodę Solution("<UniqueProjName>") i ProjectItems (n), gdzie n jest numerem indeksu w celu uzyskania określonego projektu w rozwiązaniu. Wykonanie tego wywołania automatyzacji powoduje, GetProperty że środowisko wywołuje odpowiednią hierarchię projektu, przekazując VSITEMID_ROOT jako parametr ItemID i VSHPROPID_ExtObject jako parametr VSHPROPID. IVsHierarchy::GetPropertyIDispatch Zwraca wskaźnik do obiektu automatyzacji dostarczającego interfejs podstawowyProject, który został zaimplementowany.

Poniżej znajduje się składnia .IVsHierarchy::GetProperty

HRESULT GetProperty (

VSITEMIDitemid,

VSHPROPIDpropid,

VARIANT *pvar

);

Projekty umożliwiają zagnieżdżanie kolekcji i używanie ich do tworzenia grup elementów projektu. Hierarchia wygląda następująco.

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

Zagnieżdżanie oznacza, że obiekt może być ProjectItems jednocześnie kolekcjąProjectItem, ponieważ ProjectItems kolekcja może zawierać zagnieżdżone obiekty. Przykładowy projekt podstawowy nie demonstruje tego zagnieżdżania. Project Implementując obiekt, uczestniczysz w strukturze podobnej do drzewa, która charakteryzuje projekt ogólnego modelu automatyzacji.

Automatyzacja projektu jest zgodna ze ścieżką na poniższym diagramie.

Obiekty projektu programu Visual Studio

Automatyzacja projektu

Jeśli obiekt nie zostanie zaimplementowany Project , środowisko nadal zwróci obiekt ogólny Project zawierający tylko nazwę projektu.

Zobacz też