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,则为复制的文件创建硬链接,而不是复制文件。

备注

必须指定 DestinationFolderDestinationFiles 参数,但不能同时指定两者。 如果同时指定了这两个参数,则任务将失败,并记录相应的错误。

除了上面列出的参数,此任务还将从 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>

请参见

概念

MSBuild 任务

其他资源

MSBuild 任务参考