What problem does it solve? MSBuild property bugs are subtle: unconditional assignments block project-level overrides, DefineConstants gets overwritten instead of appended, unquoted conditions fail on empty properties, and hardcoded paths break cross-platform builds. This Skill provides canonical patterns from the MSBuild repository to diagnose and fix these property definition issues. ## Core Features & Use Cases - Conditional Defaults: Set overridable defaults with Condition="'$(Prop)' == ''" so callers can override values in .props files. - Composition & Concatenation: Append to list properties like DefineConstants and NoWarn using semicolon concatenation instead of overwriting. - Path Normalization: Handle trailing slashes, cross-platform paths, and relative-to-absolute conversion with NormalizePath and Path.Combine. - TFM Detection & Evaluation Order: Use GetTargetFrameworkIdentifier, IsTargetFrameworkCompatible, and guard properties, while respecting last-write-wins semantics. - Use Case: Your shared .props file sets DefineConstants unconditionally and wipes out project-level constants. Use this Skill to rewrite it with proper append semantics and conditional defaults. ## Quick Start Review my Directory.Build.props file and fix any property definitions that overwrite DefineConstants or block project-level overrides.