我正在尝试从另一个项目创建一个过滤项目组,其中过滤项目组将仅包含第一个组中具有指定文件扩展名的项目。
我收到以下错误:
错误MSB4190:在这种情况下,不允许引用位置1的内置元数据“扩展”:“'%(Extension)'=='。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="SysFiles=@(SysFiles)"/>
</Target>
</Project>
首先,我不明白为什么在此位置不允许使用元数据?它是msbuild的一些人为限制或未实现的一部分吗?
其次,实现这种转变的一种简明方式是什么?
非常感谢。
最佳答案
好的,我发现如果我在目标Go中指定了ItemGroup SysFiles,它将正常工作。
关于msbuild - 您如何过滤ItemGroup?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13177552/