2010-03-29 8 views

Répondre

3

Merci les gars! J'apprécie toutes vos réponses rapides! J'ai essayé Grep mais j'ai besoin de lire le fichier xml pour voir le résultat.

Je viens de découvrir que nous pouvons utiliser la tâche FilterByContent dans MSBuild Extension Pack qui nous donne un résultat direct dans les propriétés & éléments. J'aimerais vous le faire parvenir au cas où vous en auriez besoin. Un exemple d'utilisation est le suivant:

<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

Vous pouvez trouver une tâche "grep" dans le projet MSBuild Contrib sur CodePlex. Je ne l'ai pas utilisé moi-même cependant.

1

Il n'est pas clair si vous voulez rechercher le texte dans le nom ou dans le fichier lui-même.

Si vous souhaitez simplement une liste de fichiers que leur nom correspondent à des critères particuliers (simples) Je suggère d'utiliser la ItemGroup comme ceci:

Les Grep taks du projet MSBuild Contrib regarderait comme celui-ci

<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]*)" /> 

la tâche Grep va générer le fichier out.xml qui peut ensuite être utilisé pour lire des informations et utiliser dans la processus de construction.

Questions connexes