项目模型核心组件

下表扩展了项目模型。 这些表简要介绍了模型中标识的接口和服务,以及与特定对象关联的接口和服务。 此外,这些表还详细介绍了项目创建和维护中可选的其他接口,具体取决于特定项目类型的要求。

有关详细信息,请参阅 支持符号浏览工具

Package 对象

接口 注释
IVsPackage 初始化 IDE 中的 VSPackage,并使其服务可供 IDE 使用。

项目工厂对象

接口 注释
IVsProjectFactory 管理创建新项目并打开现有项目。

项目对象

接口 注释
IVsProject3 管理项目项的添加和删除,打开编辑器,并维护每个文档名字对象和对象 VSITEMID之间的映射。 继承自 IVsProjectIVsProject2
IVsHierarchy 管理导航和显示属性并提供事件。
IVsUIHierarchy 为仅在焦点位于解决方案资源管理器时应用的命令(如剪切和重命名)启用与命令类似的IOleCommandTarget命令执行。
IOleCommandTarget 用作项目层次结构的主命令目标接口。 它是查询对象的命令状态或状态和运行命令的标准接口。 当不在“项目”窗口中聚焦时可用。
IPersistFileFormat 协调项目状态的持久性。 通常,项目状态存储为项目文件,但可以适应不基于文件的存储系统。
IVsPersistHierarchyItem2 使项目能够管理其项目项的持久性的各个方面,无论是磁盘上的文件还是其他存储系统中的对象。 该 IVsPersistHierarchyItem2 接口用于不实现接口的 IVsPersistDocData2 项。
IVsSccProject2 协调与源代码控件的交互。
IVsProjectFlavorCfgProvider 使项目能够管理配置信息。
IVsCfgProvider2 管理项目配置对象,例如调试/发布配置。 生成、部署和调试操作通过项目配置对象进行协调。
IVsHierarchyDeleteHandler 由层次结构实现,用于控制层次结构项的删除(破坏性)或删除(非破坏性)选项。 从IVsHierarchy接口对IVsHierarchyDeleteHandler接口调用查询接口。
IVsGetCfgProvider 提供实现选项,该选项使对象支持 IVsCfgProvider2 接口与实现 IVsHierarchy 接口的项目对象不同的 COM 标识。
IVsProjectStartupServices 实现的可选接口使项目可由其他开发人员扩展。 该 IVsProjectStartupServices 接口使第三方 VSPackage 能够注册保存到项目文件中的 GUID,以便每次项目加载时,都会将第三方服务 GUID 加载到项目文件中并调用 QueryService 该 GUID。
IVsUIHierWinClipboardHelperEvents 由窗口中的源层次结构 UIHierarchy 实现,以协调剪贴板操作,例如剪切、复制和粘贴。 使用 AdviseClipboardHelperEvents 接口注册剪贴板事件。
IVsHierarchyDropDataSource2 提供有关在 UI 层次结构窗口中拖放操作期间相对于其数据源的拖动项的信息。 从 IVsHierarchy 接口调用。
IVsHierarchyDropDataTarget 提供有关在 UI 层次结构窗口中拖放操作期间拖动的项相对于其拖放目标的信息。 从 IVsHierarchy 接口调用。

配置对象

接口 注释
IVsCfg 提供有关配置的信息。
IVsProjectCfg2 使项目能够管理配置信息。
IVsDebuggableProjectCfg 使项目能够在调试器的控制下运行。
IVsDeployableProjectCfg 由执行其他项目的部署操作的部署项目实现。

Configuration Builder 对象

接口 注释
IVsBuildableProjectCfg 管理项目配置的生成操作。

其他 Project 对象

接口 注释
IDispatch

ISpecifyPropertyPages
“属性” 窗口中显示项属性。
IVsOutput2

IVsEnumOutputs
显示部署的输出。

下表简要介绍了项目模型中标识的服务。

服务

服务 注释
SVsRegisterProjectTypes 由实现项目类型的 VSPackage 用来向 IDE 注册其项目工厂。 调用此方法时IVsPackage::SetSite,VSPackage 必须调用QueryService此服务并注册其项目工厂。 SetSite如果未调用该方法,则不会实例化项目。
SVsSolution 提供对 IDE 的内部内置概念的访问权限,例如枚举项目、创建新项目、注意项目更改等。
SVsSccManager 由希望参与源代码管理的项目调用。
SVsRunningDocumentTable 维护打开的文档表,以确定是否已打开一个或多个项目项。
SVsUIShellOpenDocument 包含使用标准编辑器或特定编辑器实际打开项目项的接口和方法。
SVsTrackProjectDocuments 在添加、删除或重命名项目时,需要由所有项目调用。
SVsFileChangeEx 管理对文件或目录的更改,并在磁盘上更改所选文件时通知客户端。
SVsQueryEditQuerySave 在脏项或保存项之前,需要由所有项目和编辑器调用。
SVsSolutionBuildManager 管理项目配置的生成和部署操作的顺序。
SVsShellDebugger 提供对用于大多数调试控件的低级别调试器服务的访问。
SVsShellMonitorSelection 允许 VSPackage 访问有关当前选择的信息,并启用与“属性”窗口的通信。
SVsUIShell 提供与 UI 相关的基本 IDE 功能,例如创建和枚举工具窗口或文档窗口或向用户报告错误的功能。
SVsStatusbar 提供对 IDE 状态栏的访问权限。
IVsExtensibility3 用于实现自动化模型。 在项目模型中,你将返回一个属性对象,该对象允许你创建该对象的实例。
SVsUIHierWinClipboardHelper 用于在层次结构中的项目对象上实现剪贴板事件。 SVsUIHierWinClipboardHelper 允许正确处理剪切、复制和粘贴操作。

另请参阅