2010-03-29 7 views

답변

3

고마워요! 나는 당신의 모든 빠른 답장을 고맙다! Grep을 시도했지만 결과를 보려면 xml 파일을 읽어야합니다.

이제 우리는 MSBuild Extension Pack에서 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> 

남.

1

CodePlex의 MSBuild Contrib 프로젝트에서 "grep"작업을 찾을 수 있습니다. 그래도 나 자신을 사용하지 않았습니다.

1

이름이나 파일 자체에서 텍스트를 검색할지 여부는 분명하지 않습니다.

당신은 단순히 자신의 이름을 나는이 같은 ItemGroup 사용하는 것이 좋습니다 것입니다 특정 (단순) 기준에 일치하는 파일의 목록을 원하는 경우 :

의 MSBuild있는 contrib 프로젝트에서 Grep TAKS 보일 것을 like

<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 파일을 생성합니다. 프로세스를 빌드합니다.

관련 문제