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>