Tarefa GetFileHash

Calcula as somas de verificação do conteúdo de um arquivo ou conjunto de arquivos.

Essa tarefa foi adicionada no 15.8, mas requer uma solução alternativa a ser usada para as versões do MSBuild inferiores a 16.0.

Parâmetros de tarefa

A tabela a seguir descreve os parâmetros da tarefa GetFileHash.

Parâmetro Descrição
Files Parâmetro ITaskItem[] obrigatório.

Os arquivos destinados a sofrer hashing.
Items Parâmetro de saída ITaskItem[].

A entrada Files com metadados adicionais definidos como o hash do arquivo.
Hash Parâmetro de saída String.

O hash do arquivo. Essa saída é definida somente se exatamente um item foi passado.
Algorithm Parâmetro String opcional.

O algoritmo. Valores permitidos: SHA256, SHA384, SHA512. Padrão = SHA256.
MetadataName Parâmetro String opcional.

O nome de metadados em que o hash é armazenado em cada item. Assume o padrão de FileHash.
HashEncoding Parâmetro String opcional.

A codificação usada para hashes gerados. Assume o padrão de hex. Valores permitidos = hex, base64.

Exemplo

O exemplo a seguir usa a tarefa GetFileHash para determinar e imprimir a soma de verificação dos FilesToHash itens.

<Project>
  <ItemGroup>
    <FilesToHash Include="$(MSBuildThisFileDirectory)\*" />
  </ItemGroup>
  <Target Name="GetHash">
    <GetFileHash Files="@(FilesToHash)">
      <Output
          TaskParameter="Items"
          ItemName="FilesWithHashes" />
    </GetFileHash>

    <Message Importance="High"
             Text="@(FilesWithHashes->'%(Identity): %(FileHash)')" />
  </Target>
</Project>

Com um único arquivo, você pode usar o parâmetro de saída Hash. O projeto de exemplo a seguir é nomeado hash-example.proj e calcula um hash para si mesmo:

<Project>
    <ItemGroup>
      <FileToHash Include="$(MSBuildThisFileDirectory)hash-example.proj" />
    </ItemGroup>
    <Target Name="GetHash">
      <GetFileHash Files="@(FileToHash)">
        <Output
            TaskParameter="Hash"
            ItemName="FileHash" />
      </GetFileHash>
  
      <Message Importance="High"
               Text="File: @(FileToHash) Hash: @(FileHash)" />
    </Target>
  </Project>

Confira também