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


Задача Copy

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

Параметры

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

Параметр

Описание

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>

См. также

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

Задачи MSBuild

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

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