Msbuild-如何删除文件夹内容而不是文件夹本身?

Msbuild-如何删除文件夹内容而不是文件夹本身?,msbuild,Msbuild,现在,在我的msbuild脚本中,有一项任务是删除文件夹 <RemoveDir Directories="$(Bin)"/> 但是,我宁愿删除文件夹的内容,但保留该文件夹(以防有人在Windows资源管理器中打开该文件夹)。如何执行此操作?这将删除所有文件和子文件夹: <Target Name="CleanFolder"> <PropertyGroup> <TargetFolder>c:\clean</Ta

现在,在我的msbuild脚本中,有一项任务是删除文件夹

<RemoveDir Directories="$(Bin)"/>


但是,我宁愿删除文件夹的内容,但保留该文件夹(以防有人在Windows资源管理器中打开该文件夹)。如何执行此操作?

这将删除所有文件和子文件夹:

    <Target Name="CleanFolder">

    <PropertyGroup>
      <TargetFolder>c:\clean</TargetFolder>
    </PropertyGroup>

    <ItemGroup>
      <FilesToClean Include="$(TargetFolder)\**\*"/>
      <Directories Include="$([System.IO.Directory]::GetDirectories('$(TargetFolder)', '*', System.IO.SearchOption.AllDirectories))"
                   Exclude="$(TargetFolder)"/>
    </ItemGroup>

    <Delete Files="@(FilesToClean)" ContinueOnError="true"/>
    <RemoveDir Directories="@(Directories)" />
  </Target>
下载并安装,然后使用



什么是扩展包?我必须在我所有同事的计算机和所有构建服务器上安装它吗?@ColonelPanic它是由Mike Fourie(不是Microsoft)维护的有用的MSBuild任务的集合。您可以安装它,但我更愿意将其添加到我的存储库中,这样即使生成计算机上未安装MSBuild任务,也可以完成生成。您还可以通过nuget添加扩展包。然后,您将把它放在存储库中,nuget安装程序会自动配置csproj文件以引用扩展名packGood答案。另外,使用类似$(SolutionDir)\TestResults的东西,因为GetDirectory需要一个绝对路径,这将使它相对于解决方案。
openfiles /disconnect /ID *
<MSBuild.ExtensionPack.FileSystem.Folder TaskAction="RemoveContent" Path="$(Bin)" />