Extend 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 object. A project subtype can use Automation Extenders to expose the
Project
object. The IInternalExtenderProvider interface implemented on the main project subtype aggregator should offer its object for theVSHPROPID_ExtObjectCATID
from __VSSPROPID2 (corresponding to anitemid
value of VSITEMID.Root) 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 VSConstants.VSITEMID) CATID.Project.Properties: This collection exposes the configuration-independent properties of the
Project
object. For more information onProject
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 theVSHPROPID_BrowseObjectCATID
from __VSHPROPID2 (corresponding to anitemid
value of VSITEMID.Root) 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 anitemid
value of VSITEMID.Root). The IVsCfgBrowseObject interface is used to distinguish one configuration browse object from another.