GetFileHash 任务

计算文件或文件集的内容的校验和。

此任务已添加到版本 15.8 中,但需要一种用于 16.0 以下 MSBuild 版本的变通方法

任务参数

下表描述了 GetFileHash 任务的参数。

参数 说明
Files 必选 ITaskItem[] 参数。

要进行哈希处理的文件。
Items ITaskItem[] 输出参数。

Files 输入以及文件哈希的其他元数据集。
Hash String 输出参数。

文件的哈希。 在仅传入一个项目时才设置此输出。
Algorithm 可选 String 参数。

算法。 允许的值:SHA256SHA384SHA512。 默认值 = SHA256
MetadataName 可选 String 参数。

每个项目中存储哈希的元数据名称。 默认为 FileHash
HashEncoding 可选 String 参数。

用于生成哈希的编码。 默认为 hex。 允许的值 = hexbase64

示例

以下示例使用 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>

另请参阅