microsoft/aspire · error · InvalidOperationException

Integration package probe manifest

Error message

Integration package probe manifest '{normalizedManifestPath}' does not exist.

What it means

IntegrationPackageProbeManifest.Load validates that the probe manifest JSON file exists on disk before parsing it. If File.Exists fails for the normalized path, it throws InvalidOperationException naming the exact path it looked for. The manifest describes managed assemblies and native libraries to probe for an integration package.

Solutions

  1. Check the path in the error message and create/restore the manifest file at that location.
  2. Regenerate the manifest by rebuilding/repacking the integration package (the probe manifest is produced during build).
  3. If using a relative path, resolve it against the expected base directory (e.g. AppContext.BaseDirectory) instead of the process working directory.
  4. Verify the package version/layout: an upgraded package may have moved or renamed the manifest.

Example fix

// before
var manifest = IntegrationPackageProbeManifest.Load("probe-manifest.json");

// after
var path = Path.Combine(AppContext.BaseDirectory, "probe-manifest.json");
if (!File.Exists(path)) throw new FileNotFoundException("Probe manifest missing", path);
var manifest = IntegrationPackageProbeManifest.Load(path);
Defensive patterns

Strategy: validation

Validate before calling

var path = Path.GetFullPath(manifestPath);
if (!File.Exists(path))
    throw new FileNotFoundException($"Probe manifest not found: {path}", path);

Try / catch

try { var m = IntegrationPackageProbeManifest.Load(manifestPath); }
catch (InvalidOperationException ex) when (ex.Message.Contains("does not exist"))
{ logger.LogError(ex, "Probe manifest missing"); throw; }

Prevention

When it happens

Trigger: Calling IntegrationPackageProbeManifest.Load(manifestPath) with a path to a JSON file that does not exist on disk at that exact normalized absolute path.

Common situations: Typo in the manifest file name; the build/pack step that copies the manifest did not run or output it elsewhere; running from a different working directory with a relative path; the file was deleted or the package layout changed between versions.

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/70a7419a10517a6f. Report an issue: GitHub.

Appendix: source

Thrown at src/Shared/IntegrationPackageProbeManifest.cs:114

            return nameComparison != 0
                ? nameComparison
                : StringComparer.Ordinal.Compare(left.Path, right.Path);
        });

        return new IntegrationPackageProbeManifest(managedAssemblyList, nativeLibraryList);
    }

    public static IntegrationPackageProbeManifest Load(string? manifestPath)
    {
        if (string.IsNullOrWhiteSpace(manifestPath))
        {
            return Empty;
        }

        var normalizedManifestPath = NormalizeManifestPath(manifestPath);
        if (!File.Exists(normalizedManifestPath))
        {
            throw new InvalidOperationException($"Integration package probe manifest '{normalizedManifestPath}' does not exist.");
        }

        using var stream = File.OpenRead(normalizedManifestPath);
        using var document = JsonDocument.Parse(stream);
        var managedAssemblies = ReadManagedAssemblies(document.RootElement);
        var nativeLibraries = ReadNativeLibraries(document.RootElement);

        return Create(managedAssemblies, nativeLibraries);
    }

    public static Task WriteAsync(
        string path,
        IntegrationPackageProbeManifest manifest,
        CancellationToken cancellationToken = default)
    {
        ArgumentException.ThrowIfNullOrEmpty(path);
        ArgumentNullException.ThrowIfNull(manifest);

View on GitHub (pinned to 25830f84bd)