egametang/ET · error · Exception

resolve Hot update dll:{assemblyName} failed! Please make su

Error message

resolve Hot update dll:{assemblyName} failed! Please make sure that this hot update dll exists or the search path is configured in the external hot update path.

What it means

Thrown by AssemblyResolverBase.ResolveAssembly when TryResolveAssembly fails for a hot update assembly name and throwExIfNotFind is true. The resolver distinguishes hot update DLLs from AOT DLLs by checking SettingsUtil.HotUpdateAssemblyNamesIncludePreserved; the hot update variant tells the developer to verify the DLL exists or configure the external hot update search path.

Source

Thrown at Packages/cn.etetet.hybridclr/Scripts/Editor/Share/Meta/AssemblyResolverBase.cs:21

using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HybridCLR.Editor.Meta
{
    public abstract class AssemblyResolverBase : IAssemblyResolver
    {
        public string ResolveAssembly(string assemblyName, bool throwExIfNotFind)
        {
            if (TryResolveAssembly(assemblyName, out string assemblyPath))
            {
                return assemblyPath;
            }
            if (throwExIfNotFind)
            {
                if (SettingsUtil.HotUpdateAssemblyNamesIncludePreserved.Contains(assemblyName))
                {
                    throw new Exception($"resolve Hot update dll:{assemblyName} failed! Please make sure that this hot update dll exists or the search path is configured in the external hot update path.");
                }
                else
                {
                    throw new Exception($"resolve AOT dll:{assemblyName} failed! Please make sure that the AOT project has referenced the dll and generated the trimmed AOT dll correctly.");
                }
            }
            return null;
        }

        protected abstract bool TryResolveAssembly(string assemblyName, out string assemblyPath);
    }
}

View on GitHub (pinned to 5cab01f7a8)

Solutions

  1. Compile the hot update assemblies first (HybridCLR/CompileDll or a normal build) so the DLLs exist in the expected output folder.
  2. Open HybridCLR Settings and set External Hot Update Path to the directory containing the DLL if it is built outside Unity.
  3. Verify the assembly name matches exactly (case-sensitive, no .dll extension) against what the resolver expects.
  4. Check that the assembly's .asmdef/.csproj actually produces a DLL with that name.
Defensive patterns

Strategy: validation

Validate before calling

foreach (var name in SettingsUtil.HotUpdateAssemblyNamesIncludePreserved)
{
    if (string.IsNullOrEmpty(resolver.ResolveAssembly(name, false)))
        Debug.LogError("Hot update DLL " + name + " cannot be resolved. Check output dir / external path.");
}

Prevention

When it happens

Trigger: Any code path that calls resolver.ResolveAssembly(name, true) where name is listed in HotUpdateAssemblyNamesIncludePreserved but no DLL file can be located in the configured search paths (project output, HybridCLRData, external hot update path).

Common situations: The hot update DLL was not compiled before generation ran; the external hot update path setting is empty or wrong; the DLL lives in a non-standard output directory; a CI checkout missing a prebuilt hot update DLL artifact.

Related errors


AI-assisted analysis of egametang/ET@5cab01f7a8 (2026-08-13). Data as JSON: /api/errors/e4caaf3020767223. Report an issue: GitHub.