{"record":{"id":"724fcb4f345767a8","repo":"stride3d/stride","slug":"expecting-a-package-that-is-already-registered-in-this","errorCode":null,"errorMessage":"Expecting a package that is already registered in this session","messagePattern":"Expecting a package that is already registered in this session","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"sources/assets/Stride.Core.Assets/PackageSession.cs","lineNumber":633,"sourceCode":"\n    /// <summary>\n    /// Gets or sets the selected current package.\n    /// </summary>\n    /// <value>The selected current package.</value>\n    /// <exception cref=\"System.InvalidOperationException\">Expecting a package that is already registered in this session</exception>\n    public SolutionProject CurrentProject\n    {\n        get\n        {\n            return currentProject;\n        }\n        set\n        {\n            if (value is not null)\n            {\n                if (!Projects.Contains(value))\n                {\n                    throw new InvalidOperationException(\"Expecting a package that is already registered in this session\");\n                }\n            }\n            currentProject = value;\n        }\n    }\n\n    /// <summary>\n    /// Gets the packages referenced by the current package.\n    /// </summary>\n    /// <returns>IEnumerable&lt;Package&gt;.</returns>\n    public IEnumerable<Package> GetPackagesFromCurrent()\n    {\n        if (CurrentProject.Package is null)\n        {\n            yield return CurrentProject.Package;\n        }\n\n        foreach (var dependency in CurrentProject.FlattenedDependencies)","sourceCodeStart":615,"sourceCodeEnd":651,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/assets/Stride.Core.Assets/PackageSession.cs#L615-L651","documentation":"PackageSession.CurrentProject's setter validates that the assigned package is one of the session's registered Projects. Assigning a Package instance loaded in (or belonging to) another session, or not loaded at all, throws InvalidOperationException because the session cannot track a project it doesn't contain.","triggerScenarios":"Setting session.CurrentProject = somePackage where somePackage is not present in session.Projects (package from another session, newly created package not added, or unloaded package).","commonSituations":"Holding a package reference across session reloads, loading two sessions and mixing their packages, creating a Package in memory without session.AddProject/Packages.Add.","solutions":["Add the package to the session first (session.Projects.Add / the appropriate Add* API) before assigning CurrentProject","Re-acquire the package from the current session instead of a stale reference","Only assign packages returned by this session's load/Add APIs"],"exampleFix":"// before\nvar package = Package.Load(path);\nsession.CurrentProject = package; // throws\n// after\nvar container = session.AddExistingProject(path, logger);\nsession.CurrentProject = (Package)container.Package;","handlingStrategy":"validation","validationCode":"if (package != null && !session.Projects.Contains(package))\n    throw new InvalidOperationException(\"Add the package to this session before assigning CurrentProject\");","typeGuard":"bool IsRegisteredProject(PackageSession s, Package p) => p != null && s.Projects.Contains(p);","tryCatchPattern":"try { session.CurrentProject = package; }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"already registered\"))\n{ logger.Error(ex, \"Package does not belong to this session\"); }","preventionTips":["Only assign packages obtained from the same session","Re-acquire package references after reloads","Add newly created packages to the session first"],"tags":["state","session","packages"],"backgroundTag":"invalid-state-transition","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"}