Я столкнулся с той же проблемой, что и "Невозможно удалить каталог ... каталог не пустой" при запуске цели, которая выглядит примерно так:
<Target Name="CleanFiles"
DependsOnTargets="Prepare_Files"
Inputs="@(Files->'%(OutputPath)'->Distinct())"
Outputs="_Non_Existent_Item_To_Batch_">
<ItemGroup>
<DirsToDelete Include="@(Files->'%(OutputPath)'->Distinct())"/>
</ItemGroup>
<RemoveDir Directories="@(DirsToDelete)"/>
</Target>
Иногда этоработал нормально и удалял каталоги, но часто я получал ошибку выше.
В конце концов я обнаружил, что MSBuild сам блокирует файлы , потому что они появляются на «входах» цели, и не разблокирует их вовремя, чтобы RemoveDir удалил их.Вышеуказанное:
<Target Name="CleanFiles"
DependsOnTargets="Prepare_Files">
<ItemGroup>
<DirsToDelete Include="@(Files->'%(OutputPath)'->Distinct())"/>
</ItemGroup>
<RemoveDir Directories="@(DirsToDelete)"/>
</Target>
, кажется, решает проблему.
Все еще можно удалить все каталоги всегда, поскольку RemoveDir пропускает несуществующие каталоги и не сообщает об ошибке.