Memindahkan tugas
Memindahkan file ke lokasi baru.
Parameter
Tabel berikut ini menjelaskan parameter tugas Move.
Parameter | Deskripsi |
---|---|
DestinationFiles |
Parameter output ITaskItem[] opsional.Menentukan daftar file untuk memindahkan file sumber. 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. |
MovedFiles |
Parameter output ITaskItem[] opsional.Berisi item yang berhasil dipindahkan. |
OverwriteReadOnlyFiles |
Parameter Boolean opsional.Jika true , timpa file meskipun ditandai sebagai file baca-saja. |
SourceFiles |
Parameter ITaskItem[] wajib.Menentukan file yang akan disalin. |
Keterangan
Parameter DestinationFolder
atau DestinationFiles
harus ditentukan, tetapi tidak keduanya. Jika keduanya ditentukan, tugas gagal dan kesalahan dicatat.
Tugas Move
membuat folder sesuai kebutuhan untuk file tujuan yang diinginkan.
Selain memiliki parameter yang tercantum dalam tabel, tugas ini mewarisi parameter dari kelas TaskExtension, yang mewarisi dari kelas Task. Untuk daftar parameter tambahan ini dan deskripsinya, lihat kelas dasar TaskExtension.
Contoh
Contoh berikut memindahkan file dari folder sumber ke folder dest . Folder sumber dan dest relatif terhadap file proyek. Jika dest tidak ada, dest akan dibuat.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<FilesToMove Include="source\*.*"/>
</ItemGroup>
<Target Name="MoveFiles" AfterTargets="Build">
<Message Text="Moving Files @(FilesToMove)"/>
<Move SourceFiles="@(FilesToMove)" DestinationFolder="dest">
<Output
TaskParameter="DestinationFiles"
ItemName="FilesWritten"/>
</Move>
<Message Text="@(FilesWritten)"/>
</Target>
</Project>
Contoh berikut mengganti nama file sesuai dengan pola penggantian. Ini mengasumsikan file seperti files\original1.txt dan files\original2.txt ada dan original.txt ada di tingkat proyek sebelum eksekusi. Perhatikan penggunaan fungsi Replace
item string untuk mengubah nama file. Lihat Fungsi item.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<FilesToRename Include="files\original*" />
</ItemGroup>
<Target Name="MoveFiles" AfterTargets="Build">
<Message Text="Rename one file"/>
<Move SourceFiles="original.txt" DestinationFiles="new.txt"/>
<Message Text="Renaming files @(FilesToRename)"/>
<Move SourceFiles="@(FilesToRename)" DestinationFiles="@(FilesToRename->Replace('original', 'new'))" />
</Target>
</Project>
Contoh berikut mengganti nama semua file dalam subtree lengkap yang berisi teks pencarian dan teks pengganti di properti MSBuild. Ini menunjukkan penggunaan fungsi Replace
properti string untuk mengubah nama file. Ini juga menunjukkan penggunaan OverwriteReadOnlyFiles
opsi .
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SearchText>original</SearchText>
<ReplaceText>new</ReplaceText>
</PropertyGroup>
<ItemGroup>
<FilesToRename Include="files\**\*$(SearchText)*" />
</ItemGroup>
<Target Name="MoveFiles" AfterTargets="Build">
<Message Text="Renaming files @(FilesToRename)"/>
<Move SourceFiles="@(FilesToRename)"
OverwriteReadOnlyFiles="true"
DestinationFiles="@(FilesToRename->Replace($(SearchText), $(ReplaceText)))" />
</Target>
</Project>
Anda mungkin merasa berguna untuk menggunakan metadata item untuk membuat daftar file tujuan. Di sini, metadata %(RelativeDir)
item terkenal dan %(Filename)
dirujuk untuk membuat nama file yang dimodifikasi, dalam hal ini untuk mengubah ekstensi untuk file apa pun dalam subtree dengan ekstensi .txt
menjadi .orig
.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<NewExtension>orig</NewExtension>
</PropertyGroup>
<ItemGroup>
<FilesToRename Include="files\**\*.txt" />
<RenamedFiles Include="@(FilesToRename -> '%(RelativeDir)%(Filename).$(NewExtension)')" />
</ItemGroup>
<Target Name="MoveFiles" AfterTargets="Build">
<Message Text="Renaming files @(FilesToRename) to @(RenamedFiles)"/>
<Move SourceFiles="@(FilesToRename)"
OverwriteReadOnlyFiles="true"
DestinationFiles="@(RenamedFiles)" />
</Target>
</Project>