Taşıma görevi

Dosyaları yeni bir konuma taşır.

Parametreler

Aşağıdaki tabloda görevin parametreleri Move açıklanmaktadır.

Parametre Tanım
DestinationFiles İsteğe bağlı ITaskItem[] çıkış parametresi.

Kaynak dosyaların taşınacak dosyaların listesini belirtir. Bu listenin, parametresinde belirtilen listeye bire bir eşlemesi olması beklenir SourceFiles . Başka bir ifadeyle, içinde SourceFiles belirtilen ilk dosya içinde DestinationFilesbelirtilen ilk konuma taşınır ve bu şekilde devam eder.
DestinationFolder İsteğe bağlı ITaskItem parametre.

Dosyaları taşımak istediğiniz dizini belirtir.
MovedFiles İsteğe bağlı ITaskItem[] çıkış parametresi.

Başarıyla taşınan öğeleri içerir.
OverwriteReadOnlyFiles İsteğe bağlı Boolean parametre.

ise true, salt okunur dosyalar olarak işaretlenmiş olsalar bile dosyaların üzerine yazar.
SourceFiles Gerekli ITaskItem[] parametresi.

Taşınacak dosyaları belirtir.

Açıklamalar

DestinationFolder Parametre veya DestinationFiles parametre belirtilmelidir, ancak her ikisini birden belirtmemelidir. Eğer her ikisi de belirtilirse görev başarısız olur ve bir hata günlüğe kaydedilir.

Görev, Move istenen hedef dosyalar için gereken klasörleri oluşturur.

Tabloda listelenen parametrelerin bulunmasına ek olarak, bu görev kendi sınıfından TaskExtension devralan sınıfından Task parametreleri devralır. Bu ek parametrelerin ve açıklamalarının listesi için bkz . TaskExtension temel sınıfı.

Örnekler

Aşağıdaki örnek dosyaları kaynak klasörden dest klasörüne taşır. Kaynak ve dest klasörleri proje dosyasına göredir. dest yoksa oluşturulur.

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

Aşağıdaki örnek, dosyaları değiştirme düzenine göre yeniden adlandırır. Dosya\özgün1.txt ve files\original2.txt gibi dosyaların var olduğunu ve özgün.txt dosyasının yürütmeden önce proje düzeyinde mevcut olduğunu varsayar. Dosya adlarını değiştirmek için dize öğesi işlevinin Replace kullanıldığına dikkat edin. Bkz . Öğe işlevleri.

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

Aşağıdaki örnekler, MSBuild özelliklerinde arama metnini ve değiştirme metnini içeren tam bir alt ağaçtaki tüm dosyaları yeniden adlandırır. Dosya adını değiştirmek için string özelliği işlevinin Replace kullanımını gösterir. Ayrıca seçeneğin OverwriteReadOnlyFiles kullanımını da gösterir.

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

Hedef dosya listesini oluşturmak için öğe meta verilerini kullanmayı yararlı bulabilirsiniz. Burada, iyi bilinen öğe meta verilerine %(RelativeDir) ve %(Filename) değiştirilen dosya adlarını oluşturmak için başvuruldu, bu durumda uzantılı bir alt .txt ağaçtaki herhangi bir dosyanın uzantılarını olarak değiştirmek için .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>

Ayrıca bkz.