{"record":{"id":"2dd62623330b7cc1","repo":"stride3d/stride","slug":"metadata-loaded-from-nuspec-cannot-have-more-than-one-group","errorCode":null,"errorMessage":"Metadata loaded from nuspec cannot have more than one group of dependency","messagePattern":"Metadata loaded from nuspec cannot have more than one group of dependency","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"sources/assets/Stride.Core.Assets/PackageStore.cs","lineNumber":178,"sourceCode":"            IconUrl = metadata.IconUrl,\n            LicenseUrl = metadata.LicenseUrl,\n            ProjectUrl = metadata.ProjectUrl,\n            RequireLicenseAcceptance = metadata.RequireLicenseAcceptance,\n            Description = metadata.Description,\n            Summary = metadata.Summary,\n            Tags = metadata.Tags,\n            Listed = metadata.Listed,\n            Published = metadata.Published,\n            ReportAbuseUrl = metadata.ReportAbuseUrl,\n            DownloadCount = metadata.DownloadCount\n        };\n\n        meta.Authors.AddRange(metadata.Authors);\n        meta.Owners.AddRange(metadata.Owners);\n\n        if (metadata.DependencySetsCount > 1)\n        {\n            throw new InvalidOperationException(\"Metadata loaded from nuspec cannot have more than one group of dependency\");\n        }\n\n        return meta;\n    }\n\n    public static void ToNugetManifest(PackageMeta meta, ManifestMetadata manifestMeta)\n    {\n        manifestMeta.Id = meta.Name;\n        manifestMeta.Version = meta.Version.ToString();\n        manifestMeta.Title = meta.Title.SafeTrim();\n        manifestMeta.Authors = meta.Authors;\n        manifestMeta.Owners = meta.Owners;\n        manifestMeta.Tags = string.IsNullOrEmpty(meta.Tags) ? null : meta.Tags.SafeTrim();\n        manifestMeta.LicenseUrl = ConvertUrlToStringSafe(meta.LicenseUrl);\n        manifestMeta.ProjectUrl = ConvertUrlToStringSafe(meta.ProjectUrl);\n        manifestMeta.IconUrl = ConvertUrlToStringSafe(meta.IconUrl);\n        manifestMeta.RequireLicenseAcceptance = meta.RequireLicenseAcceptance;\n        manifestMeta.DevelopmentDependency = false;","sourceCodeStart":160,"sourceCodeEnd":196,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/assets/Stride.Core.Assets/PackageStore.cs#L160-L196","documentation":"Thrown by PackageStore.PackageMetaFromNugetPackage when a parsed nuspec contains more than one dependency group. The converter maps nuspec metadata to a Stride PackageMeta which only supports a single dependency group, so anything else is rejected as unrepresentable.","triggerScenarios":"Building package metadata from a .nupkg/nuspec whose metadata contains 2+ <group> elements under <dependencies> (e.g. multi-targeting packages with per-TFM dependency groups).","commonSituations":"Consuming a third-party NuGet package built for multiple target frameworks; a hand-authored nuspec with several dependency groups; importing packages from feeds with multi-TFM layouts.","solutions":["Use a package variant that has a single dependency group (single-TFM nuspec).","Pre-process the nuspec to merge dependency groups into one before conversion.","Pick the dependency group matching your target framework and construct a nuspec with only that group.","Rebuild the dependency package with a single-group nuspec."],"exampleFix":"<!-- before: rejected nuspec -->\n<dependencies>\n  <group targetFramework=\"net461\">...</group>\n  <group targetFramework=\"net6.0\">...</group>\n</dependencies>\n<!-- after: single group only -->\n<dependencies>\n  <group targetFramework=\"net6.0\">...</group>\n</dependencies>","handlingStrategy":"validation","validationCode":"if (nuspecMetadata.DependencySetsCount > 1)\n{\n    // select/merge the group for your TFM before conversion\n    metadata = SelectSingleDependencyGroup(nuspecMetadata, targetFramework);\n}\nvar meta = PackageStore.PackageMetaFromNugetPackage(...);","typeGuard":null,"tryCatchPattern":"try { meta = PackageStore.PackageMetaFromNugetPackage(...); }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"more than one group of dependency\"))\n{\n    // pre-process the nuspec to a single dependency group and retry\n}","preventionTips":["Prefer single-TFM packages when feeding this API.","Pre-process multi-group nuspecs by merging or selecting the target-framework group.","Validate nuspecs during package ingestion pipelines."],"tags":["nuget","nuspec","packages","validation"],"backgroundTag":"schema-validation-failed","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"}