Задача VerifyFileHash
Проверяет, что файл соответствует ожидаемому хэшу файла. Если хэш не соответствует, задача завершается ошибкой.
Эта задача была добавлена в версии 15.8, но требует обходное решение для версий MSBuild до 16.0.
Параметры задачи
В следующей таблице приводятся параметры задачи VerifyFileHash
.
Параметр | Описание |
---|---|
File |
Обязательный параметр String .Файл, который требуется хэшировать и проверить. |
Hash |
Обязательный параметр String .Ожидаемый хэш файла. |
Algorithm |
Необязательный параметр String .Алгоритм. Допустимые значения: SHA256 , SHA384 , SHA512 . По умолчанию = SHA256 . |
HashEncoding |
Необязательный параметр String .Кодировка, используемая для созданных хэшей. По умолчанию — hex . Допустимые значения = hex , base64 . |
Пример
В следующем примере задача 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>