Condividi tramite


Attività GetFileHash

Calcola i checksum del contenuto di un file o di un set di file.

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à GetFileHash.

Parametro Descrizione
Files Parametro ITaskItem[] obbligatorio.

File per i quali generare un hash.
Items Parametro di output ITaskItem[].

Input Files con metadati aggiuntivi impostato sul l'hash del file.
Hash Parametro di output String.

Hash del file. Questo output viene impostato solo se è stato passato esattamente un elemento.
Algorithm Parametro String facoltativo.

Algoritmo. Valori consentiti: SHA256, SHA384, SHA512. Valore predefinito = SHA256.
MetadataName Parametro String facoltativo.

Nome dei metadati in cui l'hash viene archiviato in ogni elemento. Il valore predefinito è FileHash.
HashEncoding Parametro String facoltativo.

Codifica da usare per gli hash generati. Il valore predefinito è hex. Valori consentiti = hex, base64.

Esempio

L'esempio seguente usa l'attività GetFileHash per determinare e stampare il checksum degli elementi 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>

Con un singolo file, è possibile usare il Hash parametro di output. Il progetto di esempio seguente è denominato hash-example.proj e calcola un hash per se stesso:

<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>

Vedi anche