如何将特定文件从同一位置复制到目标?

时间:2014-04-03 18:49:46

标签: msbuild msbuild-task msbuild-4.0

我有一个MSBuild脚本可以将特定文件从源复制到目标,如下所示。 我不想给* .txt但是给出文件名,因为我只想要这些文件。 这里是目录" E:\ Test100 \"重复多次(我可以把它放在一个属性中,但仍然会重复属性)。

有没有办法简化此操作,以便从定义一次的特定目录中引用这些文件?

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="CopyAllFiles">
    <ItemGroup Label="FilesToCopy">
      <File Include="E:\Test100\1.txt"/>
      <File Include="E:\Test100\2.txt"/>
      <File Include="E:\Test100\3.txt"/>
      <File Include="E:\Test100\4.txt"/>
      <File Include="E:\Test100\5.txt"/>
      <File Include="E:\Test100\6.txt"/>
      <File Include="E:\Test100\7.txt"/>
      <File Include="E:\Test100\8.txt"/>
    </ItemGroup>
    <Copy SourceFiles="@(File)"
          DestinationFolder="E:\TestCopyFiles\"
          Retries="10"
          RetryDelayMilliseconds="100">
    </Copy>   
  </Target>
</Project>

注意:MSBuild脚本和文件位于不同的目录中。

1 个答案:

答案 0 :(得分:1)

查看有关msbuild批处理/列表转换等的文档。你想要的是msbuild处理列表的典型方式 - 如果你想将重复保持在最低限度,你甚至不必指定.txt部分:

<ItemGroup Label="FilesToCopy">
  <FileName Include="1"/>
  <FileName Include="2"/>
  <FileName Include="3"/>
  <FileName Include="4"/>
  <FileName Include="5"/>
  <FileName Include="6"/>
  <FileName Include="7"/>
  <FileName Include="8"/>
</ItemGroup>
<ItemGroup>
  <File Include="E:\Test100\%(FileName.Identity).txt"/>
</ItemGroup>