tarefa Move
Move os arquivos para um novo local.
Parâmetros
A tabela a seguir descreve os parâmetros da tarefa Move.
Parâmetro | Descrição |
---|---|
DestinationFiles |
Parâmetro de saída ITaskItem[] opcional.Especifica a lista de arquivos para a qual os arquivos de origem serão movidos. Essa lista deve ser um mapeamento um-para-um para a lista especificada no parâmetro SourceFiles . Ou seja, o primeiro arquivo especificado em SourceFiles será movido para o primeiro local especificado em DestinationFiles e assim por diante. |
DestinationFolder |
Parâmetro ITaskItem opcional. Especifica o diretório para o qual você deseja mover os arquivos. |
MovedFiles |
Parâmetro de saída ITaskItem[] opcional.Contém os itens que foram movidos com êxito. |
OverwriteReadOnlyFiles |
Parâmetro Boolean opcional.Se true , substitua arquivos mesmo se eles estiverem marcados como arquivos somente leitura. |
SourceFiles |
Parâmetro ITaskItem[] obrigatório.Especifica os arquivos a serem movidos. |
Comentários
Um dos parâmetros DestinationFolder
ou DestinationFiles
deve ser especificado, mas não ambos. Se os dois forem especificados, a tarefa falhará e um erro será registrado.
A tarefa Move
cria pastas conforme necessário para os arquivos de destino desejados.
Além de ter os parâmetros listados acima, essa tarefa herda parâmetros da classe TaskExtension, que herda da classe Task. Para obter uma lista desses parâmetros adicionais e suas descrições, confira Classe base TaskExtension.
Exemplos
O exemplo a seguir move arquivos da pasta source para a pasta dest. As pastas source e dest são relativas ao arquivo de projeto. Se dest não existir, será criada.
<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>
O exemplo a seguir renomeia arquivos de acordo com um padrão de substituição. Ele pressupõe que existem arquivos como files\original1.txt e files\original2.txt e que original.txt existe no nível do projeto antes da execução. Observe o uso da função Replace
do item de cadeia de caracteres para modificar os nomes de arquivo. Consulte Funções de 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>
Os exemplos a seguir renomeiam todos os arquivos em uma subárvore completa que contém o texto de pesquisa e o texto de substituição nas propriedades de MSBuild. Ele mostra o uso da função Replace
da propriedade de cadeia de caracteres para modificar o nome do arquivo. Também demonstra o uso da opção 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>
Talvez você ache útil usar metadados de item para construir a lista de arquivos de destino. Aqui, os metadados de itens conhecidos %(RelativeDir)
e %(Filename)
são referenciados para construir os nomes de arquivo modificados, nesse caso, para alterar as extensões de qualquer arquivo em uma subárvore com a extensão .txt
para .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>