如何使用msbuild删除所有文件和文件夹

Pit*_*ded 27 msbuild

如何从给定路径中删除所有文件和文件夹?

我尝试过这个,但我无法选择目录.

<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>
Run Code Online (Sandbox Code Playgroud)

Bri*_*ker 69

RemoveDir任务删除指定目录及其所有文件和子目录.您不必先删除文件和子目录.只需将目录名称传递给RemoveDir即可.

   <ItemGroup>
        <DirsToClean Include="work" />
    </ItemGroup>
    <Target Name="CleanWork">
        <RemoveDir Directories="@(DirsToClean)" />
    </Target>
Run Code Online (Sandbox Code Playgroud)

  • 您的原始问题是"删除指定路径中的所有文件和文件夹".如果您的要求不同,您应该在问题中说明.要仅从目录中删除文件夹,保留文件,您将需要一个自定义任务.如果您的命名方案是可以创建文件夹名称的ItemGroup,那么您可以将该ItemGroup传递给RemoveDir以删除它们. (13认同)

Tay*_*ird 16

虽然有方法只使用MSBuild来构建它,但我强烈推荐使用MSBuild扩展包.

http://msbuildextensionpack.codeplex.com/ [已被移动]
GitHub:MSBuildExtensionPack

使用该包,您将获得一个RemoveContent任务,该任务可以完全满足您的需求.安装完成后,您只需执行以下操作:

<MSBuild.ExtensionPack.FileSystem.Folder
   TaskAction="RemoveContent" Path="$(PathtoEmpty)"/>
Run Code Online (Sandbox Code Playgroud)


Pit*_*ded -22

最后我确实使用了 powershell ,速度更快:

<exec>
 <executable>powershell.exe</executable>
 <buildArgs><![CDATA[-command "& {if( [System.IO.Directory]::Exists($pwd) ){dir $pwd | ri -recurse
    -force}}"]]></buildArgs>
</exec>
Run Code Online (Sandbox Code Playgroud)

  • @Izzy:OP 只是接受了自己的解决方案,无论提供了任何实际答案。 (3认同)