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
- Check the path in the error message and create/restore the manifest file at that location.
- Regenerate the manifest by rebuilding/repacking the integration package (the probe manifest is produced during build).
- If using a relative path, resolve it against the expected base directory (e.g. AppContext.BaseDirectory) instead of the process working directory.
- 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
- Ensure the build copies the manifest to the output directory (check csproj Content/None items).
- Resolve relative manifest paths against AppContext.BaseDirectory, not the current working directory.
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
- Integration package probe manifest path
- string.Format(LaunchProfileStrings.ProjectFileNotFoundExcept…
- Assets file not found
- Browser profile ' ' was not found under ' '. Specify the…
- Cannot set nested manifest field
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)