次の方法で共有


プロジェクトのモデリング

プロジェクトのオートメーションを実現する次のステップでは、標準のプロジェクト オブジェクト (Projects および ProjectItems コレクション、Project および ProjectItem オブジェクト、実装に固有の残りのオブジェクト) を実装します。 これらの標準オブジェクトは、Dteinternal.h ファイルで定義されています。 標準オブジェクトの実装は、BscPrj サンプルに用意されています。 これらのクラスをモデルとして使用して、他のプロジェクト タイプのプロジェクト オブジェクトと両立する独自の標準プロジェクト オブジェクトを作成できます。

オートメーション コンシューマーは、Solution("<UniqueProjName>") および ProjectItems (n) を呼び出せることを前提としています。ここで、n は、ソリューション内の特定のプロジェクトを取得するためのインデックス番号です。 このオートメーション呼び出しを行うと、環境では、ItemID パラメーターとして VSITEMID_ROOT が、VSHPROPID パラメーターとして VSHPROPID_ExtObject が渡されて、適切なプロジェクト階層で GetProperty が呼び出されます。 IVsHierarchy::GetProperty により、実装したコア Project インターフェイスを提供するオートメーション オブジェクトへの IDispatch ポインターが返されます。

IVsHierarchy::GetProperty の構文を次に示します。

HRESULT GetProperty (

VSITEMIDitemid

VSHPROPIDpropid

VARIANT *pvar

);

プロジェクトでは、入れ子に対応し、コレクションを使用して、プロジェクト項目のグループを作成します。 この階層構造は次のようになっています。

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

入れ子とは、入れ子になったオブジェクトを ProjectItems コレクションに含めることができるため、ProjectItem オブジェクトが同時に ProjectItems コレクションにもなれることを意味します。 基本的なプロジェクトのサンプルでは、この入れ子については説明しません。 Project オブジェクトを実装して、オートメーション モデル全体の設計を特徴付けるツリー状の構造に参加します。

プロジェクト オートメーションは、次の図のパスに従います。

Visual Studio プロジェクト オブジェクト

プロジェクトの自動化

Project オブジェクトを実装しない場合でも、プロジェクトの名前のみを含む汎用の Project オブジェクトが環境によって返されます。

関連項目