Как ссылаться на элемент в ItemGroup на основе атрибута Label?

В моем файле проекта cpp у меня есть определенная группа элементов:

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

У меня есть цель AfterBuild, с помощью которой я хочу скопировать вышеуказанные файлы в разные места на основе атрибута метки элемента. Например:

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

Однако это не работает (ничего не копируется). Как мне обратиться к атрибуту Label в моей команде Copy?

1 ответ

Решение

Вы не можете фильтровать элементы по атрибуту Label, но вы можете фильтровать по метаданным элемента. Например:

<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>
Другие вопросы по тегам