Bagikan melalui


VerifyFileHash task

Memverifikasi bahwa file cocok dengan hash file yang diharapkan. Jika hash tidak cocok, tugas gagal.

Tugas ini ditambahkan di 15.8, tetapi memerlukan solusi untuk digunakan untuk versi MSBuild di bawah 16.0.

Parameter tugas

Tabel berikut ini menjelaskan parameter tugas VerifyFileHash.

Parameter Deskripsi
File Parameter String wajib.

File yang akan di-hash dan divalidasi.
Hash Parameter String wajib.

Hash file yang diharapkan.
Algorithm Parameter String opsional.

Algoritma. Nilai yang diizinkan: SHA256, SHA384, dan SHA512. Default = SHA256.
HashEncoding Parameter String opsional.

Pengodean yang digunakan untuk hash yang dihasilkan. Default ke hex. Nilai yang diizinkan = hex, base64.

Contoh

Contoh berikut menggunakan tugas VerifyFileHash untuk memverifikasi checksum-nya sendiri.

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

Pada MSBuild 16.5 dan yang lebih baru, jika Anda tidak ingin build gagal saat hash tidak cocok, seperti jika Anda menggunakan perbandingan hash sebagai kondisi untuk alur kontrol, Anda dapat menurunkan tingkat peringatan ke pesan menggunakan kode berikut:

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

Baca juga