GetFileHash 任务
计算文件或文件集的内容的校验和。
此任务已添加到版本 15.8 中,但需要一种用于 16.0 以下 MSBuild 版本的变通方法。
任务参数
下表描述了 GetFileHash
任务的参数。
参数 | 说明 |
---|---|
Files |
必选 ITaskItem[] 参数。要进行哈希处理的文件。 |
Items |
ITaskItem[] 输出参数。Files 输入以及文件哈希的其他元数据集。 |
Hash |
String 输出参数。文件的哈希。 在仅传入一个项目时才设置此输出。 |
Algorithm |
可选 String 参数。算法。 允许的值: SHA256 、SHA384 、SHA512 。 默认值 = SHA256 。 |
MetadataName |
可选 String 参数。每个项目中存储哈希的元数据名称。 默认为 FileHash 。 |
HashEncoding |
可选 String 参数。用于生成哈希的编码。 默认为 hex 。 允许的值 = hex 、base64 。 |
示例
以下示例使用 GetFileHash
任务确定并打印 FilesToHash
项的校验和。
<Project>
<ItemGroup>
<FilesToHash Include="$(MSBuildThisFileDirectory)\*" />
</ItemGroup>
<Target Name="GetHash">
<GetFileHash Files="@(FilesToHash)">
<Output
TaskParameter="Items"
ItemName="FilesWithHashes" />
</GetFileHash>
<Message Importance="High"
Text="@(FilesWithHashes->'%(Identity): %(FileHash)')" />
</Target>
</Project>
对于单个文件,可以使用 Hash
输出参数。 以下示例项目命名为 hash-example.proj
并计算其自身的哈希:
<Project>
<ItemGroup>
<FileToHash Include="$(MSBuildThisFileDirectory)hash-example.proj" />
</ItemGroup>
<Target Name="GetHash">
<GetFileHash Files="@(FileToHash)">
<Output
TaskParameter="Hash"
ItemName="FileHash" />
</GetFileHash>
<Message Importance="High"
Text="File: @(FileToHash) Hash: @(FileHash)" />
</Target>
</Project>