使用 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())' > 0"/>
<Delete Files="@(StaleFiles)"/>
</Target>
我有一个将源文件复制到暂存目录的目标,多个项目都会发生这种情况。在以后的项目中,这些文件被传递到一种类型的编译器中。
目前该暂存目录未被清理,因此当源文件被删除时,暂存目录中会保留一个陈旧的副本。
在不对我的增量构建时间产生负面影响的情况下,清除陈旧文件的暂存目录的最佳方法是什么? (即每次都没有完全删除暂存目录)
最终使用这段脚本清理了已从源中删除但仍存在于目标中的文件:
<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())' > 0"/>
<Delete Files="@(StaleFiles)"/>
</Target>