在MSBuild中选择包含特定子字符串的文件

时间:2009-12-28 20:27:52

标签: msbuild

假设我在文件夹中有一堆文件:

foo.test.txt
bar.txt
...

我想创建一个ItemGroup来排除包含“.test”的文件。在标题的某处,我将如何在MSBuild中执行此操作?

<!-- Can't change this part -->
<Items Include="*.txt" />

<CreateItem Include="@(Items)" Condition="'%(Items.Exclude)'!='true' AND (???)">
  <Output TaskParameter="Include" ItemName="ItemsToProcess"/>
</CreateItem>

哪里???应该是这样的:

!Contains(%(Items), ".test.")

除了我不知道如何在MSBuild中这样做。

2 个答案:

答案 0 :(得分:3)

如何使用Exclude

<CreateItem Include="@(Items)" Exclude="*test*" >
  <Output TaskParameter="Include" ItemName="ItemsToProcess"/>
</CreateItem>

答案 1 :(得分:2)

KMoraz是一个良好的开端,但是从MSBuild 3.5开始,你甚至可以在目标内部使用ItemGroup语法。所以这就像是:

<Project ...>
    <ItemGroup>
        <Items Include="*" Exclude="*.text.*"/>
    </ItemGroup>
</Project>