{"record":{"id":"9234d79d7a90a8fe","repo":"stride3d/stride","slug":"bundle-0-could-not-be-resolved","errorCode":null,"errorMessage":"Bundle {0} could not be resolved","messagePattern":"Bundle (.+?) could not be resolved","errorType":"exception","errorClass":"FileNotFoundException","httpStatus":null,"severity":"error","filePath":"sources/core/Stride.Core.Serialization/Storage/BundleOdbBackend.cs","lineNumber":126,"sourceCode":"                bundleUrl = await bundleResolvedHandler(bundleName);\n                if (bundleUrl != null)\n                    break;\n            }\n        }\n\n        // Check if it has been properly resolved\n        if (bundleUrl == null)\n        {\n            // Remove from resolved bundles\n            lock (resolvedBundles)\n            {\n                resolvedBundles.Remove(bundleName);\n            }\n\n            if (!throwExceptionIfNotFound)\n                return null;\n\n            throw new FileNotFoundException(string.Format(\"Bundle {0} could not be resolved\", bundleName));\n        }\n\n        // Register resolved package\n        lock (resolvedBundles)\n        {\n            resolvedBundles[bundleName] = bundleUrl;\n        }\n\n        return bundleUrl;\n    }\n\n    /// <summary>\n    /// Loads the specified bundle.\n    /// </summary>\n    /// <param name=\"bundleName\">Name of the bundle.</param>\n    /// <param name=\"objectDatabaseContentIndexMap\">The object database asset index map, where newly loaded assets will be merged (ignored if null).</param>\n    /// <returns>Task that will complete when bundle is loaded.</returns>\n    public async Task LoadBundle(string bundleName, ObjectDatabaseContentIndexMap objectDatabaseContentIndexMap)","sourceCodeStart":108,"sourceCodeEnd":144,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/core/Stride.Core.Serialization/Storage/BundleOdbBackend.cs#L108-L144","documentation":"After probing the virtual file system for the bundle file and its dependencies, ResolveBundle throws FileNotFoundException when the bundle could not be located/resolved and throwExceptionIfNotFound was true. This means the named bundle's URL could not be determined from the mounted providers or its dependency chain.","triggerScenarios":"vfsUrl(bundleName, throwExceptionIfNotFound: true) where the bundle file is not present in any mounted storage, the bundle name is misspelled, or a parent bundle references a missing dependency.","commonSituations":"Deploying data without copying the .bundle files; bundles produced in a newer/older build than the manifest expects; case-sensitivity mismatches on Linux; content index referencing bundles deleted at runtime.","solutions":["Verify the bundle file exists under the mounted virtual file system path and the name matches exactly (case included).","Re-run the Stride asset compiler/packager so the bundle and its dependency manifest are produced together.","Call with throwExceptionIfNotFound: false if a missing bundle is an acceptable, expected condition."],"exampleFix":"// before\nvar url = backend.vfsUrl(\"misname.bundle\", throwExceptionIfNotFound: true);\n// after\nif (!virtualFileProvider.FileExists(\"bundles/misname.bundle\"))\n    throw new FileNotFoundException(\"Bundle missing from deployment\", \"misname.bundle\");","handlingStrategy":"validation","validationCode":"if (!virtualFileProvider.FileExists($\"bundles/{bundleName}\"))\n    throw new FileNotFoundException($\"Bundle {bundleName} missing from deployment\");","typeGuard":null,"tryCatchPattern":"try\n{\n    var url = backend.vfsUrl(bundleName, throwExceptionIfNotFound: true);\n}\ncatch (FileNotFoundException)\n{\n    // prompt for data repair / re-download of content\n    RepairDeployment();\n}","preventionTips":["Verify every bundle listed in the content index exists on disk at startup.","Deploy data and manifest together from the same build output.","Watch for case-sensitivity differences when targeting Linux."],"tags":["bundles","file-not-found","deployment"],"backgroundTag":"file-not-found","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"}