用途:解答和编写 MSBuild 中 ItemGroup 与项表达式相关的具体问题,模式取自 Microsoft.Common.CurrentVersion.targets。
主要能力:
- 三种操作。Include 添加带标识与元数据的新项;Remove 按模式移除项或清空组;Update 只修改已有项的元数据,不会新增项。
- 集合运算。Include 支持 Exclude 做集合减法,例如 <Compile Include="***.cs" Exclude="Generated*;Tests*" />;Exclude 仅可用于 Include,不能用于 Update 或 Remove。
- 项转换。@(Item->'expression') 对每项应用表达式生成新列表,如 @(IntermediateAssembly->'$(OutDir)%(Filename)%(Extension)'),也可带分隔符输出。
- 批处理。%(Metadata) 出现在 Condition 或 Outputs 中时按元数据唯一值分批执行目标;出现在任务参数中时按唯一值分批执行任务。
- 条件包含。可在 ItemGroup 上整体加 Condition,也可在单个项上加 Condition。
- 工具/分析器包可用 PrivateAssets="all"。
使用方式:在 .csproj 或 .targets 的 ItemGroup 中按上述语法编写;排查问题时检查是否混用不同项组的 %() 导致笛卡尔积、生成文件是否写入 $(IntermediateOutputPath) 而非源码目录、目标中创建的文件是否加入 @(FileWrites) 以支持 dotnet clean。
限制:资料未提供该技能的安装命令、收费方式、支持平台或版本要求,暂未提供。