VerifyFileHash, zadanie

Sprawdza, czy plik jest zgodny z oczekiwanym skrótem pliku. Jeśli skrót nie jest zgodny, zadanie zakończy się niepowodzeniem.

To zadanie zostało dodane w wersji 15.8, ale wymaga obejścia dla wersji MSBuild poniżej wersji 16.0.

Parametry zadania

W poniższej tabeli opisano parametry VerifyFileHash zadania.

Parametr Opis
File Wymagany parametr interfejsu String.

Plik, który ma zostać skrócony i zweryfikowany.
Hash Wymagany parametr interfejsu String.

Oczekiwany skrót pliku.
Algorithm Opcjonalny String parametr.

Algorytm. Dozwolone wartości: SHA256, SHA384, SHA512. Wartość domyślna = SHA256.
HashEncoding Opcjonalny String parametr.

Kodowanie używane do generowania skrótów. Wartość domyślna to hex. Dozwolone wartości = hex, base64.

Przykład

W poniższym przykładzie użyto zadania do zweryfikowania VerifyFileHash własnej sumy kontrolnej.

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

W programie MSBuild 16.5 lub nowszym, jeśli kompilacja nie powiedzie się, jeśli skrót nie jest zgodny, na przykład jeśli używasz porównania skrótów jako warunku przepływu sterowania, możesz obniżyć poziom ostrzeżenia do komunikatu przy użyciu następującego kodu:

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

Zobacz też