VerifyFileHash タスク

ファイルが予想されるファイル ハッシュと一致することを確認します。 ハッシュが一致しない場合、タスクは失敗します。

このタスクは 15.8 で追加されましたが、16.0 より前の MSBuild バージョンで使用するには回避策が必要です。

タスク パラメーター

VerifyFileHash タスクのパラメーターの説明を次の表に示します。

パラメーター 説明
File 必須の String 型のパラメーターです。

ハッシュ値を計算し、検証するファイル。
Hash 必須の String 型のパラメーターです。

予想されるファイル ハッシュ。
Algorithm 省略可能な String 型のパラメーターです。

アルゴリズム。 許可値: SHA256SHA384SHA512。 既定値 = SHA256
HashEncoding 省略可能な String 型のパラメーターです。

生成されたハッシュに使用するエンコード。 既定値は hex です。 許可値 = hexbase64

次の例では、VerifyFileHash タスクを使用してそのチェックサムが検証されます。

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

MSBuild 16.5 以降では、ハッシュが一致しないときにビルドが失敗しないようにする場合 (たとえば、制御フローの条件としてハッシュ比較を使用している場合)、次のコードを使用して警告をメッセージにダウングレードできます。

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

関連項目