web-dev-qa-db-fra.com

Comment supprimer tous les fichiers et dossiers avec msbuild

Comment puis-je supprimer tous les fichiers et dossiers d'un chemin donné?

J'ai essayé cela, mais je ne peux pas sélectionner les répertoires.

<Target Name="CleanSource" Condition="$(path)!=''">

    <Message Text="path=$(path)"/>

    <ItemGroup>
      <fileToDelete Include="$(path)\**\*.*" />
      <directoryToDelete Include="$(path)\**\" /><!these doest not select any directory at all-->     
    </ItemGroup>

    <Message Text="file to delete:@(fileToDelete)"/>
    <Message Text="directory to delete:@(directoryToDelete)"/>

    <Delete Files="@(fileToDelete)" />
    <Message Text="file effectively deleted:@(DeletedFiles)"/>
    <RemoveDir Directories="@(directoryToDelete)" />
    <Message Text="Directory effectively deleted:@(RemovedDirectories)"/>

</Target>
27
Pitming_Reloaded

La tâche RemoveDir supprime les répertoires spécifiés et tous ses fichiers et sous-répertoires. Vous n'avez pas besoin de supprimer d'abord les fichiers et les sous-répertoires. Passez simplement le nom du répertoire à RemoveDir.

   <ItemGroup>
        <DirsToClean Include="work" />
    </ItemGroup>
    <Target Name="CleanWork">
        <RemoveDir Directories="@(DirsToClean)" />
    </Target>
68
Brian Walker

Bien qu'il existe des moyens de construire cela en utilisant uniquement MSBuild, je recommande fortement le pack d'extension MSBuild.

http://msbuildextensionpack.codeplex.com/ [a été déplacé]
GitHub: MSBuildExtensionPack

En utilisant le pack, vous obtenez une tâche RemoveContent qui fait exactement ce dont vous avez besoin. Une fois que vous avez installé, il vous suffit de faire quelque chose comme:

<MSBuild.ExtensionPack.FileSystem.Folder
   TaskAction="RemoveContent" Path="$(PathtoEmpty)"/>
16
Taylor Bird