如何使用MSBuild仅对xcopy进行递归修改或新文件?

时间:2016-06-10 20:38:33

标签: msbuild

我需要一些帮助,使用MSBuild将xcopy文件复制到两个目录。

首先我发现了{。3}} after.xyz.sln.targets。这将确保复制文件任务将运行,无论是否发生实际构建。

我想用它来仅将新的或仅修改过的文件复制到两个目标目录。所以我也需要某种比较代码。我能想到的步骤。

  1. 将dir1与dir2进行比较,并在dir1中找到任何新文件或修改过的文件。
  2. 递归地将这些文件复制到dir2。
  3. 然后递归地将确切的文件集复制到dir3。
  4. TIA。

1 个答案:

答案 0 :(得分:2)

您需要使用Copy任务的参数SkipUnchangedFiles。例如:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    <ItemGroup>
        <MySourceFiles Include="c:\MySourceTree\**\*.*"/>
    </ItemGroup>

    <Target Name="CopyFiles">
        <Copy
            SourceFiles="@(MySourceFiles)"
            DestinationFiles="@(MySourceFiles->'c:\MyDestinationTree\%(RecursiveDir)%(Filename)%(Extension)')"
            SkipUnchangedFiles="true"
        />
    </Target>

</Project>