プロジェクト モデルの要素
Visual Studio 内のすべてのプロジェクトのインターフェイスと実装は、基本構造 (プロジェクト タイプに応じたプロジェクト モデル) を共有します。 開発中の VSPackage であるプロジェクト モデルでは、設計上の決定事項に準拠し、IDE で提供されるグローバル機能に連携するオブジェクトを作成します。 たとえば、プロジェクト項目を永続化する方法を制御しますが、ファイルを永続化する必要があるという通知は制御しません。 開いているプロジェクト項目にフォーカスを移動し、Visual Studio メニュー バーの [ファイル] メニューの [保存] を選択した場合、プロジェクト タイプ コードで、IDE からのコマンドを先に取得し、ファイルを永続化し、ファイルがこれ以上変更されないという通知を IDE に送信する必要があります。
VSPackage では、IDE インターフェイスにアクセスできるようにするサービスを通じて、IDE と対話します。 たとえば、特定のサービスを通じて、コマンドを監視およびルーティングし、プロジェクトで行われた選択に関するコンテキスト情報を提供します。 VSPackage に必要なすべてのグローバル IDE 機能は、サービスによって提供されます。 サービスの詳細については、「方法: サービスを取得する」を参照してください。
実装に関するその他の注意点:
1 つのプロジェクト モデルには、複数のプロジェクト タイプを含めることができます。
プロジェクト タイプとアテンダント プロジェクト ファクトリは、GUID とは別に登録されます。
ユーザーが Visual Studio UI を使用して新しいプロジェクトを作成するときに、新しいプロジェクト ファイルを初期化するには、各プロジェクトにテンプレート ファイルまたはウィザードが必要です。 たとえば、Visual C++ テンプレートは最終的に .vcproj ファイルとなるものを初期化します。
次の図は、一般的なプロジェクトの実装を構成する主要なインターフェイス、サービス、オブジェクトを示しています。 アプリケーションヘルパー (
HierUtil7
) を使用して、基になるオブジェクトやその他のプログラミング定型を作成できます。HierUtil7
アプリケーション ヘルパーの詳細については、「HierUtil7 プロジェクトクラスを使用してプロジェクトの種類を実装する (C++)」を参照してください。Project モデル
上の図に一覧表示されているインターフェイスおよびサービスと、図に含まれていないその他のオプションのインターフェイスの詳細については、「プロジェクト モデルのコア コンポーネント」を参照してください。
プロジェクトはコマンドをサポートできます。したがって、コマンド IOleCommandTarget コンテキスト GUID を使用してコマンド ルーティングに参加するには、インターフェイスを実装する必要があります。