Copy 작업
파일 시스템의 새 위치에 파일을 복사합니다.
매개 변수
다음 표에서는 Copy
작업의 매개 변수에 대해 설명합니다.
매개 변수 | Description |
---|---|
CopiedFiles |
선택적 ITaskItem[] 출력 매개 변수입니다.실제로 복사되지 않았지만 이미 최신 상태이고 SkipUnchangedFiles 가 true 이기 때문에 건너뛴 항목을 비롯하여 성공적으로 복사된 항목을 포함합니다. |
DestinationFiles |
선택적 ITaskItem[] 매개 변수입니다.소스 파일을 복사할 파일의 목록을 지정합니다. 이 목록은 SourceFiles 매개 변수에 지정된 목록이 포함된 일대일 매핑이어야 합니다. 즉, SourceFiles 에 지정된 첫 번째 파일이 DestinationFiles 등에 지정된 첫 번째 위치에 복사됩니다. |
DestinationFolder |
선택적 ITaskItem 매개 변수입니다. 파일을 복사하려는 디렉터리를 지정합니다. 파일이 아닌 디렉터리여야 합니다. 디렉터리가 없는 경우 자동으로 생성됩니다. |
OverwriteReadOnlyFiles |
선택적 Boolean 매개 변수입니다.파일이 읽기 전용으로 표시된 경우에 파일을 덮어씁니다. |
Retries |
선택적 Int32 매개 변수입니다.이전 시도가 모두 실패한 경우 복사를 시도할 횟수를 지정합니다. 기본값은 0입니다. 주의: 다시 시도의 사용은 빌드 프로세스에서 동기화 문제를 마스킹할 수 있습니다. 참고: 작업 기본값은 재시도 0이지만 작업의 사용은 기본적으로 0이 아닌 값을 전달하는 $(CopyRetryCount) 경우가 많습니다. |
RetryDelayMilliseconds |
선택적 Int32 매개 변수입니다.필요한 다시 시도 간의 지연 시간을 지정합니다. 기본값은 CopyTask 생성자에 전달되는 RetryDelayMillisecondsDefault 인수입니다. |
SkipUnchangedFiles |
선택적 Boolean 매개 변수입니다.기본적으로 . false 설정 true 하면 원본과 대상 간에 변경되지 않은 파일의 복사를 건너뜁니다. 파일 크기가 같고 마지막으로 수정된 시간이 같으면 Copy 작업에서 파일이 변경되지 않은 것으로 간주합니다. 참고: 이 매개 변수를 true 로 설정하면 포함 대상에 대한 종속성 분석을 사용하지 않아야 합니다. 소스 파일의 마지막으로 수정된 시간이 대상 파일의 마지막으로 수정된 시간보다 더 최신일 경우에만 작업을 수행하기 때문입니다. |
SourceFiles |
필수 ITaskItem[] 매개 변수입니다.복사할 파일을 지정합니다. |
UseHardlinksIfPossible |
선택적 Boolean 매개 변수입니다.true 이면 파일을 복사하는 대신 복사된 파일에 대한 하드 링크를 만듭니다. |
UseSymbolicLinksIfPossible |
선택적 Boolean 매개 변수입니다.true 이면 가능한 경우 파일을 복사하는 대신 복사된 파일의 바로 가기 링크를 만듭니다. |
경고
다음을 포함하여 경고가 기록됩니다.
Copy.DestinationIsDirectory
Copy.SourceIsDirectory
Copy.SourceFileNotFound
Copy.CreatesDirectory
Copy.HardLinkComment
Copy.RetryingAsFileCopy
Copy.FileComment
Copy.RemovingReadOnlyAttribute
설명
DestinationFolder
또는 DestinationFiles
매개 변수 중 하나(둘 다가 아닌)를 지정해야 합니다. 둘 다를 지정하는 경우 작업이 실패하고 오류가 기록됩니다.
이 작업은 위에 나와 있는 매개 변수 외에 Task 클래스에서 직접 상속하는 TaskExtension 클래스의 매개 변수도 상속합니다. 이러한 추가 매개 변수 및 해당 설명이 포함된 목록은 TaskExtension 기본 클래스를 참조하세요.
예 1
다음 예제에서는 MySourceFiles
항목 컬렉션의 항목을 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>
예제 2
다음 예제에서는 재귀적 복사를 수행하는 방법을 보여 줍니다. 이 프로젝트는 디렉터리 구조를 유지하면서 c:\MySourceTree의 모든 파일을 재귀적으로 c:\MyDestinationTree에 복사합니다.
<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>