stride3d/stride · error · ArgumentException
There is currently no link between elements
Error message
There is currently no link between elements '{0}' and '{1}' What it means
Internal lookup guard in AssetDependencies.GetLink: a link lookup (in, out, or broken-out) was requested for an AssetId that has no recorded AssetLink in the corresponding dictionary. Callers asked for a dependency link that was never registered between the two elements.
Solutions
- Verify the dependency link exists (e.g. via ContainsLink-style checks) before querying GetLinkIn/GetLinkOut
- Register the link first with the builder API that populates the link dictionaries
- Ensure asset ids passed are the ones analyzed, not stale ids from a previous analysis pass
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at sources/assets/Stride.Core.Assets/Analysis/AssetDependencies.cs:293 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of stride3d/stride@96fad776d2 (2026-09-14).
Data as JSON: /api/errors/3055bbed4ed9de25.
Report an issue: GitHub.
Appendix: source
Thrown at sources/assets/Stride.Core.Assets/Analysis/AssetDependencies.cs:293
{
return RemoveLink(ref missingChildren, id, ContentLinkType.All);
}
private static void AddLink(ref Dictionary<AssetId, AssetLink>? dictionary, AssetLink contentLink)
{
dictionary ??= [];
var id = contentLink.Element.Id;
if (dictionary.TryGetValue(id, out var existingLink))
contentLink.Type |= existingLink.Type;
dictionary[id] = contentLink;
}
private AssetLink GetLink(ref Dictionary<AssetId, AssetLink>? dictionary, AssetId id)
{
if (dictionary == null || !dictionary.TryGetValue(id, out var value))
throw new ArgumentException("There is currently no link between elements '{0}' and '{1}'".ToFormat(Item.Id, id));
return value;
}
private AssetLink RemoveLink(ref Dictionary<AssetId, AssetLink>? dictionary, AssetId id, ContentLinkType type)
{
if (dictionary == null || !dictionary.TryGetValue(id, out var oldLink))
throw new ArgumentException("There is currently no link between elements '{0}' and '{1}'".ToFormat(Item.Id, id));
var newLink = oldLink;
newLink.Type &= ~type;
oldLink.Type &= type;
if (newLink.Type == 0)
dictionary.Remove(id);
if (dictionary.Count == 0)
dictionary = null;View on GitHub (pinned to 96fad776d2)