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>

Confira também