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>