Bagikan melalui


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>

Baca juga