stride3d/stride · error · YamlException
Invalid version dependency format. Unable to decode
Error message
Invalid version dependency format. Unable to decode [{0}] What it means
PackageVersionRangeSerializer.ConvertFrom throws this when a YAML scalar for a package version range cannot be parsed by PackageVersionRange.TryParse. Version range dependencies in packages (e.g. '1.2.x', '>1.0 <2.0') must match the expected range syntax; anything else aborts package deserialization.
Solutions
- Rewrite the version range using PackageVersionRange syntax (e.g. '1.2.0', '>=1.0.0 <2.0.0') at the reported line
- Simplify the range to a single concrete PackageVersion string to test parsing
- Consult existing package files for examples of accepted range formats
- If you don't need a range, pin an exact version instead
Example fix
// before Dependency: mypackage version: latest // after Dependency: mypackage version: 1.2.0
Defensive patterns
Strategy: validation
Validate before calling
if (PackageVersionRange.TryParse(rangeText, out var range)) { use(range); } else { fixOrSkip(rangeText); } Type guard
bool IsValidVersionRange(string? s) => s != null && PackageVersionRange.TryParse(s, out _);
Try / catch
try { LoadPackage(file); } catch (YamlException ex) when (ex.Message.Contains("version dependency format")) { log.Error($"Invalid range in {file}: {ex.Message}"); throw; } Prevention
- Copy range syntax from existing working .pkg files
- Prefer exact versions over complex ranges when unsure
- Lint package files in CI with PackageVersionRange.TryParse
When it happens
Trigger: Loading a .pkg or package YAML whose version-dependency range string does not conform to PackageVersionRange syntax: wrong operators, missing version numbers, extra whitespace/characters, or a typo like '>=x.y'.
Common situations: Hand-editing package dependency ranges; copying NuGet-style version specs that Stride's parser does not accept; migration from other package managers with different range grammars.
Understand the failure class
Background: "Invalid ... format", "must be in format X", "does not look like a ..." — invalid argument format errors across CLI tools and libraries — this error's family across 17 libraries.
- Parsing and encoding errors: unexpected token, malformed input — why parsers reject input and how to find the real culprit.
Related errors
- Invalid version format. Unable to decode
- Unable to load the given stream
- Upgrading project [ ] to use [ ] from version [ ] to [ ] is…
- Upgrading package [ ] to use [ ] from version [ ] to [ ] is…
- Invalid version format
AI-assisted analysis of stride3d/stride@96fad776d2 (2026-09-14).
Data as JSON: /api/errors/be5ce2b21cb3b511.
Report an issue: GitHub.
Appendix: source
Thrown at sources/assets/Stride.Core.Assets/Serializers/PackageVersionRangeSerializer.cs:25
namespace Stride.Core.Assets.Serializers;
/// <summary>
/// A Yaml serializer for <see cref="PackageVersionRange"/>
/// </summary>
[YamlSerializerFactory(YamlAssetProfile.Name)]
internal class PackageVersionRangeSerializer : AssetScalarSerializerBase
{
public override bool CanVisit(Type type)
{
return typeof(PackageVersionRange).IsAssignableFrom(type);
}
public override object ConvertFrom(ref ObjectContext context, Scalar fromScalar)
{
if (!PackageVersionRange.TryParse(fromScalar.Value, out var versionRange))
{
throw new YamlException(fromScalar.Start, fromScalar.End, "Invalid version dependency format. Unable to decode [{0}]".ToFormat(fromScalar.Value));
}
return versionRange;
}
public override string ConvertTo(ref ObjectContext objectContext)
{
return objectContext.Instance.ToString()!;
}
}
View on GitHub (pinned to 96fad776d2)