Attività VerifyFileHash
Verifica che un file corrisponda all'hash file previsto. Se l'hash non corrisponde, l'attività ha esito negativo.
Questa attività è stata aggiunta nella versione 15.8. È tuttavia necessaria una soluzione alternativa per poter usare le versioni di MSBuild precedenti alla versione 16.0.
Parametri dell'attività
Nella tabella che segue vengono descritti i parametri dell'attività VerifyFileHash
.
Parametro | Descrizione |
---|---|
File |
Parametro String obbligatorio.File di cui eseguire l'hashing e la convalida. |
Hash |
Parametro String obbligatorio.Hash file previsto. |
Algorithm |
Parametro String facoltativo.Algoritmo. Valori consentiti: SHA256 , SHA384 , SHA512 . Valore predefinito = SHA256 . |
HashEncoding |
Parametro String facoltativo.Codifica da usare per gli hash generati. Il valore predefinito è hex . Valori consentiti = hex , base64 . |
Esempio
Nell'esempio seguente l'attività VerifyFileHash
viene usata per verificare il relativo checksum.
<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>
In MSBuild 16.5 e versioni successive, se non si vuole che la compilazione non riesca quando l'hash non corrisponde, ad esempio se si usa il confronto hash come condizione per il flusso di controllo, è possibile effettuare il downgrade dell'avviso a un messaggio usando il codice seguente:
<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>