Extending the Object Model of the Base Project
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at 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
Projectobject. The IInternalExtenderProviderinterface implemented on the main project subtype aggregator should offer its object for theVSHPROPID_ExtObjectCATIDfrom __VSSPROPID2 (corresponding to anitemidvalue of VSITEMID_ROOT, fromVSITEMID) 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_ExtObjectCATIDfrom __VSHPROPID2 (corresponding to a desiredVSITEMID) CATID.Project.Properties – This collection exposes the configuration independent properties of the
Projectobject. 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 theVSHPROPID_BrowseObjectCATIDfrom VSHPROPID2 (corresponding to anitemidvalue 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 anitemidvalue of VSITEMID_ROOT). The IVsCfgBrowseObjectinterface is used to distinguish one configuration browse object from another.