Skip to content

GraphNavigationContext

Namespace: Dotsider.Core.Analysis.Models

Assembly: Dotsider.Core.dll

Internal per-node metadata describing how a dependency graph node was resolved and the context under which it was reached. Used by the TUI for Enter-to-open navigation and framework filtering. Never serialized — this data must not leak through CLI, diagnostics, or MCP surfaces that publish graph topology.

public sealed record GraphNavigationContext : IEquatable<GraphNavigationContext>

ObjectGraphNavigationContext

GraphNavigationContext(ResolvedAssembly?, string?, string?, string?, string?, AssemblyProvenance, bool, string?, AppliedPolicy?, AssemblyRefInfo?)

Section titled “GraphNavigationContext(ResolvedAssembly?, string?, string?, string?, string?, AssemblyProvenance, bool, string?, AppliedPolicy?, AssemblyRefInfo?)”

Internal per-node metadata describing how a dependency graph node was resolved and the context under which it was reached. Used by the TUI for Enter-to-open navigation and framework filtering. Never serialized — this data must not leak through CLI, diagnostics, or MCP surfaces that publish graph topology.

Parameters:

  • Resolved (ResolvedAssembly): The resolved assembly location, or null when the node is unresolved or the provenance is IdentityMismatch.
  • ReferencingFilePath (String): The file path of the analyzer that first caused this node to be visited.
  • ReferencingBundlePath (String): The bundle path associated with the referencing analyzer, when applicable.
  • ReferencingTargetFramework (String): The target framework of the referencing analyzer, used for shared-framework probing.
  • ReferencingPreferredRuntimePack (String): The preferred runtime pack of the referencing analyzer.
  • Provenance (AssemblyProvenance): Classification of how the node was located.
  • IsFrameworkAssembly (Boolean): Whether the node represents a .NET framework assembly, classified independently of its provenance so that framework assemblies shipped inside a self-contained publish or single-file bundle are still identified correctly.
  • CandidateProbePath (String): The file path of a simple-name match whose identity did not match the requested reference, populated only when Provenance is IdentityMismatch. For CodeBaseMissing this carries the configured codeBase href the CLR would have loaded but couldn’t find.
  • AppliedPolicy (AppliedPolicy): When the .NET Framework binder rewrote the requested identity (binding redirect, publisher policy, machine.config, or framework unification), records the requested → bound version transition and the policy layer that produced it. null for non-redirected resolutions and for all .NET Core / .NET 5+ resolutions.
  • LoadedIdentity (AssemblyRefInfo): The identity the binder actually loaded after applying policy. May differ from the requesting GraphNode’s identity when the node was keyed on the bound identity (so multiple distinct requested versions that redirect to the same loaded version collapse onto a single graph node). null when no bound identity exists (Unresolved, IdentityMismatch, CodeBaseMissing).
public GraphNavigationContext(ResolvedAssembly? Resolved, string? ReferencingFilePath, string? ReferencingBundlePath, string? ReferencingTargetFramework, string? ReferencingPreferredRuntimePack, AssemblyProvenance Provenance, bool IsFrameworkAssembly, string? CandidateProbePath, AppliedPolicy? AppliedPolicy = null, AssemblyRefInfo? LoadedIdentity = null)

When the .NET Framework binder rewrote the requested identity (binding redirect, publisher policy, machine.config, or framework unification), records the requested → bound version transition and the policy layer that produced it. null for non-redirected resolutions and for all .NET Core / .NET 5+ resolutions.

Returns: AppliedPolicy

public AppliedPolicy? AppliedPolicy { get; init; }

The file path of a simple-name match whose identity did not match the requested reference, populated only when Provenance is IdentityMismatch. For CodeBaseMissing this carries the configured codeBase href the CLR would have loaded but couldn’t find.

Returns: String

public string? CandidateProbePath { get; init; }

Whether the node represents a .NET framework assembly, classified independently of its provenance so that framework assemblies shipped inside a self-contained publish or single-file bundle are still identified correctly.

Returns: Boolean

public bool IsFrameworkAssembly { get; init; }

The identity the binder actually loaded after applying policy. May differ from the requesting GraphNode’s identity when the node was keyed on the bound identity (so multiple distinct requested versions that redirect to the same loaded version collapse onto a single graph node). null when no bound identity exists (Unresolved, IdentityMismatch, CodeBaseMissing).

Returns: AssemblyRefInfo

public AssemblyRefInfo? LoadedIdentity { get; init; }

Classification of how the node was located.

Returns: AssemblyProvenance

public AssemblyProvenance Provenance { get; init; }

The bundle path associated with the referencing analyzer, when applicable.

Returns: String

public string? ReferencingBundlePath { get; init; }

The file path of the analyzer that first caused this node to be visited.

Returns: String

public string? ReferencingFilePath { get; init; }

The preferred runtime pack of the referencing analyzer.

Returns: String

public string? ReferencingPreferredRuntimePack { get; init; }

The target framework of the referencing analyzer, used for shared-framework probing.

Returns: String

public string? ReferencingTargetFramework { get; init; }

The resolved assembly location, or null when the node is unresolved or the provenance is IdentityMismatch.

Returns: ResolvedAssembly

public ResolvedAssembly? Resolved { get; init; }