{"record":{"id":"57830daf701175ff","repo":"microsoft/aspire","slug":"integration-package-probe-manifest-path-normalizedpath-does","errorCode":null,"errorMessage":"Integration package probe manifest path '{normalizedPath}' does not exist.","messagePattern":"Integration package probe manifest path '(.+?)' does not exist\\.","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/Shared/IntegrationPackageProbeManifest.cs","lineNumber":343,"sourceCode":"    {\n        return $\"{culture ?? \"<neutral>\"}|{assemblyName}\";\n    }\n\n    private static int GetNativePathPriority(string path)\n    {\n        var normalizedPath = path.Replace('\\\\', '/');\n        var ridMarker = $\"/runtimes/{RuntimeInformation.RuntimeIdentifier}/\";\n        return normalizedPath.Contains(ridMarker, StringComparison.OrdinalIgnoreCase) ? 0 : 1;\n    }\n\n    private static string NormalizeAndValidatePath(string? path, string propertyName)\n    {\n        var normalizedPath = NormalizePath(\n            NormalizeRequiredValue(path, propertyName),\n            $\"Integration package probe manifest entry path '{propertyName}' is invalid.\");\n        if (!File.Exists(normalizedPath))\n        {\n            throw new InvalidOperationException($\"Integration package probe manifest path '{normalizedPath}' does not exist.\");\n        }\n\n        return normalizedPath;\n    }\n\n    private static string NormalizeManifestPath(string manifestPath)\n    {\n        return NormalizePath(manifestPath, \"Integration package probe manifest path is invalid.\");\n    }\n\n    private static string NormalizePath(string path, string invalidPathMessage)\n    {\n        try\n        {\n            return Path.GetFullPath(path);\n        }\n        catch (Exception ex) when (ex is ArgumentException or NotSupportedException or PathTooLongException)\n        {","sourceCodeStart":325,"sourceCodeEnd":361,"githubUrl":"https://github.com/microsoft/aspire/blob/25830f84bd145686607ad00c057b3f84e2e51d43/src/Shared/IntegrationPackageProbeManifest.cs#L325-L361","documentation":"After parsing the probe manifest JSON, NormalizeAndValidatePath checks that each entry path referenced inside the manifest (a managed assembly or native library) actually exists on disk. If not, it throws InvalidOperationException with the normalized path. Unlike error 2011 this is about files the manifest points to, not the manifest itself.","triggerScenarios":"Loading a probe manifest whose managedAssemblies/nativeLibraries entries contain a 'path' property pointing to a file that does not exist relative to the manifest location.","commonSituations":"The manifest was hand-edited or generated on a different machine/OS with different paths; referenced DLLs/native libs were not copied to the output; case-sensitivity differences on Linux; stale manifest after a package upgrade.","solutions":["Open the manifest JSON and fix the entry path to point at an existing file (paths are resolved relative to the manifest's directory).","Copy the referenced assembly/native library into the expected output location and rebuild.","Regenerate the manifest from the package contents rather than editing it manually.","Check OS case-sensitivity: a path that works on Windows may not resolve on Linux."],"exampleFix":"// before (manifest entry)\n{ \"name\": \"MyLib\", \"path\": \"runtimes/linux-x64/native/libmy.so\" } // file missing\n\n// after: ensure libmy.so exists at <manifestDir>/runtimes/linux-x64/native/libmy.so\n// or correct the path:\n{ \"name\": \"MyLib\", \"path\": \"native/libmy.so\" }","handlingStrategy":"validation","validationCode":"foreach (var entry in manifestDoc.RootElement.GetProperty(\"managedAssemblies\").EnumerateArray())\n{\n    var rel = entry.GetProperty(\"path\").GetString();\n    var full = Path.Combine(manifestDir, rel!);\n    if (!File.Exists(full)) throw new FileNotFoundException($\"Manifest entry path missing: {full}\");\n}","typeGuard":null,"tryCatchPattern":"try { LoadManifestWithEntries(path); }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"manifest path\"))\n{ logger.LogError(ex, \"A file referenced by the probe manifest is missing\"); throw; }","preventionTips":["Always generate manifests from the actual package output rather than editing by hand.","Validate all entry paths exist as part of build/pack verification.","Beware Linux case-sensitivity when paths were authored on Windows."],"tags":["file","manifest","path","not-found"],"backgroundTag":"file-not-found","analyzedSha":"25830f84bd145686607ad00c057b3f84e2e51d43","analyzedAt":"2026-09-16T11:10:06.193Z","contentChangedAt":"2026-09-16T11:10:06.193Z","schemaVersion":2},"datasetVersion":"2026-09-22T11:17:16.035Z"}