使用msbuild删除空目录

Jas*_*aty 6 msbuild

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

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

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

Ily*_*kov 12

像这样的东西应该工作,没有检查计数数千个文件的性能虽然只是为了获得数组长度...

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