{"record":{"id":"b0ddc018b47c1a88","repo":"stride3d/stride","slug":"upgrading-project-project-name-to-use-dependencyname-from","errorCode":null,"errorMessage":"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}]","messagePattern":"Upgrading project \\[(.+?)\\] to use \\[(.+?)\\] from version \\[(.+?)\\] to \\[(.+?)\\] is not supported \\(supported only from version \\[(.+?)\\]","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"critical","filePath":"sources/assets/Stride.Core.Assets/PackageSession.Dependencies.cs","lineNumber":267,"sourceCode":"\n                var packageUpgrader = AssetRegistry.GetPackageUpgrader(dependencyName);\n                if (packageUpgrader != null)\n                {\n                    // Check if this upgrader has already been added due to another package reference\n                    if (pendingPackageUpgrades.Any(pendingPackageUpgrade => pendingPackageUpgrade.PackageUpgrader == packageUpgrader))\n                        continue;\n\n                    // Check if upgrade is necessary\n                    if (dependencyVersion.MinVersion >= packageUpgrader.Attribute.UpdatedVersionRange.MinVersion)\n                    {\n                        continue;\n                    }\n\n                    // Check if upgrade is allowed\n                    if (dependencyVersion.MinVersion < packageUpgrader.Attribute.PackageMinimumVersion)\n                    {\n                        // Throw an exception, because the package update is not allowed and can't be done\n                        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}]\");\n                    }\n\n                    log.Info($\"Upgrading project [{project.Name}] to use [{dependencyName}] from version [{dependencyVersion}] to [{packageUpgrader.Attribute.UpdatedVersionRange.MinVersion}] will be required\");\n\n                    pendingPackageUpgrades.Add(new PendingPackageUpgrade(packageUpgrader, new PackageDependency(dependencyName, dependencyVersion), null));\n                }\n            }\n\n            if (pendingPackageUpgrades.Count > 0)\n            {\n                var upgradeAllowed = packageUpgradeAllowed != false ? PackageUpgradeRequestedAnswer.Upgrade : PackageUpgradeRequestedAnswer.DoNotUpgrade;\n\n                // Need upgrades, let's ask user confirmation\n                if (loadParameters.PackageUpgradeRequested != null && !packageUpgradeAllowed.HasValue)\n                {\n                    upgradeAllowed = loadParameters.PackageUpgradeRequested(package, pendingPackageUpgrades);\n                    if (upgradeAllowed == PackageUpgradeRequestedAnswer.UpgradeAll)\n                        packageUpgradeAllowed = true;","sourceCodeStart":249,"sourceCodeEnd":285,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/assets/Stride.Core.Assets/PackageSession.Dependencies.cs#L249-L285","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"// before (project depends on version 3.0.0.0, upgrader supports >= 3.1.0.0)\n// session.Load(...); // throws\n// after: bump the dependency in the package file first\n<Dependency>Stride.Engine;3.1.0.0</Dependency> <!-- then load -->","handlingStrategy":"try-catch","validationCode":"// Compare your dependency's VersionRange.MinVersion against the upgrader's minimum before loading\nif (dependencyVersion.MinVersion < upgraderAttribute.PackageMinimumVersion)\n    logger.Warning(\"Project too old; upgrade through intermediate versions first\");","typeGuard":null,"tryCatchPattern":"try { session.Load(...); }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"is not supported\"))\n{ logger.Error(ex, \"Unsupported version upgrade path\"); }","preventionTips":["Keep projects on supported engine versions; upgrade each release","Don't skip multiple major versions when upgrading","Document PackageMinimumVersion of custom upgraders"],"tags":["versioning","migration","packages"],"backgroundTag":"incompatible-source-type","analyzedSha":"96fad776d210c221682aac1ccdf4c79dc046fc38","analyzedAt":"2026-09-14T02:59:31.279Z","contentChangedAt":"2026-09-14T02:59:31.279Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}