Partager via


VerifyFileHash, tâche

Vérifie qu’un fichier correspond au hachage de fichier attendu. Si le hachage ne correspond pas, la tâche échoue.

Cette tâche a été ajoutée dans la version 15.8, mais nécessite une solution de contournement pour une utilisation avec les versions de MSBuild antérieures à 16.0.

Paramètres de tâche

Le tableau ci-dessous décrit les paramètres de la tâche VerifyFileHash .

Paramètre Description
File Paramètre String requis.

Le fichier à hacher et à valider.
Hash Paramètre String requis.

Hachage attendu du fichier.
Algorithm Paramètre String facultatif.

Algorithme. Valeurs autorisées : SHA256, SHA384, SHA512. Valeur par défaut = SHA256.
HashEncoding Paramètre String facultatif.

Encodage à utiliser pour les hachages générés. La valeur par défaut est hex. Valeurs autorisées = hex, base64.

Exemple

L’exemple suivant utilise la tâche VerifyFileHash pour vérifier sa propre somme de contrôle.

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

Sur MSBuild 16.5 et versions ultérieures, si vous ne souhaitez pas que la génération échoue lorsque le hachage ne correspond pas, par exemple si vous utilisez la comparaison de hachage comme condition pour le flux de contrôle, vous pouvez passer l’avertissement à un message à l’aide du code suivant :

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

Voir aussi