4
我試圖從另一個創建一個過濾項目組,其中過濾項目組將只包含具有指定文件擴展名的第一個組的項目。如何過濾ItemGroup?
我發現了以下錯誤:
錯誤MSB4190:在位置1到內置的元數據的「擴展」的參考在此條件下「‘%(擴展部分)’==」是不允許的。 SYS'」。
當我運行此:
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
DefaultTargets="Go"
ToolsVersion="4.0">
<ItemGroup>
<Files Include="X.exe"/>
<Files Include="Y.sys"/>
</ItemGroup>
<ItemGroup>
<SysFiles Include="%(Files.Identity)" Condition="'%(Extension)'=='.sys'">
</SysFiles>
</ItemGroup>
<Target Name="Go">
<Message Text="[email protected](SysFiles)"/>
</Target>
</Project>
首先,我不明白爲什麼元數據是不是在這個位置上是否允許?它是一些人爲的限制或未實現的部分msbuild?
其次,實現這種轉換的簡明方法是什麼?
非常感謝。
哇,掛在那裏的朋友。這不是一個微不足道的解決方案,它將以同樣的方式工作。目標只能在實際構建期間執行。如果你想過濾一個項目組來影響你的IDE的UI,那麼這是非常重要的,因爲這可以在目標/任務的外部**工作。見https://stackoverflow.com/questions/25177363/how-to-get-visual-studio-to-execute-msbuild-initialtargets-or-building-a-projec – Nuzzolilo
@Nuzzolilo如果這是你需要的行爲,你可能會需要與維護msbuild的團隊一起提交一張票,因爲它看起來沒有那樣工作。 –