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