stride3d/stride · critical · InvalidOperationException
Upgrading project [ ] to use [ ] from version [ ] to [ ] is…
Error message
Upgrading project [{project.Name}] to use [{dependencyName}] from version [{dependencyVersion}] to [{packageUpgrader.Attribute.UpdatedVersionRange.MinVersion}] is not supported (supported only from version [{packageUpgrader.Attribute.PackageMinimumVersion}] What it means
During PreLoadPackageDependencies, Stride checks whether a project's package dependency version can be upgraded by the registered IPackageUpgrader. If the current dependency version is older than the upgrader's PackageMinimumVersion, no upgrade path exists and an InvalidOperationException is thrown because the migration cannot be performed safely.
Solutions
- Open and upgrade the project incrementally through intermediate engine versions until it reaches a supported version
- Update the dependency version manually in the .csproj/.sdpkg to at least PackageMinimumVersion
- Register/implement a package upgrader whose PackageMinimumVersion covers the project's version
- Restore the project from source control to a supported version
Example fix
// before (project depends on version 3.0.0.0, upgrader supports >= 3.1.0.0) // session.Load(...); // throws // after: bump the dependency in the package file first <Dependency>Stride.Engine;3.1.0.0</Dependency> <!-- then load -->
Defensive patterns
Strategy: try-catch
Validate before calling
// Compare your dependency's VersionRange.MinVersion against the upgrader's minimum before loading
if (dependencyVersion.MinVersion < upgraderAttribute.PackageMinimumVersion)
logger.Warning("Project too old; upgrade through intermediate versions first"); Try / catch
try { session.Load(...); }
catch (InvalidOperationException ex) when (ex.Message.Contains("is not supported"))
{ logger.Error(ex, "Unsupported version upgrade path"); } Prevention
- Keep projects on supported engine versions; upgrade each release
- Don't skip multiple major versions when upgrading
- Document PackageMinimumVersion of custom upgraders
When it happens
Trigger: Opening a session/project whose dependency on a package (e.g. Stride engine packages) has a VersionRange.MinVersion below the packageUpgrader.Attribute.PackageMinimumVersion, while the upgrader targets UpdatedVersionRange.
Common situations: Opening a very old Stride/Game Studio project created several major versions back that skips multiple upgrade generations; custom package upgraders with narrow supported ranges.
Understand the failure class
Background: "is not a compatible type" / "cannot merge" errors: when a value's type doesn't match what the library requires — this error's family across 65 libraries.
Related errors
- Upgrading package [ ] to use [ ] from version [ ] to [ ] is…
- Asset of type has been serialized with newer version , but…
- Asset of type should be updated from version to , but no…
- No upgrader found for version
- Invalid version dependency format. Unable to decode
AI-assisted analysis of stride3d/stride@96fad776d2 (2026-09-14).
Data as JSON: /api/errors/b0ddc018b47c1a88.
Report an issue: GitHub.
Appendix: source
Thrown at sources/assets/Stride.Core.Assets/PackageSession.Dependencies.cs:267
var packageUpgrader = AssetRegistry.GetPackageUpgrader(dependencyName);
if (packageUpgrader != null)
{
// Check if this upgrader has already been added due to another package reference
if (pendingPackageUpgrades.Any(pendingPackageUpgrade => pendingPackageUpgrade.PackageUpgrader == packageUpgrader))
continue;
// Check if upgrade is necessary
if (dependencyVersion.MinVersion >= packageUpgrader.Attribute.UpdatedVersionRange.MinVersion)
{
continue;
}
// Check if upgrade is allowed
if (dependencyVersion.MinVersion < packageUpgrader.Attribute.PackageMinimumVersion)
{
// Throw an exception, because the package update is not allowed and can't be done
throw new InvalidOperationException($"Upgrading project [{project.Name}] to use [{dependencyName}] from version [{dependencyVersion}] to [{packageUpgrader.Attribute.UpdatedVersionRange.MinVersion}] is not supported (supported only from version [{packageUpgrader.Attribute.PackageMinimumVersion}]");
}
log.Info($"Upgrading project [{project.Name}] to use [{dependencyName}] from version [{dependencyVersion}] to [{packageUpgrader.Attribute.UpdatedVersionRange.MinVersion}] will be required");
pendingPackageUpgrades.Add(new PendingPackageUpgrade(packageUpgrader, new PackageDependency(dependencyName, dependencyVersion), null));
}
}
if (pendingPackageUpgrades.Count > 0)
{
var upgradeAllowed = packageUpgradeAllowed != false ? PackageUpgradeRequestedAnswer.Upgrade : PackageUpgradeRequestedAnswer.DoNotUpgrade;
// Need upgrades, let's ask user confirmation
if (loadParameters.PackageUpgradeRequested != null && !packageUpgradeAllowed.HasValue)
{
upgradeAllowed = loadParameters.PackageUpgradeRequested(package, pendingPackageUpgrades);
if (upgradeAllowed == PackageUpgradeRequestedAnswer.UpgradeAll)
packageUpgradeAllowed = true;View on GitHub (pinned to 96fad776d2)