We recommend using Visual Studio 2017

Project Property User Interface


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 Project Property User Interface.

A project subtype can use the items in the project Property Pages dialog box as they are supplied by the base project, hide or make read-only controls and whole pages as supplied, or add project subtype-specific pages to the Property Pages dialog box.

A project subtype implements automation extenders and project configuration browse objects. These extenders implement the IFilterProperties interface to make particular properties hidden or read-only. The Property Pages dialog box of the base project, implemented by the base project, honors the filtering performed by the Automation Extenders.

The process of extending a Project Property dialog box is outlined below:

To determine the CATIDs for the project scope, the project subtype retrieves the above properties for VSITEMID_ROOT from the VSITEMID``typedef. A project subtype may also want to control which Property Pages dialog box pages are displayed for the project, both configuration dependent and configuration independent. Some project subtypes may need to remove built-in pages and add project subtype specific pages. In order to enable this, the managed client project calls the GetProperty method for the following properties:

  • VSHPROPID_PropertyPagesCLSIDList — a semicolon-delimited list of CLSIDs of configuration-independent property pages.

  • VSHPROPID_CfgPropertyPagesCLSIDList — a semicolon-delimited list of CLSIDs of configuration-dependent property pages.

Because the project subtype aggregates the IVsHierarchy object, it can override the definition of these properties to control which Property Pages dialog boxes are displayed. The project subtype can retrieve these properties from the inner base project and then add or remove CLSIDs as necessary.

New property pages added by a project subtype are handed a project configuration browse object from the base project implementation. This project configuration browse object supports Automation Extenders. For more information on AutomationExtenders, see Implementing and Using Automation Extenders. The property pages implemented by the project subtype call Extender to retrieve their own project subtype configuration browse object that extends the configuration browse object of the base project.

Property Pages Dialog Box