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
- 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.
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
- 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.
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
- Integration package probe manifest
- Could not get directory name of output path
- Integration package probe manifest path is invalid.
- string.Format(LaunchProfileStrings.ProjectFileNotFoundExcept…
- An absolute path is required
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)