我想知道为什么在下面的代码中,MsBuild拒绝设置后缀元数据。它可以使用CreateItem任务而不是ItemGroup声明(因为CreateItem是在构建时计算的),但我不能在这里这样做,因为此代码位于“属性文件”中:项目没有目标,它只是一堆我在实际项目中包含的物业/物品。MsBuild中项目的评估范围和顺序
<ItemGroup>
<Layout Include="Bla">
<PartnerCode>bla</PartnerCode>
</Layout>
<Layout Include="Bli">
<PartnerCode>bli</PartnerCode>
</Layout>
</ItemGroup>
<ItemGroup Condition="'$(LayoutENV)'=='Preprod'">
<LayoutFolder Include="Preprod">
<Destination>..\Compil\layout\pre\</Destination>
</LayoutFolder>
</ItemGroup>
<ItemGroup>
<Destinations Include="@(LayoutFolder)" >
<Suffix>%(Layout.PartnerCode)</Suffix>
</Destinations>
</ItemGroup>
目的地建好了,但未设置后缀元数据。
至于现在,我已经在每个需要它的项目中复制了Destinations Definition,但它并不是很干净。如果有人有更好的解决方案,我很感兴趣!
其实,我可以。我做了好几次。如果您明确写入要批量处理的项目组名称(如%(LAYOUT.PartnerCode)),那很好。 但是,如果不在目标元素中,也许我无法进行批处理... – 2010-09-03 09:32:01
如果您在Destinations.Suffix中编写%(Layout.PartnerCode),您要什么值? bla或bli? – 2010-09-03 09:48:40
比方说Layout.Count = n。我想要一个包含2n个物品的集合:布局中的所有物品,一次是bla,另一个是bli。 – 2010-09-06 07:51:48