Copy 작업
파일 시스템의 파일을 새 위치에 복사합니다.
매개 변수
다음 표에서는 Copy 작업의 매개 변수에 대해 설명합니다.
Parameter |
설명 |
---|---|
CopiedFiles |
선택적 ITaskItem[] 출력 매개 변수입니다. 성공적으로 복사한 항목이 들어 있습니다. |
DestinationFiles |
선택적 ITaskItem[] 출력 매개 변수입니다. 소스 파일을 복사할 대상이 될 파일 목록을 지정합니다. 이 목록은 SourceFiles 매개 변수에서 지정한 목록과 일대일로 매핑되어야 합니다. 즉, SourceFiles에서 지정한 첫 번째 파일은 DestinationFiles에서 지정한 첫 번째 위치에 복사됩니다. |
DestinationFolder |
선택적 ITaskItem 매개 변수입니다. 파일을 복사할 대상이 될 디렉터리를 지정합니다. 이는 파일이 아닌 디렉터리여야 합니다. 디렉터리가 없으면 자동으로 만들어집니다. |
OverwriteReadOnlyFiles |
선택적 Boolean 매개 변수입니다. 읽기 전용 파일로 표시되어 있는 경우에도 파일을 덮어씁니다. |
Retries |
선택적 Int32 매개 변수입니다. 이전 시도가 모두 실패한 경우 복사를 시도할 횟수를 지정합니다. 기본값은 0입니다. 참고: 다시 시도하면 빌드 프로세스의 동기화 문제가 마스킹될 수 있습니다. |
RetryDelayMilliseconds |
선택적 Int32 매개 변수입니다. 필요한 재시도 사이의 지연을 지정합니다. 기본값으로 RetryDelayMillisecondsDefault 인수가 지정되어 CopyTask 생성자로 전달됩니다. |
SkipUnchangedFiles |
선택적 Boolean 매개 변수입니다. true이면 소스와 대상 사이에 변경되지 않은 파일의 복사를 생략합니다. Copy 작업에서는 파일 크기가 동일하고 마지막으로 수정된 시간이 동일한 경우 파일이 변경되지 않은 것으로 간주합니다.
참고
이 매개 변수를 true로 설정한 경우에는 포함하는 대상에 대해 종속성 분석을 사용하지 말아야 합니다. 이 분석은 소스 파일을 마지막으로 수정한 시간이 대상 파일을 마지막으로 수정한 시간보다 늦은 경우에만 실행되기 때문입니다.
|
SourceFiles |
필수적 ITaskItem[] 매개 변수입니다. 복사할 파일을 지정합니다. |
UseHardlinksIfPossible |
선택적 Boolean 매개 변수입니다. true인 경우 파일을 복사하지 않고 복사된 파일의 하드 링크를 만듭니다. |
설명
DestinationFolder 또는 DestinationFiles 매개 변수를 지정해야 하지만 두 매개 변수를 함께 지정할 수는 없습니다. 두 매개 변수를 모두 지정하면 작업이 실패하고 오류가 기록됩니다.
위에 나열된 매개 변수 외에도 이 작업은 Task 클래스에서 상속하는 TaskExtension 클래스의 매개 변수를 상속합니다. 추가 매개 변수 목록과 해당 설명은 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>