msbuild - 使用 msbuild 删除空目录

标签 msbuild

如何递归处理路径,以便处理完成后路径下没有空目录。

例如,假设我们有 C:\Dir1\Dir2\Dir3并且这些目录中没有任何文件。结果应该是删除所有三个目录。

我想在不使用自定义任务的情况下完成此操作。

最佳答案

这样的事情应该可以工作,虽然只是为了获得数组长度,但没有检查计算数千个文件的性能......

<Project DefaultTargets="Foo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="Foo">
        <ItemGroup>
            <Directories Include="$([System.IO.Directory]::GetDirectories('D:\foo', '*', System.IO.SearchOption.AllDirectories))" />
            <Directories>
                <Files>$([System.IO.Directory]::GetFiles("%(Directories.Identity)", "*", System.IO.SearchOption.AllDirectories).get_Length())</Files>
            </Directories>
        </ItemGroup>        
        <RemoveDir Directories="@(Directories)" Condition="%(Files)=='0'" />
    </Target>
</Project>

关于msbuild - 使用 msbuild 删除空目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11051454/

相关文章:

xamarin - 目标_RemoteBuild不存在

c# - MSBuild 忽略/p :BuildProjectReferences=false on Azure build server

visual-studio - 如何在 Visual Studio Team Services 上成功构建后标记源

msbuild - 使用AssemblyInfo自动更新多个AssemblyInfo.cs文件

msbuild - 如何使用新的 csproj 构建系统在 csproj 中定义 AssemblyProduct

sdk - MSBuild 找不到 resgen.exe

visual-studio - 如何使 Visual Studio 构建因 ReSharper 错误而失败

c# - 如何使多个 .net 项目在构建中仅复制引用一次

c# - Azure Project 构建包从 VS 运行,从命令行失败并出现错误 MSB4096

MSBuild - 创建带有通配符的属性?