VerifyFileHash-Aufgabe
Überprüft, ob die Datei mit dem erwarteten Dateihash übereinstimmt. Wenn der Hash nicht übereinstimmt, schlägt die Aufgabe fehl.
Diese Aufgabe wurde in Version 15.8 hinzugefügt, für die Verwendung für MSBuild-Versionen unter Version 16.0 ist jedoch ein Workaround erforderlich.
Aufgabenparameter
In der folgenden Tabelle werden die Parameter der VerifyFileHash
-Aufgabe beschrieben.
Parameter | Beschreibung |
---|---|
File |
Erforderlicher String -Parameter.Die Datei, für die Hashes generiert werden sollen und die überprüft werden soll. |
Hash |
Erforderlicher String -Parameter.Der erwartete Hash der Datei. |
Algorithm |
Optionaler String -Parameter.Der Algorithmus. Zulässige Werte: SHA256 , SHA384 und SHA512 . Standard = SHA256 . |
HashEncoding |
Optionaler String -Parameter.Die Codierung für die generierten Hashes. Wird standardmäßig auf hex festgelegt. Zulässige Werte: hex und base64 . |
Beispiel
Im folgenden Beispiel wird die Aufgabe VerifyFileHash
verwenden, um dessen eigene Prüfsumme zu überprüfen.
<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>
Bei MSBuild 16.5 und höheren Versionen können Sie die Warnung mithilfe des folgenden Codes zu einer Benachrichtigung herabstufen, wenn Sie nicht möchten, dass der Build fehlschlägt, wenn der Hash nicht übereinstimmt, beispielsweise wenn Sie den Hashvergleich als Bedingung für die Ablaufsteuerung verwenden:
<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>