项目子类型在项目 属性页 对话框可以使用项目,则基项目提供其自己,隐藏或进行只读控件和整个页面标记为已提供,或添加项目特定于子类型的页。 属性页 对话框。
扩展项目属性对话框
项目子类型实现自动化扩展程序和项目配置浏览对象。 这些扩展实现 IFilterProperties 接口进行只读特定的属性隐藏或。 该基项目的 属性页 对话框中,实现由该基项目,采用自动化扩展程序执行筛选。
扩展 项目属性 对话框过程如下:概述
该基项目从项目子类型检索扩展程序通过实现 IInternalExtenderProvider 接口。 浏览、项目自动化和项目配置浏览该基项目的所有对象实现此接口。
IInternalExtenderProvider 的实现该项的浏览对象和项目自动化对象表示项目子类型聚合函数 (即它的 IInternalExtenderProvider 实现的 QueryInterfaceIInternalExtenderProvider 中 IVsHierarchy 项目对象)。
基本项目配置在从项目子类型配置对象的自动化扩展程序浏览对象还实现 IInternalExtenderProvider 直接连接。 其项目子类型聚合函数实现的 IInternalExtenderProvider 接口的实现委托。
GetProjectItem,实现由项目配置浏览对象,返回 IVsHierarchy 对象。
项目子类型可以确定该基项目的各种可扩展的对象的相应 CATIDs 在运行时通过检索以下 __VSHPROPID2 值:
若要确定项目范围的 CATIDs,项目子类型从 VSITEMIDtypedef检索 VSITEMID_ROOT 的上述属性。 属性页 对话框页为项目显示,依赖于配置和独立于配置的项目子类型可能还希望控件。 某些项目子类型可能需要移除内置页并添加项目特定于子类型的页。 为了实现此功能,托管客户端项目调用下列属性的 GetProperty 方法:
VSHPROPID_PropertyPagesCLSIDList—分号分隔的列表独立于配置的属性页 CLSID。
分号分隔的VSHPROPID_CfgPropertyPagesCLSIDList —列表配置相关属性页 CLSID。
由于项目子类型聚合 IVsHierarchy 对象,它可以重写 属性页 对话框中显示这些特性的定义控件。 项目子类型可以从内部基项目检索这些属性来添加或根据需要移除 CLSID。
传递项目子类型添加新的属性页项目配置浏览从基项目实现的对象。 此项目配置浏览对象支持自动化扩展程序。 有关自动化扩展的更多信息,请参见 实现和使用自动化扩展程序。 项目子类型实现的属性页调用 Extender 检索其项目的子类型配置浏览扩展配置来浏览该基项目的对象。