用途:该技能汇总 MSBuild 项组(ItemGroup)的规范用法,来源为 Microsoft.Common.CurrentVersion.targets,用于编写和维护 .targets/.props 构建逻辑。
主要能力:
- 三种操作:Include 添加项并附带元数据;Remove 按模式移除项或清空组;Update 仅修改已有项的元数据,不会新增项。
- 项批处理:在目标属性(如 Outputs)或任务参数中出现 %(Metadata) 时,MSBuild 按该元数据的唯一值分批执行;同一表达式中不要混用来自不同项组的 %(),否则产生笛卡尔积。
- 项转换:@(Item->'expression') 对每项应用表达式生成新列表,可配合分隔符用于显示。
- Exclude 模式:仅在 Include 上生效,不能与 Update 或 Remove 同用。
- 条件包含:可在 ItemGroup 或单个项上使用 Condition。
- 工具/分析器包可用 PrivateAssets="all"。
常见陷阱:跨项组批处理导致 O(N×M) 执行;生成文件应写入 $(IntermediateOutputPath)(obj/)而非源码目录;目标中创建的每个文件都应加入 @(FileWrites) 以支持 dotnet clean。
限制:资料未提供安装命令、版本要求、收费信息或具体平台支持范围。