VerifyFileHash – úloha

Ověří, že soubor odpovídá očekávané hodnotě hash souboru. Pokud se hodnota hash neshoduje, úloha selže.

Tato úloha byla přidána ve verzi 15.8, ale vyžaduje alternativní řešení pro použití pro verze MSBuild nižší než 16.0.

Parametry úkolu

Následující tabulka popisuje parametry VerifyFileHash úlohy.

Parametr Popis
File Požadovaný parametr String.

Soubor, který má být hashován a ověřen.
Hash Požadovaný parametr String.

Očekávaná hodnota hash souboru.
Algorithm Volitelný String parametr.

Algoritmus. Povolené hodnoty: SHA256, SHA384, SHA512. Výchozí = SHA256.
HashEncoding Volitelný String parametr.

Kódování, které se má použít pro vygenerované hodnoty hash. Výchozí hodnota hexje . Povolené hodnoty = hex, base64.

Příklad

Následující příklad používá VerifyFileHash úlohu k ověření vlastního kontrolního součtu.

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

Pokud v MSBuildu 16.5 a novějším nechcete, aby sestavení selhalo, pokud se hodnota hash neshoduje, například pokud používáte porovnání hodnot hash jako podmínku pro tok řízení, můžete upozornění downgradovat na zprávu pomocí následujícího kódu:

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

Viz také