我有一个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脚本和文件位于不同的目录中。
答案 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>