tarefa Copy
Copia os arquivos para um novo local no sistema de arquivos.
Parâmetros
A tabela a seguir descreve os parâmetros da tarefa Copy
.
Parâmetro | Descrição |
---|---|
CopiedFiles |
Parâmetro de saída ITaskItem[] opcional.Contém os itens que foram copiados com êxito, incluindo aqueles que não foram realmente copiados, mas foram ignorados porque já estavam atualizados e SkipUnchangedFiles era true . |
DestinationFiles |
Parâmetro opcional ITaskItem[] .Especifica a lista de arquivos para a qual os arquivos de origem serão copiados. Essa lista deve ser um mapeamento um-para-um com a lista especificada no parâmetro SourceFiles . Ou seja, o primeiro arquivo especificado em SourceFiles será copiado para o primeiro local especificado em DestinationFiles e assim por diante. |
DestinationFolder |
Parâmetro ITaskItem opcional. Especifica o diretório para o qual você deseja copiar os arquivos. Isso deve ser um diretório, não um arquivo. Se o diretório não existir, ele será criado automaticamente. |
OverwriteReadOnlyFiles |
Parâmetro Boolean opcional.Substitua arquivos mesmo se eles estiverem marcados como arquivos somente leitura |
Retries |
Parâmetro Int32 opcional.Especifica o número de tentativas de cópia, se todas as tentativas anteriores falharam. Usa zero como padrão. Atenção: o uso de repetições pode mascarar um problema de sincronização no processo de build. Obs.: enquanto o padrão da tarefa for zero repetições, o uso da tarefa normalmente passará $(CopyRetryCount) que é, por padrão, diferente de zero. |
RetryDelayMilliseconds |
Parâmetro Int32 opcional.Especifica o atraso entre as tentativas necessárias. Usa como padrão o argumento RetryDelayMillisecondsDefault, que é passado para o construtor CopyTask. |
SkipUnchangedFiles |
Parâmetro Boolean opcional.Por padrão, false . Se definido como true , ignora a cópia de arquivos que estão inalterados entre a origem e o destino. A tarefa Copy considera os arquivos como inalterados se eles têm o mesmo tamanho e a mesma hora da última modificação. Obs.: se você definir esse parâmetro como true , não deverá usar a análise de dependência no destino recipiente, pois isso apenas executará a tarefa se as horas de última modificação dos arquivos de origem forem mais recentes do que as horas de última modificação dos arquivos de destino. |
SourceFiles |
Parâmetro ITaskItem[] obrigatório.Especifica os arquivos a serem copiados. |
UseHardlinksIfPossible |
Parâmetro Boolean opcional.Se for true , criará links físicos para os arquivos copiados, em vez de copiar os arquivos. |
UseSymbolicLinksIfPossible |
Parâmetro Boolean opcional.Se for true , criará links simbólicos para os arquivos copiados, em vez de copiá-los, se isso for possível. |
Warnings
Os avisos são registrados, incluindo:
Copy.DestinationIsDirectory
Copy.SourceIsDirectory
Copy.SourceFileNotFound
Copy.CreatesDirectory
Copy.HardLinkComment
Copy.RetryingAsFileCopy
Copy.FileComment
Copy.RemovingReadOnlyAttribute
Comentários
O parâmetro DestinationFolder
ou DestinationFiles
deve ser especificado, mas não ambos. Se os dois forem especificados, a tarefa falhará e um erro será registrado.
Além dos parâmetros listados acima, essa tarefa herda parâmetros da classe TaskExtension, que herda da classe Task. Para obter uma lista desses parâmetros adicionais e suas descrições, confira Classe base TaskExtension.
Exemplo 1
O exemplo a seguir copia os itens da coleção de itens MySourceFiles
para a pasta c:\MyProject\Destination.
<Project xmlns="http://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>
Exemplo 2
O exemplo a seguir demonstra como fazer uma cópia recursiva. Esse projeto copia todos os arquivos recursivamente de c:\MySourceTree para c:\MyDestinationTree, mantendo a estrutura do diretório.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<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>