Copy 任务
更新:2007 年 11 月
将文件系统上的文件复制到一个新位置。
参数
下表描述了 Copy 任务的参数。
参数 |
说明 |
||
---|---|---|---|
CopiedFiles |
可选的 ITaskItem[] 输出参数。 包含已成功复制的项。 |
||
DestinationFiles |
可选的 ITaskItem[] 参数。 指定源文件要复制到的文件列表。此列表与 SourceFiles 参数中指定的列表应一一对应。也就是说,SourceFiles 中指定的第一个文件将复制到 DestinationFiles 中指定的第一个位置,依此类推。 |
||
DestinationFolder |
可选的 ITaskItem 参数。 指定文件要复制到的目录。这必须是一个目录,而不能是一个文件。如果该目录不存在,将自动创建该目录。 |
||
OverwriteReadOnlyFiles |
可选的 Boolean 参数。 即使文件被标记为只读文件仍将其覆盖 |
||
SkipUnchangedFiles |
可选的 Boolean 参数。 如果为 true,则当源文件与目标文件相同时,将跳过文件复制。如果源文件与目标文件在大小和上次修改时间上均相同,则 Copy 任务将认为它们相同。
|
||
SourceFiles |
必选的 ITaskItem[] 参数。 指定要复制的文件。 |
备注
必须指定 DestinationFolder 或 DestinationFiles 参数,但不能同时指定两者。如果同时指定了这两个参数,则任务将失败,并记录相应的错误。
示例
下面的示例将 MySourceFiles 项集合中的项复制到 c:\MyProject\Destination 文件夹中。
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<MySourceFiles Include="a.cs;b.cs;c.cs"/>
</ItemGroup>
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="c:\MyProject\Destination"
/>
</Target>
</Project>
下面的示例演示如何进行递归复制。此项目将所有文件从 c:\MySourceTree 递归复制到 c:\MyDestinationTree,同时保留目录结构。
<Project xmlns="https://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)')"
/>
</Target>
</Project>