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
- Check GetAssemblyDefinitionReferenceType(reference) == AssemblyDefinitionReferenceType.Guid before calling.
- 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
- Check GetAssemblyDefinitionReferenceType before extracting a GUID.
- Keep name references and GUID references separate; don't mix the formats.
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
- assemblyPath cannot be null or empty
- scriptPaths cannot be null or empty
- Invalid argument {0} provided.
- Required property 'name' not set
- '{expression}' is not a valid expression
AI-assisted analysis of Unity-Technologies/UnityCsReference@225b0fbdb5 (2026-08-13).
Data as JSON: /api/errors/8822fac68281bff7.
Report an issue: GitHub.