SuperAPI AI 工具集

dotnet-msbuild-authoring

编程与开发

查看项目

更新于 10-16 02:33

技能介绍

用途:指导编写 MSBuild 项目系统元素,适用于 SDK 风格项目。要求 .NET 8.0+ SDK(MSBuild 17.8+)。

主要能力:自定义 Target 及其顺序(BeforeTargets、AfterTargets、DependsOnTargets),注入标准构建管线宜用前两者,DependsOnTargets 适合编排自有 Target 图;可通过追加方式扩展 BuildDependsOn 等 SDK 列表。增量构建用 Inputs/Outputs,比较输入与输出时间戳,全部输出较新则整体跳过;常见失效原因包括缺少 Outputs、输出易变、生成器无条件写入、复制未启用 SkipUnchangedFiles。props 与 targets 导入顺序:.props 先于项目主体执行,宜用 Condition="'$(Prop)' == ''" 保留覆盖空间;.targets 最后评估,无法被项目覆盖。项操作包含 Include、Exclude、Update、Remove;SDK 风格项目自动包含 *.cs,不要再写 Compile Include,否则报 NETSDK1022,条件编译应先 Remove 再 Include。元数据与批处理:使用 FullPath、Filename、RecursiveDir、Identity 等已知元数据,任务属性中出现 %(Metadata) 时按元数据值分组、每组执行一次。条件支持 ==、!=、AND、OR、!、Exists()、HasTrailingSlash(),比较两边应加单引号。属性函数可调用 .NET 静态方法与 MSBuild 内置函数,如 Path.Combine、Guid.NewGuid、IsOSPlatform、VersionGreaterThanOrEquals、StableStringHash、GetPathOfFileAbove、NormalizePath。Directory.Build 高级模式:用 GetPathOfFileAbove 逐级链接父级文件并加存在性判断,用哨兵属性防止重复导入,强制值放 Directory.Build.targets。

使用方式:在 .props、.targets 或项目中按上述规则编写属性、项与 Target;在 .props/.targets 中引用自身目录应使用 $(MSBuildThisFileDirectory)。

限制:不覆盖解决方案布局与共享配置(CPM、.editorconfig)、MSBuild 错误解释与 CI 漂移诊断、以及读取和修改 .csproj,这些属其他技能范围。平台、收费与价格未提供。