プロジェクト サブタイプは、ベース プロジェクトのアグリゲーターとして構築されるため、プロジェクトの動作に大きな影響力があります。 このセクションでは、プロジェクト サブタイプによって拡張または変更できる機能の一部についてまとめています。
アグリゲーションによって得られる機能
プロジェクト サブタイプでは、アグリゲーションによって、次の表にまとめた多くのメソッドをベース プロジェクトでオーバーライドすることが可能になります。
アグリゲーションによってオーバーライドされるメソッド | プロジェクト サブタイプ |
---|---|
IVsHierarchy から: GetProperty SetProperty GetGuidProperty SetGuidProperty |
プロジェクト サブタイプを有効化する目的 - プロジェクト ノードのキャプションとアイコンを変更する。 - プロジェクトの Browse オブジェクトを完全にオーバーライドする。- プロジェクトの名前を変更できるかどうかを制御する。 - 並べ替え順序を制御する。 - ダイナミック ヘルプのユーザー コンテキストを制御する。 |
IVsProject から: GetItemContext |
プロジェクト サブタイプで、デザイナーやエディターに提供されるコンテキスト サービスを制御できるようにします。 |
IOleCommandTarget から: QueryStatus Exec QueryStatusCommand ExecCommand |
プロジェクト サブタイプを有効化する目的 - プロジェクト コマンドのコマンド ルーティングに参加する。 - プロジェクト アンビエント コマンドとソリューション エクスプローラー アクティブ コマンドの両方を追加、削除、または無効化する。 |
IVsFilterAddProjectItemDlg2 | [新しい項目の追加] ダイアログ ボックスでユーザーへの表示をフィルター処理するために、プロジェクト サブタイプを有効にします。 |
IVsSingleFileGeneratorFactory | プロジェクト サブタイプを有効化する目的 - ファイル拡張子を指定して既定のジェネレーターを決定する。 - 人間が判読できるジェネレーター名を COM オブジェクトにマップする。 |
プロジェクト サブタイプで使用されるプロパティ
次の表で詳しく説明する __VSSPROPID および __VSSPROPID2 列挙のプロパティを環境およびベース プロジェクト システムで使用すると、プロジェクト システムのさまざまな機能をプロジェクト サブタイプで制御できるようになります。
VSHPROPID プロパティ | プロジェクト サブタイプ |
---|---|
AddItemTemplatesGuid |
プロジェクト サブタイプで、[項目の追加] ダイアログ ボックスの内容を制御できるようにします。 プロジェクト サブタイプでは、テンプレート ディレクトリの新しい仕様の指定、新しい種類の項目の追加、既存の項目の削除、項目のサブセットの再編成を、ベース プロジェクトの [項目の追加] ダイアログ ボックスで実行できます。 |
PropertyPagesCLSIDList |
プロジェクト サブタイプで、構成から独立したプロパティ ページを追加または削除できるようにします。 |
CfgPropertyPagesCLSIDList |
プロジェクト サブタイプで、構成に依存したプロパティ ページを追加または削除できるようにします。 |
ExtObjectCATID |
プロジェクト サブタイプで、エクステンダー CATID を知ることによってプロジェクトまたはプロジェクト項目オブジェクトに対してオートメーション エクステンダーを提供できるようにします。 たとえば、プロジェクト サブタイプはカスタムの Project.Extender("<subtype>") オブジェクトを提供できます。 |
BrowseObjectCATID |
プロジェクト サブタイプで、エクステンダー CATID を知ることによって Browse オブジェクトに対してオートメーション エクステンダーを提供できるようにします。 たとえば、プロジェクト サブタイプは、追加のプロパティを Properties コレクションに追加できます。 |
CfgBrowseObjectCATID |
プロジェクト サブタイプで、プロジェクト構成ブラウズ オブジェクトに対してオートメーション エクステンダーを提供できるようにします。 たとえば、プロジェクト サブタイプは、追加のプロパティを Properties コレクションに追加できます。 |
CfgExtObjectCATID |
プロジェクト サブタイプで、構成オブジェクトに対してオートメーション エクステンダーを提供できるようにします。 |
DefaultPlatformName |
プロジェクト サブタイプで、プロジェクトの構成オブジェクトに対してプラットフォーム名を決定できるようにします。 |
ベース プロジェクトは、上記のプロパティの既定の実装を提供します。 ベース プロジェクトは、最も外側のプロジェクト サブタイプで IVsHierarchy の QueryInterface
を呼び出してこれらを取得し、プロジェクト サブタイプでプロパティの実装をオーバーライドできるようにします。