Tarefa VerifyFileHash

Verifica se um arquivo corresponde ao hash do arquivo esperado. Se o hash não corresponder, a tarefa falhará.

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 VerifyFileHash.

Parâmetro Descrição
File Parâmetro String obrigatório.

Os arquivos que terão hash e validação.
Hash Parâmetro String obrigatório.

O hash esperado do arquivo.
Algorithm Parâmetro String opcional.

O algoritmo. Valores permitidos: SHA256, SHA384, SHA512. Padrão = SHA256.
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 VerifyFileHash para verificar sua própria soma de verificação.

<Project>
  <Target Name="VerifyHash">
    <GetFileHash Files="$(MSBuildProjectFullPath)">
      <Output
          TaskParameter="Items"
          ItemName="FilesWithHashes" />
    </GetFileHash>

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

    <VerifyFileHash File="$(MSBuildThisFileFullPath)"
                    Hash="$(ExpectedHash)" />
  </Target>
</Project>

No MSBuild 16.5 e posterior, se você não quiser que o build falhe quando o hash não corresponder, como se estivesse usando a comparação de hash como uma condição para o fluxo de controle, faça downgrade do aviso para uma mensagem usando o seguinte código:

  <PropertyGroup>
    <MSBuildWarningsAsMessages>$(MSBuildWarningsAsMessages);MSB3952</MSBuildWarningsAsMessages>
  </PropertyGroup>

  <Target Name="DemoVerifyCheck">
    <VerifyFileHash File="$(MSBuildThisFileFullPath)"
                    Hash="1"
                    ContinueOnError="WarnAndContinue" />

    <PropertyGroup>
      <HashMatched>$(MSBuildLastTaskResult)</HashMatched>
    </PropertyGroup>

    <Message Condition=" '$(HashMatched)' != 'true'"
             Text="The hash didn't match" />

    <Message Condition=" '$(HashMatched)' == 'true'"
             Text="The hash did match" />
  </Target>

Confira também