用途:指导编写自定义 MSBuild 任务,适用于 .NET 8.0+ SDK(MSBuild 17.8+),示例均基于 SDK 风格项目。
主要能力:实现 ITask 接口或继承 Task 基类;扩展 ToolTask 封装外部 CLI 工具;使用 IIncrementalTask(MSBuild 17.8+)实现引擎过滤的增量执行;用 CodeTaskFactory 定义内联任务;通过 UsingTask 注册任务并声明参数;调试任务;将任务打包为 NuGet 包。
必要用法:任务需实现 Execute(),返回 true 表示成功、false 表示失败;通过 Log.LogMessage、Log.LogWarning、Log.LogError 输出日志,不要用 Console.WriteLine。参数用 [Required]、[Output] 标注。
限制与注意:IIncrementalTask 需 MSBuild 17.8+,旧版本会抛 TypeLoadException,需版本门控或改用目标级 Inputs/Outputs;任务 DLL 应打包到 tools/ 而非 lib/,并设 IncludeBuildOutput=false;引用 MSBuild 框架包需加 PrivateAssets="all";NuGet 包内路径用 $(MSBuildThisFileDirectory);发布前移除 Debugger.Launch();内联任务依赖复杂时改用独立程序集。项目系统编写(targets、props、items、conditions)不在范围内。详细代码示例见该技能目录的 examples.md。