다음을 통해 공유


Copy 작업

파일 시스템의 새 위치에 파일을 복사합니다.

매개 변수

다음 표에서는 Copy 작업의 매개 변수에 대해 설명합니다.

매개 변수 Description
CopiedFiles 선택적 ITaskItem[] 출력 매개 변수입니다.

실제로 복사되지 않았지만 이미 최신 상태이고 SkipUnchangedFilestrue이기 때문에 건너뛴 항목을 비롯하여 성공적으로 복사된 항목을 포함합니다.
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>

참고 항목