microsoft/aspire · error · InvalidOperationException

Integration package probe manifest path

Error message

Integration package probe manifest path '{normalizedPath}' does not exist.

What it means

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.

Solutions

  1. Open the manifest JSON and fix the entry path to point at an existing file (paths are resolved relative to the manifest's directory).
  2. Copy the referenced assembly/native library into the expected output location and rebuild.
  3. Regenerate the manifest from the package contents rather than editing it manually.
  4. Check OS case-sensitivity: a path that works on Windows may not resolve on Linux.

Example fix

// before (manifest entry)
{ "name": "MyLib", "path": "runtimes/linux-x64/native/libmy.so" } // file missing

// after: ensure libmy.so exists at <manifestDir>/runtimes/linux-x64/native/libmy.so
// or correct the path:
{ "name": "MyLib", "path": "native/libmy.so" }
Defensive patterns

Strategy: validation

Validate before calling

foreach (var entry in manifestDoc.RootElement.GetProperty("managedAssemblies").EnumerateArray())
{
    var rel = entry.GetProperty("path").GetString();
    var full = Path.Combine(manifestDir, rel!);
    if (!File.Exists(full)) throw new FileNotFoundException($"Manifest entry path missing: {full}");
}

Try / catch

try { LoadManifestWithEntries(path); }
catch (InvalidOperationException ex) when (ex.Message.Contains("manifest path"))
{ logger.LogError(ex, "A file referenced by the probe manifest is missing"); throw; }

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Understand the failure class

Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.

Related errors


AI-assisted analysis of microsoft/aspire@25830f84bd (2026-09-16). Data as JSON: /api/errors/57830daf701175ff. Report an issue: GitHub.

Appendix: source

Thrown at src/Shared/IntegrationPackageProbeManifest.cs:343

    {
        return $"{culture ?? "<neutral>"}|{assemblyName}";
    }

    private static int GetNativePathPriority(string path)
    {
        var normalizedPath = path.Replace('\\', '/');
        var ridMarker = $"/runtimes/{RuntimeInformation.RuntimeIdentifier}/";
        return normalizedPath.Contains(ridMarker, StringComparison.OrdinalIgnoreCase) ? 0 : 1;
    }

    private static string NormalizeAndValidatePath(string? path, string propertyName)
    {
        var normalizedPath = NormalizePath(
            NormalizeRequiredValue(path, propertyName),
            $"Integration package probe manifest entry path '{propertyName}' is invalid.");
        if (!File.Exists(normalizedPath))
        {
            throw new InvalidOperationException($"Integration package probe manifest path '{normalizedPath}' does not exist.");
        }

        return normalizedPath;
    }

    private static string NormalizeManifestPath(string manifestPath)
    {
        return NormalizePath(manifestPath, "Integration package probe manifest path is invalid.");
    }

    private static string NormalizePath(string path, string invalidPathMessage)
    {
        try
        {
            return Path.GetFullPath(path);
        }
        catch (Exception ex) when (ex is ArgumentException or NotSupportedException or PathTooLongException)
        {

View on GitHub (pinned to 25830f84bd)