2010-03-29 135 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文件,該文件隨後可用於從中讀取信息並在建立過程。

相關問題