项目子类型扩展的属性和方法
项目子类型具有许多影响项目行为的力量,因为它被构造为基项目的聚合器。 本部分总结了项目子类型可以增强或修改的一些功能。
聚合获取的功能
下表汇总了许多方法,这些方法使项目子类型能够在基本项目中重写。
由聚合重写的方法 | 项目子类型 |
---|---|
从 IVsHierarchy: GetProperty SetProperty GetGuidProperty SetGuidProperty |
允许项目子类型 - 更改项目节点描述文字和图标。 - 完全重写项目 Browse 对象。- 控制是否可以重命名项目。 - 控制排序顺序。 - 控制动态帮助的用户上下文。 |
从 IVsProject: GetItemContext |
使项目子类型能够控制向设计器和编辑器提供哪些上下文服务。 |
从 IOleCommandTarget: QueryStatus Exec QueryStatusCommand ExecCommand |
允许项目子类型 - 参与项目命令的命令路由。 - 添加、删除或禁用项目环境命令和解决方案资源管理器活动命令。 |
IVsFilterAddProjectItemDlg2 | 使项目子类型能够筛选用户在“添加新项”对话框中看到的内容。 |
IVsSingleFileGeneratorFactory | 允许项目子类型 - 确定给定文件扩展名的默认生成器。 - 将人工可读生成器名称映射到 COM 对象。 |
项目子类型使用的属性
环境和基本项目系统可以使用下表中详述的属性 __VSSPROPID 和 __VSSPROPID2 枚举,使项目子类型能够控制项目系统的各种功能。
VSHPROPID 属性 | 项目子类型 |
---|---|
AddItemTemplatesGuid |
允许项目子类型控制“添加项”对话框的内容。 项目子类型可以提供模板目录的新规范、添加新类型的项、删除现有项,以及重新组织基项目的 “添加项 ”对话框中的项子集。 |
PropertyPagesCLSIDList |
允许项目子类型添加或删除与配置无关的属性页。 |
CfgPropertyPagesCLSIDList |
允许项目子类型添加或删除依赖于配置的属性页。 |
ExtObjectCATID |
允许项目子类型通过了解 Extender CATID 为项目或项目项对象提供自动化扩展程序。 例如,项目子类型可以提供自定义 Project.Extender("<subtype>") 对象。 |
BrowseObjectCATID |
允许项目子类型通过知道 Extender CATID 为 Browse 对象提供自动化扩展程序。 例如,项目子类型可以向集合添加额外的属性 Properties 。 |
CfgBrowseObjectCATID |
允许项目子类型为项目配置浏览对象提供自动化扩展程序。 例如,项目子类型可以向集合添加额外的属性 Properties 。 |
CfgExtObjectCATID |
允许项目子类型为配置对象提供自动化扩展程序。 |
DefaultPlatformName |
允许项目子类型确定项目配置对象的平台名称。 |
基本项目提供上述属性的默认实现。 基项目通过调用QueryInterface
IVsHierarchy最外部的项目子类型来获取这些属性,从而允许项目子类型重写属性的实现。