2012-02-17 75 views
1

不知道這對問題的正確頭銜,但我想要做的是這樣的:評估項目進行了多次

<ItemGroup> 
    <item1 Include="a;b;c;"/> 
    <item2 Include="x;y;z;"/> 
    <itemNames Include="item1;item2"/> 
</ItemGroup> 

<Target Name="DefaultName"> 
    <Message Text="%(%(itemNames.Identity))"/> 
</Target> 

我期待輸出爲:

a;b;c; 
x;y;z; 

相反,輸出是:

%(item1) 
%(item2) 

所以我的猜測是,Text屬性被解析只有一次,結果字符串是沒有的。任何解決方法圍繞這個?

回答

1

會產生你所尋找的輸出以下內容:

<ItemGroup> 
     <item1 Include="a;b;c;"/> 
     <item2 Include="x;y;z;"/> 
     <itemNames Include="item1;item2"/> 
    </ItemGroup> 

    <Target Name="DefaultName" 
     Outputs="%(itemNames.Identity)"> 
     <PropertyGroup> 
      <ThisItem>%(itemNames.Identity)</ThisItem> 
     </PropertyGroup> 
     <ItemGroup> 
      <ThisItem Include="@($(ThisItem))" /> 
     </ItemGroup> 
     <Message Text="@(ThisItem)" /> 
    </Target> 

...顯示以下輸出...

DefaultName: 
    a;b;c 
DefaultName: 
    x;y;z 

MSBuild Trickery技巧#68和69

摘錄