如何根据Label属性引用ItemGroup中的项?

时间:2012-08-03 02:19:27

标签: msbuild label itemgroup

在我的cpp项目文件中,我有一个如下定义的项目组:

<ItemGroup>
<None Include="file1.dll" Label="Release Version"/>
<None Include="file2.dll" Label="Debug Version"/>
</ItemGroup>

我有一个AfterBuild目标,我希望根据项目的label属性将上述文件复制到不同的位置。例如:

<Target Name="AfterBuild">
<Copy SourceFiles="@(None)" DestinationFiles="$(ReleaseLocation)" Condition="'%(None.Label)'=='Release Version'" ContinueOnError="false" />
</Target>

然而,这不起作用(没有复制)。如何在“复制”命令中引用“标签”属性?

1 个答案:

答案 0 :(得分:2)

您无法根据Label属性过滤项目,但可以根据项目的元数据进行过滤。 E.g:

<ItemGroup>
  <None Include="file1.dll">
   <Label>Release Version</Label>
  </None>
  <None Include="file2.dll">
    <Label>Debug Version</Label>
  </None>
</ItemGroup>

<Target Name="AfterBuild">
  <ItemGroup>
    <_RetailContent Include="@(None)" Condition="%(Label) == 'Release Version'" />
  </ItemGroup>
  <Copy SourceFiles="@(_RetailContent)" DestinationFolder="$(ReleaseLocation)" ContinueOnError="false" />
</Target>