【发布时间】:2017-09-29 00:20:33
【问题描述】:
我想用修改后的元数据创建一个新的项目集合。 例如,更改 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>
问题是如何过滤 Compile 项目组上的 IncludeDirs,以便每个 Compile 项目都有其正确的包含目录。 (以便 ClCompile 标识等于 IncludeDirs 键)。
我尝试添加一个条件,例如:Condition="'%(IncludeDirs.key)'=='%(ClCompile.Identity)'",但没有任何成功。
我本可以直接使用 IncludeDirs:<Message Text="%(IncludeDirs.key) : @(IncludeDirs)"/>,但我觉得这没有抓住重点,因为 Compile 集合应该包含所有元数据。
我错过了什么?
【问题讨论】:
标签: msbuild