我想知道爲什麼在下面的代碼中,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