汎用プロジェクト モデルと言語固有のプロジェクト モデル
更新 : 2007 年 11 月
Visual Studio には、汎用プロジェクト モデルとプログラミング言語固有のプロジェクト モデルの 2 種類のプロジェクト モデルが用意されています。
汎用プロジェクト モデル
汎用プロジェクト モデルは、次の種類によって表されます。
オブジェクト名 |
説明 |
---|---|
Projects コレクション |
ソリューション内のすべてのプロジェクトを表します。 |
Project オブジェクト |
ソリューション内のプロジェクトを表します。 |
ProjectItems コレクション |
指定したプロジェクトにあるすべての項目を表します。 |
ProjectItem オブジェクト |
指定したプロジェクトにある項目を表します。 |
これらのオブジェクトによって、Visual Studio のすべての種類の言語のプロジェクトを操作できるようになります。これらのオブジェクトを使用すると、以下のことができます。
プロジェクトを保存または削除します。
Visual Studio テンプレートに基づいて、新しいプロジェクト項目をプロジェクトに作成します。
既存のファイルからプロジェクト項目をプロジェクトに追加します。
プロジェクトからプロジェクト項目を削除します。
プロジェクトからプロジェクト項目を開き、保存し、削除します。
言語固有のプロジェクト モデル
一連の名前空間は、汎用的なプロジェクト関連のオブジェクトに加え、プログラミング言語固有のプロジェクトおよびプロジェクト項目のプロパティを表します。これらの名前空間を次に示します。
言語プロジェクトを表す主要なオブジェクトは、VSProject および VSProject2 です。VSProject2 は VSProject から派生します。また、後者は Project から派生します。プロジェクト項目は、VSProjectItem オブジェクトによって表されます。
プログラミング言語 |
名前空間 |
---|---|
Visual C# |
|
Visual Basic |
|
Visual J# |
|
Visual C++ |
Microsoft.VisualStudio.VCProject 型および Microsoft.VisualStudio.VCProjectEngine 型。 |
すべてのプログラミング言語 |
言語固有のオブジェクトは、汎用的なオブジェクトから派生しているため、汎用的な Project オブジェクトと ProjectItem オブジェクトではアクセスできない追加のプロパティ、メソッド、およびイベントにアクセスできることを除いては、基本的に同じように動作します。
言語固有のプロジェクト モデルの使用方法の詳細については、「プロジェクト機能拡張の概要」を参照してください。
Visual Studio .NET 2003 Visual C++ プロジェクトの変更点
Visual Studio .NET 2003 およびそれ以降では、Visual C++ の ProjectItems コレクションに対して特別な処理を行う必要はなくなっています。つまり、これまで Visual C++ の Projects コレクションでは、すべての Visual C++ プロジェクト ファイルがフラットなリストに格納されていましたが、他のプログラミング言語と同様に階層的に格納されるようになりました。
この変更は既存のコードに影響を及ぼす可能性があるため、プロジェクト内にファイルが存在するかどうかを確認するために ProjectItems コレクションのインデックスを作成するときに、新しいプロジェクト固有のオブジェクト モデルで以前の動作をエミュレートする方法が用意されています。最も大きな違いは、Visual C++ オブジェクト上で .Object を呼び出すことにより、DTE オブジェクト モデルに戻ることができるようになった点です。
[Visual Basic]
Dim proj as VCProject = DTE.ActiveSolutionProjects(1).Object
Dim fileColl as IVCCollection = proj.Files
Dim file as VCFile = fileColl.Item("MyFile.cpp")
Dim projItem as ProjectItem = file.Object