---
title: BuildManifestHash
product: Unity Editor
version: '7000.0'
latest_version: '7000.0'
status: This page documents version 7000.0. The latest version is 7000.0.
canonical: https://docs.unity.com/en-us/engine/7000.0/script-reference/unity/loading/contentdirectoryloadinfo/buildmanifesthash
latest_url: https://docs.unity.com/en-us/engine/7000.0/script-reference/unity/loading/contentdirectoryloadinfo/buildmanifesthash.md
last_updated: 2026-11-07
generated_at: 2026-11-10T17:44:40.662Z
locale: en-us
---

# BuildManifestHash

> Identifies the build that produced the content directory.

## Definition

* **Type:** Property
* **Namespace:** [Unity.Loading](/engine/7000.0/script-reference/unity/loading.md)
* **Assembly:** UnityEngine.ContentLoadModule

```csharp
public Hash128 BuildManifestHash { get; }
```

### Remarks

It is the hash in the content directory's `BuildManifestHash.txt` file, and the `BuildManifestHash` value of the build's `ContentLayout.json` file. In the Editor, pass it to [BuildHistory.TryGetBuildSummaryForManifestHash](/engine/7000.0/script-reference/unityeditor/build/buildhistory/trygetbuildsummaryformanifesthash.md) to find the build in this project's build history. [ContentDirectoryDiagnostics](/engine/7000.0/script-reference/unity/loading/contentdirectorydiagnostics.md) describes how to keep the layout of builds that the build history does not have.

The hash is a default Hash128 when the content directory is not registered.

### Examples

```csharp
using System;
using System.Collections.Generic;
using System.IO;
using UnityEditor.Build;
using UnityEngine;

namespace BuildDocExamples
{
    // Example: name the files of a ContentDirectoryLoadInfo that a Player sent back. The Player sends
    // ContentDirectoryLoadInfo.BuildManifestHash and, for each file, ContentFileIdentity.ToString(). In
    // the Editor, the hash finds the build in this project's build history, and each identity is the
    // StableId of one entry of that build's ContentLayout.json file.
    public static class ContentDirectoryLoadInfo_BuildManifestHashExample
    {
        // The parts of ContentLayout.json that this example reads.
        [Serializable]
        class ContentLayout
        {
            public SerializedFile[] SerializedFiles;
        }

        [Serializable]
        class SerializedFile
        {
            public string StableId;
            public string[] SourceAssets;
        }

        public static void LogSourceAssets(Hash128 buildManifestHash, IEnumerable<string> fileIdentities)
        {
            if (!BuildHistory.TryGetBuildSummaryForManifestHash(buildManifestHash, out var summary)
                || !BuildHistory.TryGetFilePath(summary.BuildSessionGUID, "ContentLayout.json", out string layoutPath))
            {
                Debug.LogWarning($"Build {buildManifestHash} is not in this project's build history.");
                return;
            }

            var layout = JsonUtility.FromJson<ContentLayout>(File.ReadAllText(layoutPath));
            var sourceAssets = new Dictionary<string, string[]>();
            foreach (SerializedFile file in layout.SerializedFiles)
                sourceAssets[file.StableId] = file.SourceAssets;

            foreach (string identity in fileIdentities)
            {
                // The paths are the ones the assets had when the content was built.
                string description = sourceAssets.TryGetValue(identity, out string[] assets) && assets.Length > 0
                    ? string.Join(", ", assets)
                    : "no source asset";
                Debug.Log($"{identity}: {description}");
            }
        }
    }
}
```
