Задача Copy
Обновлен: Ноябрь 2007
Копирование файлов файловой системы в новое место.
Параметры
В следующей таблице описаны параметры задачи Copy.
Параметр |
Описание |
---|---|
CopiedFiles |
Необязательный выходной параметр ITaskItem[]. Этот параметр содержит успешно скопированные элементы. |
DestinationFiles |
Необязательный параметр ITaskItem[]. Этот параметр указывает список, в который будут скопированы исходные файлы. Предполагается, что этот список будет взаимно-однозначно сопоставляться со списком параметра SourceFiles. То есть первый файл из списка SourceFiles будет скопирован с использованием первого пути, заданного в списке DestinationFiles, и т. д. |
DestinationFolder |
Необязательный параметр ITaskItem. Этот параметр указывает каталог, в который требуется скопировать файлы. Это должен быть каталог, а не файл. Если каталог не существует, он будет создан автоматически. |
OverwriteReadOnlyFiles |
Необязательный параметр Boolean. Переписывание даже файлов, доступных только для чтения. |
SkipUnchangedFiles |
Необязательный параметр Boolean. При значении true неизмененные файлы не копируются. В задаче Copy неизмененными считаются файлы одного размера с одинаковым временем последнего изменения. ![]()
Если этому параметру присвоено значение 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>