Поделиться через


Задача Copy

Обновлен: Ноябрь 2007

Копирование файлов файловой системы в новое место.

Параметры

В следующей таблице описаны параметры задачи Copy.

Параметр

Описание

CopiedFiles

Необязательный выходной параметр ITaskItem[].

Этот параметр содержит успешно скопированные элементы.

DestinationFiles

Необязательный параметр ITaskItem[].

Этот параметр указывает список, в который будут скопированы исходные файлы. Предполагается, что этот список будет взаимно-однозначно сопоставляться со списком параметра SourceFiles. То есть первый файл из списка SourceFiles будет скопирован с использованием первого пути, заданного в списке DestinationFiles, и т. д.

DestinationFolder

Необязательный параметр ITaskItem.

Этот параметр указывает каталог, в который требуется скопировать файлы. Это должен быть каталог, а не файл. Если каталог не существует, он будет создан автоматически.

OverwriteReadOnlyFiles

Необязательный параметр Boolean.

Переписывание даже файлов, доступных только для чтения.

SkipUnchangedFiles

Необязательный параметр Boolean.

При значении true неизмененные файлы не копируются. В задаче Copy неизмененными считаются файлы одного размера с одинаковым временем последнего изменения.

3e54c37h.alert_note(ru-ru,VS.90).gifПримечание.
Если этому параметру присвоено значение true, то выполнять анализ зависимостей в каталоге, содержащем целевые объекты, не рекомендуется, так как эта задача выполняется только в том случае, если время последнего изменения исходных файлов больше, чем у целевых файлов.

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>

См. также

Основные понятия

Задачи MSBuild

Другие ресурсы

Справочные сведения о задачах MSBuild