泛型项目模型与语言特定的项目模型比较

Visual Studio 提供两种类型的项目模型:泛型项目模型和编程语言特定的项目模型。

泛型项目模型

泛型项目模型用下列类型表示:

对象名

描述

Projects 集合

表示解决方案中的所有项目。

Project 对象

表示解决方案中的项目。

ProjectItems 集合

表示指定项目中的所有项。

ProjectItem 对象

表示指定项目中的项。

这些对象使您可以操作 Visual Studio 中任何语言类型的项目。 使用这些对象,可以:

  • 保存或删除项目。

  • 基于 Visual Studio 模板为项目创建新的项目项。

  • 从现有文件将项目项添加到项目。

  • 从项目中移除项目项。

  • 从项目中打开、保存和删除项目项。

语言特定的项目模型

除了泛型项目相关的对象之外,还有一组命名空间表示编程语言特定的项目和项目项属性。 这些命名空间是:

表示语言项目的主要对象是 VSProjectVSProject2VSProject2 派生自 VSProject,而后者派生自 Project。 项目项用 VSProjectItem 对象表示。

编程语言

命名空间

Visual C#

VSLangProjVSLangProj2VSLangProj80

Visual Basic

VSLangProjVSLangProj2VSLangProj80

Visual C++

Microsoft.VisualStudio.VCProjectMicrosoft.VisualStudio.VCProjectEngine

所有编程语言

EnvDTEEnvDTE80

由于语言特定的对象从泛型对象派生,因此它们的工作原理在本质上相同,不同的是语言特定的对象使您可以访问使用泛型 ProjectProjectItem 对象不能访问的任何附加属性、方法和事件。

有关如何使用语言特定的项目模型的更多信息,请参见 项目扩展性介绍

为 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

请参见

任务

如何:用编程方式创建项目

如何:以编程方式创建项目项

其他资源

控制解决方案及其项目