2016-02-19 69 views
1

我想要包含与*.c匹配的所有文件,包括子目录中的所有文件,以外的任何文件,其路径(位于解决方案根目录下)包含一个或多个以下划线开头的组件(目录名或文件名)。msbuild:如何排除匹配正则表达式的通配符路径?

出于某种原因,这是行不通的:

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

我怎样才能做到这一点的MSBuild?我使用的是msbuild 14.0。

回答

3

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

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