Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Копирование файлов в новое расположение в файловой системе.
Параметры
В следующей таблице приводятся параметры задачи Copy.
| Параметр | Описание |
|---|---|
CopiedFiles |
Необязательный выходной параметр ITaskItem[] .Содержит успешно скопированные элементы, включая те, которые не были скопированы на самом деле, но были пропущены, так как они уже обновлены, а SkipUnchangedFiles имел значение true. |
DestinationFiles |
Необязательный параметр ITaskItem[].Указывает список, в который будут скопированы исходные файлы. Предполагается, что этот список будет взаимно-однозначно сопоставляться со списком в параметре SourceFiles. То есть первый файл из списка SourceFiles будет скопирован с использованием первого пути, заданного в списке DestinationFiles, и т. д. |
DestinationFolder |
Необязательный параметр ITaskItem. Указывает каталог, в который требуется скопировать файлы. Это должен быть каталог, а не файл. Если каталог не существует, он создается автоматически. |
OverwriteReadOnlyFiles |
Необязательный параметр Boolean.Перезапись файлов, даже доступных только для чтения. |
Retries |
Необязательный параметр Int32.Задает количество повторений операции копирования в случае неудачи всех предыдущих попыток. По умолчанию установлен нуль. Внимание. Использование повторных попыток может маскирование проблемы синхронизации в процессе сборки. Примечание. Хотя значение по умолчанию для задачи равно нулю повторных попыток, часто использует $(CopyRetryCount) задачу, которая не является ненулевой по умолчанию. |
RetryDelayMilliseconds |
Необязательный параметр Int32.Определяет задержку между любыми необходимыми попытками. По умолчанию равен аргументу RetryDelayMillisecondsDefault, который передается в конструктор CopyTask. |
SkipUnchangedFiles |
Необязательный параметр Boolean.По умолчанию false. Если задано значение true, пропускает копирование файлов, не изменяющихся между источником и назначением. В задаче Copy неизмененными считаются файлы одного размера с одинаковым временем последнего изменения. Примечание. Если этому параметру присвоено значение true, то выполнять анализ зависимостей в каталоге, содержащем целевые объекты, не следует, так как эта задача выполняется только в том случае, если время последнего изменения исходных файлов больше, чем у целевых файлов. |
SourceFiles |
Обязательный параметр ITaskItem[] .Указывает копируемые файлы. |
UseHardlinksIfPossible |
Необязательный параметр Boolean.Если этот параметр имеет значение true, вместо копирования файлов создаются жесткие ссылки для скопированных файлов. |
UseSymbolicLinksIfPossible |
Необязательный параметр Boolean.Если этот параметр имеет значение true, вместо копирования файлов создаются символические ссылки для скопированных файлов; используйте этот вариант, если это возможно. |
Предупреждения
Регистрируются следующие предупреждения.
Copy.DestinationIsDirectoryCopy.SourceIsDirectoryCopy.SourceFileNotFoundCopy.CreatesDirectoryCopy.HardLinkCommentCopy.RetryingAsFileCopyCopy.FileCommentCopy.RemovingReadOnlyAttribute
Замечания
Можно указать либо параметр DestinationFolder, либо DestinationFiles, но не оба одновременно. В противном случае задача прерывает работу и в журнале регистрируется ошибка.
Помимо перечисленных выше параметров, эта задача наследует параметры от класса TaskExtension, который, в свою очередь, наследует от класса Task. Список этих дополнительных параметров и их описания см. в статье Базовый класс TaskExtension.
Пример 1
В следующем примере кода выполняется копирование элементов из коллекции MySourceFiles в папку c:\MyProject\Destination.
<Project>
<ItemGroup>
<MySourceFiles Include="a.cs;b.cs;c.cs"/>
</ItemGroup>
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="c:\MyProject\Destination"
/>
</Target>
</Project>
Пример 2
В следующем примере кода демонстрируется использование рекурсивного копирования. В этом проекте выполняется рекурсивное копирование всех файлов из папки c:\MySourceTree в папку c:\MyDestinationTree с сохранением структуры каталогов.
<Project>
<Target Name="CopyFiles">
<ItemGroup>
<!-- Because this ItemGroup is inside the target, this will enumerate
all files just before calling Copy. If the ItemGroup were outside
the target , it would enumerate the files during evaluation, before
the build starts, which may miss files created during the build. -->
<MySourceFiles Include="c:\MySourceTree\**\*.*"/>
</ItemGroup>
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="c:\MyDestinationTree\%(RecursiveDir)"
/>
</Target>
</Project>