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>