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

时间:2009-05-14 16:16:09

标签: msbuild

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

我还可以使用SkipUnchangedFiles属性指定如果文件没有更改则不应复制这些文件。

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

例如:

  1. 复制任何更新的部署脚本
  2. 执行批处理文件,该文件以正确的顺序运行所有部署脚本当且仅当一个或多个脚本已更改时
  3. 另一个复杂因素是我使用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>
    

1 个答案:

答案 0 :(得分:9)

您可以使用MSBuild开箱即用的incremental building来实现此目的。

Sayed Ibrahim Hashimi

我的书:Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build