Copy 任务
将文件复制到文件系统的一个新位置。
参数
下表描述了 Copy 任务的参数。
Parameter |
描述 |
---|---|
CopiedFiles |
可选 ITaskItem[] 输出参数。 包含已成功复制的项。 |
DestinationFiles |
可选 ITaskItem[] 参数。 指定源文件要复制到的文件列表。 此列表与 SourceFiles 参数中指定的列表应一一对应。 也就是说,SourceFiles 中指定的第一个文件将复制到 DestinationFiles 中指定的第一个位置,依此类推。 |
DestinationFolder |
可选 ITaskItem 参数。 指定文件要复制到的目录。 这必须是一个目录,而不能是一个文件。 如果该目录不存在,将自动创建该目录。 |
OverwriteReadOnlyFiles |
可选 Boolean 参数。 即使文件被标记为只读文件仍将其覆盖 |
Retries |
可选 Int32 参数。 指定在前面的所有尝试均失败的情况下尝试复制的次数。 默认为零。 注意:通过重试方法可以掩盖生成过程中的同步问题。 |
RetryDelayMilliseconds |
可选 Int32 参数。 指定任何必要重试之间的延迟。 对于 RetryDelayMillisecondsDefault 参数为默认值,将传递到构造函数 CopyTask。 |
SkipUnchangedFiles |
可选 Boolean 参数。 如果为 true,则当源文件与目标文件相同时,将跳过文件复制。 如果源文件与目标文件在大小和上次修改时间上均相同,则 Copy 任务将认为它们相同。 备注 如果将此参数设置为 true,则不应对包含目标使用依赖项分析,因为只有当源文件的上次修改时间比目标文件的上次修改时间新时,才运行此任务。 |
SourceFiles |
必选 ITaskItem[] 参数。 指定要复制的文件。 |
UseHardlinksIfPossible |
可选 Boolean 参数。 如果为 true,则为复制的文件创建硬链接,而不是复制文件。 |
备注
必须指定 DestinationFolder 或 DestinationFiles 参数,但不能同时指定两者。 如果同时指定了这两个参数,则任务将失败,并记录相应的错误。
除了上面列出的参数,此任务还将从 TaskExtension 类继承参数,此类本身从 Task 类继承。 有关这些附加参数及其说明的列表,请参见 TaskExtension 基类。
示例
下面的示例将 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>