项目模型的元素

Visual Studio 中所有项目的接口和实现都共享一个基本结构:项目类型的项目模型。 在项目模型中(即要开发的 VSPackage),可以创建符合设计决策的对象,并与 IDE 提供的全局功能协同工作。 例如,虽然你可以控制项目项的持久化方式,但你无法控制文件必须持久化的通知。 当用户将焦点放在打开的项目项上并在 Visual Studio 菜单栏上的“文件”菜单上时选择“保存”时,项目类型代码必须拦截来自 IDE 的命令,保留文件,并将通知发回 IDE,指出该文件不再更改。

VSPackage 通过提供对 IDE 接口的访问权限的服务,与 IDE 进行交互。 例如,通过特定服务,可监视和路由命令,并为项目中所做的选择提供上下文信息。 VSPackage 所需的所有全局 IDE 功能均由服务提供。 有关服务的详细信息,请参阅操作说明:获取服务

其他实现注意事项:

  • 单个项目模型可包含多个项目类型。

  • 项目类型和随附的项目工厂使用 GUID 独立注册。

  • 当用户通过 Visual Studio UI 创建新项目时,每个项目均须有一个模板文件或向导来初始化新项目文件。 例如,Visual C++ 模板初始化最终成为 .vcproj 文件的内容。

    下图显示构成典型项目实现的主要接口、服务和对象。 可以使用应用程序帮助程序 HierUtil7,创建基础对象和其他编程样板。 有关 HierUtil7 应用程序帮助程序的详细信息,请参阅使用 HierUtil7 项目类实现项目类型 (C++)

    Visual Studio 项目模型图形

    项目模型

    有关上图所列接口和服务以及关系图中不包含的其他可选接口的详细信息,请参阅 Project 模型核心组件

    项目可以支持命令,因此必须实现 IOleCommandTarget 接口,以便通过命令上下文 GUID 参与命令路由。