Как ссылаться на элемент в 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>