我想用修改的元數據創建一個新的項目集合。 例如,更改ClCompile.AdditionalIncludeDirectories的分隔符。 爲了做到這一點我首先創建從AdditionalIncludeDirectories元數據項集合,然後改造它:在msbuild中過濾項目的元數據
<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集合應該包含所有的元數據。
我在這裏錯過了什麼?
而不是 <目標名稱= 「TransformClCompile」 輸入= 「%(ClCompile.Identity)」 輸出= 「_ Non_Existent_Item_To_Batch _」> 我們在Microsoft使用?清潔模式.targets文件是: 當然,如果已經有一個條件,那麼你就是「和」它。 –
2012-04-02 02:38:08