Naive Editing Properties
The naive method to manage a Visual-Studio project for different configurations (configuration + platform, such as Debug+x64) is to modify values directly in the Property Editor for each configuration. The disadvantages are
- duplication in multi-configurations, which is difficult to maintain the consistency.
- difficult to apply to multiple users, or multiple similar projects.
The appropriated solution is to use customized property sheets, which support cascade overriding.
Two Ways to Access Property Editor
- naive: from project explorer, you can access properties for different configurations
- advanced: from property manager. Upper sheet in each configuration overrides values in lower sheet. For VS2015, the global sheets locate at <drive>\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140, user sheets locates at <userprofile>\AppData\Local\Microsoft\MSBuild\v4.0. User sheets are obsolete, thus should be avoid to use (recommend to delete them from projects).
In the Property Manager, you can create/add any user custom property sheets at project level (that applies to all configuration) or at specified configuration.
Project Property Sheet
Custom property sheets are saved in stand-alone XML files (for example, MyProps4All.props), instead of project files (.vcxproj). The advantage of stand-alone property sheet files is that they can be shared by different projects and configurations via importing.
The property inheritance (or override order) is
- Default settings from the MSBuild CPP Toolset (..\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.Default.props, which is imported by the .vcxproj file.)
- Property sheets
- .vcxproj file. (Can override the default and property sheet settings.)
- Items metadata