Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Проверяет, что файл соответствует ожидаемому хэшу файла. Если хэш не соответствует, задача завершается ошибкой.
Эта задача была добавлена в версии 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>