An aggregating property collects all the values defined for it in the project hierarchy. For example, when a C file is compiled, the Preprocessor Definitions property will take all the values defined at the file, project, and solution levels. Note that the Properties window will not show the inherited values of an aggregating property.

solution — Preprocessor Definitions = SolutionDef
project1 — Preprocessor Definitions =
file1 — Preprocessor Definitions =
file2 — Preprocessor Definitions = File1Def
project2 — Preprocessor Definitions = ProjectDef
file1 — Preprocessor Definitions=
file2 — Preprocessor Definitions = File2Def

In the above example, the files will be compiled with these preprocessor definitions:

project1/file1 SolutionDef
project1/file2 SolutionDef, File1Def
project2/file1 SolutionDef, ProjectDef
project2/file2 SolutionDef, ProjectDef, File2Def