2010-03-29 151 views

回答

3

谢谢你们!我感谢你的所有快速回复! 我试过Grep,但我需要阅读XML文件才能看到结果。

我刚刚发现我们可以在MSBuild扩展包中使用FilterByContent任务,它给我们提供了属性&项目的直接结果。如果您需要它,我想分享给您。使用示例如下:

<Target Name="ttt"> 
    <ItemGroup> 
    <files Include="d:\temp\test\**" /> 
    </ItemGroup> 
    <MSBuild.ExtensionPack.FileSystem.File TaskAction="FilterByContent" RegexPattern="abbcc" Files="@(files)" > 
    <Output TaskParameter="IncludedFileCount" PropertyName="out"/> 
    </MSBuild.ExtensionPack.FileSystem.File> 
    <Message Text="ttt:$(out)" /> 
</Target> 

Nam。

1

目前还不清楚您是要搜索名称中的文本还是文件本身。

如果你只是想要的文件列表,他们的名称相匹配特定的(简单)的标准,我建议使用ItemGroup这样的:

从的MSBuild的Contrib项目的Grep TAKS会看像这样

<PropertyGroup> 
    <MSBuildContribCommonTasksAssembly>$(MSBuildExtensionsPath)\MSBuildContrib\MSBuildContrib.Tasks.dll</MSBuildContribCommonTasksAssembly> 
</PropertyGroup> 

<UsingTask TaskName="MSBuildContrib.Tasks.Grep" AssemblyFile="$(MSBuildContribCommonTasksAssembly)" Condition="Exists('$(MSBuildContribCommonTasksAssembly)')" /> 

<ItemGroup> 
    <FilesToSearch Include="**\*.cs" /> 
</ItemGroup> 

<!-- very simple search --> 
<Grep InputFiles="@(FilesToSearch)" OutputFile="out.xml" Pattern="Error" /> 

<!-- slightly more complicated search (search and extract info) --> 
<Grep InputFiles="@(FilesToSearch)" 
    OutputFile="out.xml" 
    Pattern="// (?'Type'TODO|UNDONE|HACK): (\[(?'Author'\w*),(?'Date'.*)\])? (?'Text'[^\n\r]*)" /> 

Grep任务将生成out.xml文件,该文件随后可用于从中读取信息并在建立过程。