gpt4 book ai didi

msbuild - msbuild 中的双循环?

转载 作者:行者123 更新时间:2023-12-03 23:15:28 29 4
gpt4 key购买 nike

我正在为 msbuild 编写一个脚本,它应该在一个步骤中制作两批。
示例:2 个项目组

<ItemGroup>
<GroupOne Include="1" />
<GroupOne Include="2" />
</ItemGroup>

<ItemGroup>
<GroupTwo Include="A" />
<GroupTwo Include="B" />
</ItemGroup>

这两个组应该相互循环:
<Message Text="%(GroupOne.Identity) %(GroupTwo.Identity)" />

我希望 msbuild 使两个批次的结果都给出
1 A  
2 A
1 B
2 B

结果。
但这并没有发生。相反,它返回了以下无用的废话:
1  
2
A
B

按照以下链接中的博客建议的方式(使用本地属性组)进行操作,例如
<PropertyGroup>
<GroupOneStep>%(GroupOne.Identity)</GroupOneStep>
</PropertyGroup>
<Message Text="$(GroupOneStep) %(GroupTwo.Identity)" />

使
2 A   
2 B

任何提示?我要疯了。 :-(

PS:这是一篇关于该主题的博文 - 不幸的是它并没有像那里推荐的那样工作:
http://blogs.msdn.com/b/giuliov/archive/2010/04/30/gotcha-msbuild-nested-loops-double-batching.aspx

最佳答案

这是一个更简单的解决方案。

<Target Name="Default">
<ItemGroup>
<Combined Include="@(GroupOne)">
<GroupTwo>%(GroupTwo.Identity)</GroupTwo>
</Combined>
</ItemGroup>

<Message Text="%(Combined.Identity) %(Combined.GroupTwo) " />
</Target>

使用中间项目组 Combined创建消息任务批处理的中间项目组。

If you reference two Item groups in the same task, Msbuild will batch on them both separately. which is NOT what you want



如果您有更多的 ItemMetaData,您将需要为第二个 ItemGroup 显式处理它,包含在引用符号 @ 中的 ItemGroup 自动包含 ItemMetaData,因此您只需要通过显式引用从第二个组创建额外的 MetaData。下面是一个例子:
<ItemGroup>
<GroupOne Include="1">
<Name>One</Name>
</GroupOne>
<GroupOne Include="2">
<Name>Two</Name>
</GroupOne>
</ItemGroup>

<ItemGroup>
<GroupTwo Include="A">
<Name>Andrew</Name>
</GroupTwo>
<GroupTwo Include="B">
<Name>Bob</Name>
</GroupTwo>
</ItemGroup>

<Target Name="Default">
<ItemGroup>
<Combined Include="@(GroupOne)">
<GroupTwo>%(GroupTwo.Identity)</GroupTwo>
<GroupTwoName>%(GroupTwo.Name)</GroupTwoName>
</Combined>
</ItemGroup>

<Message Text="%(Combined.Identity) %(Combined.Name) %(Combined.GroupTwoName) %(Combined.GroupTwo) " />
</Target>

关于msbuild - msbuild 中的双循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4786301/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com