用途:这是一份编号的 MSBuild 反模式目录,用于扫描项目文件、做审查与可维护性/正确性风险评估。每条条目按「Smell(要查找什么)、Why it's bad(对构建、可维护性或正确性的影响)、Fix(具体改法)」组织。
审查输出约定:审查、审计、可维护性或正确性风险类请求中,除非用户明确要求修复,否则不要编辑文件;返回基于所给文件的优先级发现,附影响与针对性建议;区分已确认缺陷、条件性风险与本就正确的模式;最终答案保持为审查本身,不要用简短变更摘要替代。
主要条目:AP-01 用 <Exec> 做已有内置任务的操作(mkdir/copy/del 等应改用 <MakeDir>/<Copy>/<Delete>/<Move>/<WriteLinesToFile>/<Touch>);AP-02 条件表达式未加引号(== 与 != 两侧都应用单引号);AP-03 硬编码绝对路径(改用 $(MSBuildThisFileDirectory)、$(MSBuildProjectDirectory)、$([MSBuild]::GetDirectoryNameOfFileAbove(...))、$([MSBuild]::NormalizePath(...)));AP-04 重述 SDK 默认值;AP-05 SDK 风格项目中手工列出文件(F# 因编译顺序依赖需显式按依赖顺序列出,.fsi 须紧邻其 .fs 实现文件);AP-06 用 <Reference>+HintPath 引 NuGet 包(应改 <PackageReference>,无 HintPath 的 <Reference> 对 GAC 程序集仍有效);AP-07 分析器/工具包缺少 PrivateAssets="all";AP-08 多个 .csproj 复制粘贴属性(应集中到 Directory.Build.props);AP-09 包版本分散、未用中央包管理;AP-10 单体 Target;AP-11 自定义 Target 缺 Inputs/Outputs;AP-12 在 .targets 而非 .props 设默认值;AP-13 Import 未加 Exists() 守卫(必需导入与 NuGet 包转发文件属例外,需对照打包布局核对);AP-14 路径反斜杠——仅在原始 shell 字符串、CDATA、写给非 MSBuild 消费者的路径中才是错误,经 MSBuild 求值器的路径在 Unix 上会被规范化,属风格问题。
限制:资料未提供该技能的安装命令、收费、平台与效果信息,暂未提供。