泛型项目模型与语言特定的项目模型比较
Visual Studio 提供两种类型的项目模型:泛型项目模型和编程语言特定的项目模型。
泛型项目模型
泛型项目模型用下列类型表示:
对象名 |
描述 |
---|---|
Projects 集合 |
表示解决方案中的所有项目。 |
Project 对象 |
表示解决方案中的项目。 |
ProjectItems 集合 |
表示指定项目中的所有项。 |
ProjectItem 对象 |
表示指定项目中的项。 |
这些对象使您可以操作 Visual Studio 中任何语言类型的项目。 使用这些对象,可以:
保存或删除项目。
基于 Visual Studio 模板为项目创建新的项目项。
从现有文件将项目项添加到项目。
从项目中移除项目项。
从项目中打开、保存和删除项目项。
语言特定的项目模型
除了泛型项目相关的对象之外,还有一组命名空间表示编程语言特定的项目和项目项属性。 这些命名空间是:
表示语言项目的主要对象是 VSProject 和 VSProject2。 VSProject2 派生自 VSProject,而后者派生自 Project。 项目项用 VSProjectItem 对象表示。
编程语言 |
命名空间 |
---|---|
Visual C# |
|
Visual Basic |
|
Visual C++ |
Microsoft.VisualStudio.VCProject 和 Microsoft.VisualStudio.VCProjectEngine。 |
所有编程语言 |
由于语言特定的对象从泛型对象派生,因此它们的工作原理在本质上相同,不同的是语言特定的对象使您可以访问使用泛型 Project 和 ProjectItem 对象不能访问的任何附加属性、方法和事件。
有关如何使用语言特定的项目模型的更多信息,请参见 项目扩展性介绍。
为 Visual Studio .NET Visual C++ 项目更改
在 Visual Studio .NET 和更高版本中,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