Я хотел бы создать новую коллекцию элементов с измененными метаданными.
Например, измените разделители ClCompile.AdditionalIncludeDirectories.
Для этого я сначала создаю коллекцию элементов из метаданных AdditionalIncludeDirectories, а затем преобразую ее:
<ItemGroup>
<IncludeDirs0 Include="%(ClCompile.AdditionalIncludeDirectories)">
<key>@(ClCompile)</key>
</IncludeDirs0>
</ItemGroup>
<ItemGroup>
<IncludeDirs Include="@(IncludeDirs0 -> '-I %(Identity)', ' ')">
<key>%(IncludeDirs0.key)</key>
</IncludeDirs>
</ItemGroup>
<ItemGroup>
<Compile Include="@(ClCompile)">
<IncludeDirs>@(IncludeDirs)</IncludeDirs>
</Compile>
</ItemGroup>
Проблема заключается в том, как отфильтровать IncludeDirs по группе элементов компиляции, чтобы каждый элемент компиляции имел право включать dir. (чтобы идентификатор ClCompile равнялся ключу IncludeDirs).
Я попытался добавить условие, например: Condition="'%(IncludeDirs.key)'=='%(ClCompile.Identity)'"
, но безуспешно.
Я мог бы использовать IncludeDirs напрямую: <Message Text="%(IncludeDirs.key) : @(IncludeDirs)"/>
, но я чувствую, что это не так, поскольку коллекция Compile должна содержать все метаданные.
Что мне здесь не хватало?