Задача 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>