如何复制MSBuild的Names项并将每个项转为大写生成UpperNames?
在MSBuild中将项类型的每个项转为大写并生成新项类型
要将现有项类型Names中的每个项转为大写并生成新的项类型UpperNames,你需要在<ItemGroup>中使用项元数据遍历语法,结合字符串方法完成转换:
<ItemGroup> <UpperNames Include="%(Names.Identity.ToUpper())" /> </ItemGroup>
代码解释
%(Names.Identity):遍历Names项类型中的每一项,获取每个项的标识值(也就是<Names Include="..." />中的内容)。.ToUpper():对获取到的每个标识值执行大写转换。<UpperNames Include="..." />:将转换后的大写值添加到新的UpperNames项类型中。
完整示例
下面是包含属性转大写、项类型转换及结果验证的完整MSBuild片段:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <!-- 属性转大写示例 --> <PropertyGroup> <Name>Sarah</Name> <UpperName>$(Name.ToUpper())</UpperName> </PropertyGroup> <!-- 原始项类型定义 --> <ItemGroup> <Names Include="Tim" /> <Names Include="Sam" /> </ItemGroup> <!-- 转换生成新的大写项类型 --> <ItemGroup> <UpperNames Include="%(Names.Identity.ToUpper())" /> </ItemGroup> <!-- 验证转换结果的目标 --> <Target Name="DisplayResults"> <Message Text="属性转大写结果: $(UpperName)" /> <Message Text="项类型转大写结果: @(UpperNames)" /> </Target> </Project>
运行msbuild /t:DisplayResults命令后,输出结果如下:
属性转大写结果: SARAH 项类型转大写结果: TIM;SAM
内容的提问来源于stack exchange,提问作者Colonel Panic
相关产品推荐
相关产品推荐

