msbuild:如何排除与正则表达式匹配的通配符路径?

时间:2016-02-19 06:21:38

标签: regex msbuild wildcard

我想要包含所有匹配*.c的文件,包括子目录,以外的任何文件,其路径(在解决方案根目录下)包含一个或多个组件(目录名称或filename)以下划线开头。

出于某种原因,这不起作用:

 <ItemGroup>
    <ClCompile Condition="!$([System.Text.RegularExpressions.Regex]::IsMatch('%(Identity)', `.*[/\\]_.*`))" Include="../../src/foo/**/*.c"/>
</ItemGroup>

我如何在msbuild中执行此操作?我正在使用msbuild 14.0。

1 个答案:

答案 0 :(得分:4)

您使用的sytnax可以过滤现有的ItemGroups,但不能在创建它时(我不会立即找到记录的位置);这意味着没关系:

<ItemGroup>
  <MatchingCFiles Include="../../src/foo/**/*.c"/>
  <ClCompile Condition="!$([System.Text.RegularExpressions.Regex]::IsMatch('%(Identity)', `.*[/\\]_.*`))" Include="@(MatchingCFiles)"/>
</ItemGroup>