MSBuild:复制文件(如果已更改)然后执行操作(仅在文件更新时)

Dan*_*nov 5 msbuild

在MSBuild中,我可以使用该Copy任务将文件从一个位置复制到另一个位置.

我还可以使用该SkipUnchangedFiles属性指定如果文件未更改,则不应复制这些文件.

是否存在一个标准模式,用于在复制一个或多个文件的情况下预测后续操作?

例如:

  1. 复制任何更新的部署脚本
  2. 当且仅当一个或多个脚本已更改时,执行以正确顺序运行所有部署脚本的批处理文件

另一个复杂因素是我正在使用该CreateItem任务动态生成输入文件列表:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="CopyAndRun">
  <Target Name="CopyAndRun">
    <CreateItem Include="In\**\*Test*.txt">
      <Output TaskParameter="Include" ItemName="SourceFiles"/>
    </CreateItem>
    <Copy SourceFiles="%(SourceFiles.Identity)" DestinationFolder="Out\%(RecursiveDir)" SkipUnchangedFiles="true" />
    <!-- Only want to execute this if updated files were copied -->
    <Message Text="Running..." />
  </Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

Say*_*imi 9

您可以使用MSBuild开箱即用的增量构建来实现此目的.

Sayed Ibrahim Hashimi

我的书:Microsoft Build Engine内部:使用MSBuild和Team Foundation Build