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>

Weitere Informationen