{"record":{"id":"610933aa50f1d6d8","repo":"stride3d/stride","slug":"the-name-of-a-package-reference-cannot-be-set","errorCode":null,"errorMessage":"The name of a package reference cannot be set","messagePattern":"The name of a package reference cannot be set","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"sources/editor/Stride.Core.Assets.Editor/ViewModel/PackageReferenceViewModel.cs","lineNumber":84,"sourceCode":"            }\n        }\n    }\n\n    public class DirectDependencyReferenceViewModel : PackageReferenceViewModel\n    {\n        private readonly DependencyRange dependency;\n\n        public DirectDependencyReferenceViewModel(DependencyRange dependency, PackageViewModel referencer, DependencyCategoryViewModel dependencies, bool canUndoRedoCreation)\n            : base(referencer, dependencies)\n        {\n            this.dependency = dependency;\n            InitialUndelete(canUndoRedoCreation);\n        }\n\n        public override string Name\n        {\n            get => dependency.Name;\n            set => throw new InvalidOperationException(\"The name of a package reference cannot be set\");\n        }\n\n        public override void AddReference()\n        {\n            if (!Referencer.Package.Container.DirectDependencies.Contains(dependency))\n            {\n                Referencer.Package.Container.DirectDependencies.Add(dependency);\n            }\n        }\n\n        public override void RemoveReference()\n        {\n            Referencer.Package.Container.DirectDependencies.Remove(dependency);\n        }\n    }\n}\n","sourceCodeStart":66,"sourceCodeEnd":101,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/editor/Stride.Core.Assets.Editor/ViewModel/PackageReferenceViewModel.cs#L66-L101","documentation":"DirectDependencyReferenceViewModel.Name wraps the underlying PackageDependency's name, which is the identity key used by the dependency collection. Renaming it would desynchronize the view model from the dependency graph, so the setter throws InvalidOperationException.","triggerScenarios":"Assigning Name on a DirectDependencyReferenceViewModel (or through a property grid / rename command bound to it).","commonSituations":"Generic rename UI or scripts applying Name changes across selected session items, including package references.","solutions":["Remove and re-add the dependency with the new name instead of renaming","Skip Name assignment for PackageReferenceViewModel-derived nodes","Add a type check before rename operations"],"exampleFix":"// before\npackageRef.Name = newName;\n// after\nif (packageRef is DirectDependencyReferenceViewModel dep) { /* remove & re-add dependency with newName */ }","handlingStrategy":"type-guard","validationCode":"if (item is DirectDependencyReferenceViewModel) throw new InvalidOperationException(\"Package reference names are read-only\");","typeGuard":"bool CanRename(SessionItemViewModel i) => i is not DirectDependencyReferenceViewModel;","tryCatchPattern":"try { item.Name = newName; } catch (InvalidOperationException) { /* remove & re-add dependency instead */ }","preventionTips":["Never rename package references directly","Skip reference nodes in rename commands","Re-add dependencies to rename them"],"tags":["viewmodel","package-reference","immutable"],"backgroundTag":"unsupported-operation","analyzedSha":"96fad776d210c221682aac1ccdf4c79dc046fc38","analyzedAt":"2026-09-14T02:59:31.279Z","contentChangedAt":"2026-09-14T02:59:31.279Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}