VerifyFileHash görevi

Bir dosyanın beklenen dosya karmasıyla eşleşdiğini doğrular. Karma eşleşmezse görev başarısız olur.

Bu görev 15.8'de eklenmiştir, ancak 16.0'ın altındaki MSBuild sürümleri için geçici bir çözüm gerektirir.

Görev parametreleri

Aşağıdaki tabloda görevin parametreleri VerifyFileHash açıklanmaktadır.

Parametre Tanım
File Gerekli String parametresi.

Karma ve doğrulanacak dosya.
Hash Gerekli String parametresi.

Dosyanın beklenen karması.
Algorithm İsteğe bağlı String parametre.

Algoritma. İzin verilen değerler: SHA256, SHA384, SHA512. Varsayılan = SHA256.
HashEncoding İsteğe bağlı String parametre.

Oluşturulan karmalar için kullanılacak kodlama. varsayılan değeridir hex. İzin verilen değerler = hex, base64.

Örnek

Aşağıdaki örnek, kendi sağlama toplamını VerifyFileHash doğrulamak için görevi kullanır.

<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 ve sonraki sürümlerde, karma eşleşmediğinde derlemenin başarısız olmasını istemiyorsanız ( örneğin, karma karşılaştırmasını denetim akışı koşulu olarak kullanıyorsanız) aşağıdaki kodu kullanarak uyarıyı bir iletiye düşürebilirsiniz:

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

Ayrıca bkz.