使用 msbuild 安全删除陈旧文件

Safely remove stale files with msbuild

我有一个将源文件复制到暂存目录的目标,多个项目都会发生这种情况。在以后的项目中,这些文件被传递到一种类型的编译器中。

目前该暂存目录未被清理,因此当源文件被删除时,暂存目录中会保留一个陈旧的副本。

在不对我的增量构建时间产生负面影响的情况下,清除陈旧文件的暂存目录的最佳方法是什么? (即每次都没有完全删除暂存目录)

最终使用这段脚本清理了已从源中删除但仍存在于目标中的文件:

 <Target Name="DeleteStaleFiles">
   <!-- Remove stale files (files which have been deleted at the source but still exist in the destination).  -->
    <ItemGroup>
        <SourceFiles Include="@(SourceFiles->'$(Destination)\%(RecursiveDir)%(Filename)%(Extension)')" />
        <DestinationFiles Include="$(Destination)**\*.*" />
        <StaleFiles Include="@(DestinationFiles)" Exclude="@(SourceFiles)" />
    </ItemGroup>    
    <Message Text="Deleting Stale Files: @(StaleFiles, '%0A')" Condition="'@(StaleFiles->Count())' &gt; 0"/>
    <Delete Files="@(StaleFiles)"/>     
  </Target>