Msbuild 多次评估项目
不确定这是否是问题的正确标题,但我想做的是:Msbuild 多次评估项目,msbuild,Msbuild,不确定这是否是问题的正确标题,但我想做的是: <ItemGroup> <item1 Include="a;b;c;"/> <item2 Include="x;y;z;"/> <itemNames Include="item1;item2"/> </ItemGroup> <Target Name="DefaultName"> <Message Text="%(%(itemNames.Id
<ItemGroup>
<item1 Include="a;b;c;"/>
<item2 Include="x;y;z;"/>
<itemNames Include="item1;item2"/>
</ItemGroup>
<Target Name="DefaultName">
<Message Text="%(%(itemNames.Identity))"/>
</Target>
相反,输出是:
%(item1)
%(item2)
因此,我的猜测是,文本属性只解析一次,而结果字符串不是。围绕此问题的任何解决方法?以下内容将生成您要查找的输出:
<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>
摘自技巧#68和69以下内容将生成您所需的输出:
<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>
摘自《技巧》68和69
DefaultName:
a;b;c
DefaultName:
x;y;z