不确定问题是否正确,但我正在尝试做的是:
<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属性只解析一次而结果字符串不解析。这有什么解决方法吗?
答案 0 :(得分: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