项目模型核心组件
下表扩展了项目模型。 这些表简要介绍了模型中标识的接口和服务,以及与特定对象关联的接口和服务。 此外,这些表还详细介绍了项目创建和维护中可选的其他接口,具体取决于特定项目类型的要求。
有关详细信息,请参阅 支持符号浏览工具。
Package 对象
接口 | 注释 |
---|---|
IVsPackage | 初始化 IDE 中的 VSPackage,并使其服务可供 IDE 使用。 |
项目工厂对象
接口 | 注释 |
---|---|
IVsProjectFactory | 管理创建新项目并打开现有项目。 |
项目对象
接口 | 注释 |
---|---|
IVsProject3 | 管理项目项的添加和删除,打开编辑器,并维护每个文档名字对象和对象 VSITEMID 之间的映射。 继承自 IVsProject 和 IVsProject2 。 |
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 允许正确处理剪切、复制和粘贴操作。 |