用途:整理 MSBuild 中属性(Property)定义与操作的规范写法,帮助在 .props/.targets 中写出可覆盖、可组合、跨平台的属性。
主要能力:条件默认值(Condition="'$(Prop)' == ''",让调用方可覆盖);嵌套条件组(在 PropertyGroup 上写共享 Condition,避免逐条重复);分号拼接组合(追加时保留原值,如 $(DefineConstants);MY_FEATURE);路径规范化与尾斜杠处理(HasTrailingSlash、NormalizePath、Combine、IsPathRooted、GetDirectoryNameOfFileAbove、$(MSBuildThisFileDirectory));目标框架检测(GetTargetFrameworkIdentifier、IsTargetFrameworkCompatible、IsOSPlatform);导入守卫属性防止重复导入;按 MSBuild 版本做特性开关(AreFeaturesEnabled);回退链(先主来源,为空再回退)。
使用方式:在 .props 中写可覆盖默认值,在 .targets 中写回退值;条件两侧都要加引号;追加列表属性时带上原值;路径用 MSBuild 或 System.IO.Path 函数而非硬编码绝对路径。
限制与注意:单目标项目的 .props 中 $(TargetFramework) 在项目主体求值前为空,TargetFramework 相关条件组应放在 .targets 或项目文件中;属性自上而下求值,最后赋值生效,.targets 会覆盖 .props 与项目文件;未加 Condition 的默认值不可被覆盖;直接覆盖 DefineConstants 会丢失已有常量。
适用场景:编写 SDK、共享 props/targets、多目标框架与跨平台构建脚本。具体安装或调用命令资料未提供。