Salin tugas

Menyalin file ke lokasi baru dalam sistem file.

Parameter

Tabel berikut ini menjelaskan parameter tugas Copy.

Parameter Deskripsi
CopiedFiles Parameter output ITaskItem[] opsional.

Berisi item yang berhasil disalin, termasuk item yang sebenarnya tidak disalin, tetapi dilewati karena sudah merupakan versi terbaru dan SkipUnchangedFiles adalah true.
DestinationFiles Parameter ITaskItem[] opsional.

Menentukan daftar file yang akan disalin file sumbernya. Daftar ini diharapkan menjadi pemetaan satu-ke-satu dengan daftar yang ditentukan dalam parameter SourceFiles. Artinya, file pertama yang ditentukan dalam SourceFiles akan disalin ke lokasi pertama yang ditentukan dalam DestinationFiles, dan seterusnya.
DestinationFolder Parameter ITaskItem opsional.

Menentukan direktori tempat Anda ingin menyalin file. Ini harus berupa direktori, bukan file. Jika direktori tidak ada, direktori akan dibuat secara otomatis.
OverwriteReadOnlyFiles Parameter Boolean opsional.

Timpa file meskipun ditandai sebagai file baca-saja
Retries Parameter Int32 opsional.

Menentukan berapa kali mencoba menyalin, jika semua upaya sebelumnya gagal. Default ke nol.

Perhatian: Penggunaan percobaan ulang dapat menutupi masalah sinkronisasi dalam proses build Anda.

Catatan: Meskipun default tugas adalah nol percobaan ulang, penggunaan tugas sering kali melewati $(CopyRetryCount) yang bukan nol secara default.
RetryDelayMilliseconds Parameter Int32 opsional.

Menentukan penundaan antara percobaan ulang yang diperlukan. Default ke argumen RetryDelayMillisecondsDefault, yang diteruskan ke konstruktor CopyTask.
SkipUnchangedFiles Parameter Boolean opsional.

Secara default, false. Jika diatur ke true, lewati penyalinan file yang tidak berubah antara sumber dan tujuan. Tugas Copy menganggap file tidak berubah jika memiliki ukuran yang sama dan waktu modifikasi terakhir yang sama.

Catatan: Jika Anda mengatur parameter ini ke true, Anda tidak boleh menggunakan analisis dependensi pada target yang memuat, karena itu hanya menjalankan tugas jika waktu modifikasi terakhir dari file sumber lebih baru daripada waktu modifikasi terakhir dari file tujuan.
SourceFiles Parameter ITaskItem[] wajib.

Menentukan file yang akan disalin.
UseHardlinksIfPossible Parameter Boolean opsional.

Jika true, buat tautan permanen untuk file yang disalin, bukan menyalin file.
UseSymbolicLinksIfPossible Parameter Boolean opsional.

Jika true, buat tautan simbolis untuk file yang disalin, bukan menyalin file, jika memungkinkan.

Peringatan

Peringatan dicatat, termasuk:

  • Copy.DestinationIsDirectory

  • Copy.SourceIsDirectory

  • Copy.SourceFileNotFound

  • Copy.CreatesDirectory

  • Copy.HardLinkComment

  • Copy.RetryingAsFileCopy

  • Copy.FileComment

  • Copy.RemovingReadOnlyAttribute

Keterangan

Parameter DestinationFolder atau DestinationFiles harus ditentukan, tetapi tidak keduanya. Jika keduanya ditentukan, tugas gagal dan kesalahan dicatat.

Selain parameter yang tercantum di atas, tugas ini mewarisi parameter dari kelas TaskExtension, yang mewarisi sendiri dari kelas Task. Untuk daftar parameter tambahan ini dan deskripsinya, lihat kelas dasar TaskExtension.

Contoh 1

Contoh berikut menyalin item dalam MySourceFiles koleksi item ke dalam folder 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>

Contoh 2

Contoh berikut menunjukkan cara melakukan salinan rekursif. Proyek ini menyalin semua file secara rekursif dari c:\MySourceTree ke c:\MyDestinationTree, sambil mempertahankan struktur direktori.

<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>

Lihat juga