Copy 任务

更新:2007 年 11 月

将文件系统上的文件复制到一个新位置。

参数

下表描述了 Copy 任务的参数。

参数

说明

CopiedFiles

可选的 ITaskItem[] 输出参数。

包含已成功复制的项。

DestinationFiles

可选的 ITaskItem[] 参数。

指定源文件要复制到的文件列表。此列表与 SourceFiles 参数中指定的列表应一一对应。也就是说,SourceFiles 中指定的第一个文件将复制到 DestinationFiles 中指定的第一个位置,依此类推。

DestinationFolder

可选的 ITaskItem 参数。

指定文件要复制到的目录。这必须是一个目录,而不能是一个文件。如果该目录不存在,将自动创建该目录。

OverwriteReadOnlyFiles

可选的 Boolean 参数。

即使文件被标记为只读文件仍将其覆盖

SkipUnchangedFiles

可选的 Boolean 参数。

如果为 true,则当源文件与目标文件相同时,将跳过文件复制。如果源文件与目标文件在大小和上次修改时间上均相同,则 Copy 任务将认为它们相同。

说明:

如果将此参数设置为 true,则不应对包含目标使用依赖项分析,因为只有当源文件的上次修改时间比目标文件的上次修改时间新时,才运行此任务。

SourceFiles

必选的 ITaskItem[] 参数。

指定要复制的文件。

备注

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

示例

下面的示例将 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 任务参考