Move (attività)
Sposta i file in una nuova posizione.
Parametri
Nella tabella che segue vengono descritti i parametri dell'attività Move.
Parametro | Descrizione |
---|---|
DestinationFiles |
Parametro di output ITaskItem[] facoltativo.Specifica l'elenco di file in cui spostare i file di origine. Si presume che esista un mapping uno-a-uno tra questo elenco e quello specificato nel parametro SourceFiles . In altri termini, il primo file specificato in SourceFiles verrà spostato nel primo percorso specificato in DestinationFiles e così via. |
DestinationFolder |
Parametro ITaskItem facoltativo. Specifica la directory in cui spostare i file. |
MovedFiles |
Parametro di output ITaskItem[] facoltativo.Contiene gli elementi spostati correttamente. |
OverwriteReadOnlyFiles |
Parametro Boolean facoltativo.Se true , sovrascrive i file anche se sono contrassegnati come di sola lettura. |
SourceFiles |
Parametro ITaskItem[] obbligatorio.Specifica i file da spostare. |
Osservazioni:
È necessario specificare il parametro DestinationFolder
o DestinationFiles
, ma non entrambi. Se vengono specificati entrambi, l'attività avrà esito negativo e verrà registrato un errore.
L'attività Move
crea le cartelle necessarie per i file di destinazione desiderati.
Oltre a usare i parametri elencati nella tabella, questa attività eredita i parametri dalla classe TaskExtension che a sua volta eredita dalla classe Task. Per un elenco di questi parametri aggiuntivi e le rispettive descrizioni, vedere TaskExtension Base Class.
Esempi
L'esempio seguente sposta i file dalla cartella di origine alla cartella dest . Le cartelle di origine e dest sono relative al file di progetto. Se il problema non esiste, viene creato.
<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>
L'esempio seguente rinomina i file in base a un modello di sostituzione. Presuppone che i file come files\original1.txt e files\original2.txt esistano e original.txt esista a livello di progetto prima dell'esecuzione. Si noti l'uso della funzione Replace
elemento stringa per modificare i nomi file. Vedere Funzioni dell'elemento.
<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>
Gli esempi seguenti rinominano tutti i file in un sottoalbero completo che contiene il testo di ricerca e il testo di sostituzione nelle proprietà di MSBuild. Mostra l'uso della funzione Replace
della proprietà stringa per modificare il nome file. Viene inoltre illustrato l'uso dell'opzione OverwriteReadOnlyFiles
.
<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>
Potrebbe risultare utile usare i metadati degli elementi per costruire l'elenco di file di destinazione. In questo caso, i metadati %(RelativeDir)
degli elementi noti e %(Filename)
vengono a cui viene fatto riferimento per costruire i nomi file modificati, in questo caso per modificare le estensioni per qualsiasi file in un sottoalbero con l'estensione .txt
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>