项目属性用户界面
项目子类型可以使用项目属性页对话框中的项,因为它们由基项目提供,隐藏或使只读控件和整个页面作为提供,或向属性页对话框添加特定于项目子类型的页面。
“扩展项目属性”对话框
项目子类型实现自动化扩展器和项目配置浏览对象。 这些扩展程序实现 IFilterProperties 接口以使特定属性隐藏或只读。 基本项目的“属性页”对话框(由基本项目实现)遵循自动化扩展程序执行的筛选。
下面概述了“扩展 项目属性 ”对话框的过程:
基项目通过实现 IInternalExtenderProvider 接口从项目子类型检索扩展程序。 基本项目的浏览、项目自动化和项目配置浏览对象均实现此接口。
项目浏览对象的实现IInternalExtenderProvider和项目自动化对象委托给IInternalExtenderProvider项目子类型聚合器的实现(即项目
QueryInterface
IInternalExtenderProvider对象上的IVsHierarchy实现)。基本项目配置浏览对象还实现 IInternalExtenderProvider 从项目子类型配置对象直接连接到自动化扩展程序。 其实现委托给 IInternalExtenderProvider 项目子类型聚合器实现的接口。
GetProjectItem,由项目配置浏览对象实现,返回该 IVsHierarchy 对象。
项目子类型可以通过检索以下 __VSHPROPID2 值来确定基项目的各种可扩展对象的相应 CATID:
若要确定项目范围的 CATID,项目子类型检索 VSITEMID 的上述属性。根目录。VSITEMID typedef
项目子类型可能还希望控制为项目显示哪些 属性页 对话框页面,包括配置依赖和独立于配置。 某些项目子类型可能需要删除内置页面并添加特定于项目子类型的页面。 为了启用此功能,托管客户端项目调用 GetProperty 以下属性的方法:
VSHPROPID_PropertyPagesCLSIDList
— 配置无关属性页的 CLSID 的分号分隔列表。VSHPROPID_CfgPropertyPagesCLSIDList —
配置依赖属性页的 CLSID 的分号分隔列表。
由于项目子类型聚合 IVsHierarchy 对象,因此它可以重写这些属性的定义,以控制显示哪些 属性页 对话框。 项目子类型可以从内部基项目检索这些属性,然后根据需要添加或删除 CLSID。
项目子类型添加的新属性页将从基本项目实现移交项目配置浏览对象。 此项目配置浏览对象支持自动化扩展程序。 有关 AutomationExtenders 的详细信息,请参阅 实现和使用自动化扩展程序。 由项目子类型调用 Extender[] 实现的属性页,用于检索其自己的项目子类型配置浏览对象,该对象扩展了基本项目的配置浏览对象。