Unity-Technologies/UnityCsReference · error · ArgumentException

{reference} is not a GUID reference

Error message

{reference} is not a GUID reference

What it means

ArgumentException from AssemblyDefinitionReferenceGUIDToGUID: the supplied reference is not in GUID-reference form. It first checks GetAssemblyDefinitionReferenceType; only Guid-type references carry an extractable GUID, so a Name-type reference is rejected.

Source

Thrown at Editor/Mono/Scripting/ScriptCompilation/CompilationPipeline.cs:447

        public static string GetAssemblyDefinitionFilePathFromAssemblyReference(string reference)
        {
            return GetAssemblyDefinitionFilePathFromAssemblyReference(EditorCompilationInterface.Instance, reference);
        }

        public static AssemblyDefinitionReferenceType GetAssemblyDefinitionReferenceType(string reference)
        {
            return GUIDReference.IsGUIDReference(reference) ? AssemblyDefinitionReferenceType.Guid : AssemblyDefinitionReferenceType.Name;
        }

        public static string GUIDToAssemblyDefinitionReferenceGUID(string guid)
        {
            return GUIDReference.GUIDToGUIDReference(guid);
        }

        public static string AssemblyDefinitionReferenceGUIDToGUID(string reference)
        {
            if (GetAssemblyDefinitionReferenceType(reference) != AssemblyDefinitionReferenceType.Guid)
                throw new ArgumentException($"{reference} is not a GUID reference", "reference");

            return GUIDReference.GUIDReferenceToGUID(reference);
        }

        public static string GetAssemblyRootNamespaceFromScriptPath(string sourceFilePath)
        {
            var projectRootNamespace = UnityEditor.EditorSettings.projectGenerationRootNamespace;
            return GetAssemblyRootNamespaceFromScriptPath(EditorCompilationInterface.Instance, projectRootNamespace, sourceFilePath);
        }

        public static AssemblyDefinitionPlatform[] GetAssemblyDefinitionPlatforms()
        {
            if (assemblyDefinitionPlatforms == null)
            {
#pragma warning disable UA2001 // The Banned API Analyzer produces compile errors for any new Linq code. This pre-existing usage has been suppressed, but should be rewritten if possible.
                assemblyDefinitionPlatforms = CustomScriptAssembly.Platforms.Select(p => new AssemblyDefinitionPlatform(p.Name, p.DisplayName, p.BuildTarget, p.HasSubTarget, p.SubTarget)).ToArray();
#pragma warning restore UA2001
                Array.Sort(assemblyDefinitionPlatforms, CompareAssemblyDefinitionPlatformByDisplayName);

View on GitHub (pinned to 225b0fbdb5)

Solutions

  1. Check GetAssemblyDefinitionReferenceType(reference) == AssemblyDefinitionReferenceType.Guid before calling.
  2. Use the name-based path for name references, or convert the reference to a GUID reference first.

Example fix

// before
guid = CompilationPipeline.AssemblyDefinitionReferenceGUIDToGUID(refStr);
// after
if (CompilationPipeline.GetAssemblyDefinitionReferenceType(refStr) != AssemblyDefinitionReferenceType.Guid)
    throw new ArgumentException("reference is not a GUID reference", nameof(refStr));
guid = CompilationPipeline.AssemblyDefinitionReferenceGUIDToGUID(refStr);
Defensive patterns

Strategy: validation

Validate before calling

if (CompilationPipeline.GetAssemblyDefinitionReferenceType(reference) != AssemblyDefinitionReferenceType.Guid)
    throw new ArgumentException("reference is not a GUID reference", nameof(reference));

Type guard

static bool IsGuidReference(string reference) =>
    CompilationPipeline.GetAssemblyDefinitionReferenceType(reference) == AssemblyDefinitionReferenceType.Guid;

Prevention

When it happens

Trigger: Calling AssemblyDefinitionReferenceGUIDToGUID on a reference that is not a GUID reference (GUIDReference.IsGUIDReference(reference) is false).

Common situations: Passing a plain assembly name reference where a GUID reference (guid:...) was expected, or mixing the two reference formats.

Related errors


AI-assisted analysis of Unity-Technologies/UnityCsReference@225b0fbdb5 (2026-08-13). Data as JSON: /api/errors/8822fac68281bff7. Report an issue: GitHub.