Extending the Object Model of the Base Project
A project subtype may extend the automation object model of the base project in the following places:
Project.Extender("<ProjectSubtypeName>") – This allows a project subtype to offer an object with custom methods from the Project. A project subtype can use Automation Extenders to expose the Project object. The IInternalExtenderProviderinterface implemented on the main project subtype aggregator should offer its object for the VSHPROPID_ExtObjectCATID from __VSSPROPID2 (corresponding to an itemid value of VSITEMID_ROOT, from VSITEMID) CATID.
ProjectItem.Extender("<ProjectSubtypeName>") – This allows a project subtype to offer an object with custom methods from a particular ProjectItem object within the project. A project subtype can use Automation Extenders to expose this object. The IInternalExtenderProvider interface implemented on the main project subtype aggregator needs to offer its object for the VSHPROPID_ExtObjectCATID from __VSHPROPID2 (corresponding to a desired VSITEMID) CATID.
Project.Properties – This collection exposes the configuration independent properties of the Project object. For more information on Project Properties, see Properties. A project subtype can use Automation Extenders to add its properties to this collection. The IInternalExtenderProvider interface implemented on the main project subtype aggregator needs to offer its object for the VSHPROPID_BrowseObjectCATID from VSHPROPID2 (corresponding to an itemid value of VSITEMID_ROOT, from __VSHPROPID2) CATID.
Configuration.Properties – This collection exposes the configuration dependent properties of the project for a particular configuration (for example, Debug). For more information see, Configuration. A project subtype can use Automation Extenders to add its properties to this collection. The IInternalExtenderProvider interface implemented on the main project subtype aggregator offers its object for the CATID VSHPROPID_CfgBrowseObjectCATID (corresponding to an itemid value of VSITEMID_ROOT). The IVsCfgBrowseObjectinterface is used to distinguish one configuration browse object from another.