{"record":{"id":"8822fac68281bff7","repo":"Unity-Technologies/UnityCsReference","slug":"reference-is-not-a-guid-reference","errorCode":null,"errorMessage":"{reference} is not a GUID reference","messagePattern":"(.+?) is not a GUID reference","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"Editor/Mono/Scripting/ScriptCompilation/CompilationPipeline.cs","lineNumber":447,"sourceCode":"        public static string GetAssemblyDefinitionFilePathFromAssemblyReference(string reference)\n        {\n            return GetAssemblyDefinitionFilePathFromAssemblyReference(EditorCompilationInterface.Instance, reference);\n        }\n\n        public static AssemblyDefinitionReferenceType GetAssemblyDefinitionReferenceType(string reference)\n        {\n            return GUIDReference.IsGUIDReference(reference) ? AssemblyDefinitionReferenceType.Guid : AssemblyDefinitionReferenceType.Name;\n        }\n\n        public static string GUIDToAssemblyDefinitionReferenceGUID(string guid)\n        {\n            return GUIDReference.GUIDToGUIDReference(guid);\n        }\n\n        public static string AssemblyDefinitionReferenceGUIDToGUID(string reference)\n        {\n            if (GetAssemblyDefinitionReferenceType(reference) != AssemblyDefinitionReferenceType.Guid)\n                throw new ArgumentException($\"{reference} is not a GUID reference\", \"reference\");\n\n            return GUIDReference.GUIDReferenceToGUID(reference);\n        }\n\n        public static string GetAssemblyRootNamespaceFromScriptPath(string sourceFilePath)\n        {\n            var projectRootNamespace = UnityEditor.EditorSettings.projectGenerationRootNamespace;\n            return GetAssemblyRootNamespaceFromScriptPath(EditorCompilationInterface.Instance, projectRootNamespace, sourceFilePath);\n        }\n\n        public static AssemblyDefinitionPlatform[] GetAssemblyDefinitionPlatforms()\n        {\n            if (assemblyDefinitionPlatforms == null)\n            {\n#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.\n                assemblyDefinitionPlatforms = CustomScriptAssembly.Platforms.Select(p => new AssemblyDefinitionPlatform(p.Name, p.DisplayName, p.BuildTarget, p.HasSubTarget, p.SubTarget)).ToArray();\n#pragma warning restore UA2001\n                Array.Sort(assemblyDefinitionPlatforms, CompareAssemblyDefinitionPlatformByDisplayName);","sourceCodeStart":429,"sourceCodeEnd":465,"githubUrl":"https://github.com/Unity-Technologies/UnityCsReference/blob/225b0fbdb57cc17d094e8056b71f8314aba56f73/Editor/Mono/Scripting/ScriptCompilation/CompilationPipeline.cs#L429-L465","documentation":"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.","triggerScenarios":"Calling AssemblyDefinitionReferenceGUIDToGUID on a reference that is not a GUID reference (GUIDReference.IsGUIDReference(reference) is false).","commonSituations":"Passing a plain assembly name reference where a GUID reference (guid:...) was expected, or mixing the two reference formats.","solutions":["Check GetAssemblyDefinitionReferenceType(reference) == AssemblyDefinitionReferenceType.Guid before calling.","Use the name-based path for name references, or convert the reference to a GUID reference first."],"exampleFix":"// before\nguid = CompilationPipeline.AssemblyDefinitionReferenceGUIDToGUID(refStr);\n// after\nif (CompilationPipeline.GetAssemblyDefinitionReferenceType(refStr) != AssemblyDefinitionReferenceType.Guid)\n    throw new ArgumentException(\"reference is not a GUID reference\", nameof(refStr));\nguid = CompilationPipeline.AssemblyDefinitionReferenceGUIDToGUID(refStr);","handlingStrategy":"validation","validationCode":"if (CompilationPipeline.GetAssemblyDefinitionReferenceType(reference) != AssemblyDefinitionReferenceType.Guid)\n    throw new ArgumentException(\"reference is not a GUID reference\", nameof(reference));","typeGuard":"static bool IsGuidReference(string reference) =>\n    CompilationPipeline.GetAssemblyDefinitionReferenceType(reference) == AssemblyDefinitionReferenceType.Guid;","tryCatchPattern":null,"preventionTips":["Check GetAssemblyDefinitionReferenceType before extracting a GUID.","Keep name references and GUID references separate; don't mix the formats."],"tags":["script-compilation","asmdef","validation","arguments"],"backgroundTag":null,"analyzedSha":"225b0fbdb57cc17d094e8056b71f8314aba56f73","analyzedAt":"2026-08-13T19:07:19.849Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}