Dotsider.Core.Analysis
Classes
Section titled “Classes”Detects .NET apphost executables and locates their companion managed assemblies.
public static class ApphostDetectorCore analyzer that reads a .NET assembly and extracts PE, metadata, IL, and string information. Uses PEReader and MetadataReader from the BCL.
public sealed class AssemblyAnalyzer : IDisposableCompares two assemblies and produces a detailed diff result. Uses dictionary-based O(n) matching by name.
public static class AssemblyDifferFormats an assembly’s full identity into a stable opaque string used as a graph node identifier and as a key for grouping TypeRefInfo entries by the full identity of their resolution scope.
public static class AssemblyIdentityFormatShared factory for opening assembly files. Handles apphosts (companion .dll redirect), single-file bundles (entry assembly extraction), and direct .dll/.exe loading. Returns an AssemblyOpenResult that preserves the distinction so callers can decide how to present each case (e.g. showing an apphost dialog).
public static class AssemblyLoaderBuilds the full transitive assembly dependency graph rooted at an analyzed assembly. Performs a breadth-first walk through each assembly’s AssemblyRefs, resolving children by full identity, deduping on Id, preserving edges for cycles and diamonds, and classifying unresolvable and identity-mismatched references as non-expanding leaf nodes. For .NET Framework roots the resolution routes through NetFxBinder so that nodes are keyed on the bound identity (post-redirect), collapsing two distinct requested versions onto a single graph node when policy redirects them to the same loaded version. Produces a DependencyGraphResult containing the public topology plus internal navigation metadata consumed only by the TUI.
public static class DependencyGraphBuilderDiscovers system .NET installations and resolves shared framework assembly paths.
public static class DotNetRuntimeLocatorDecodes IL (Intermediate Language) method bodies into human-readable instruction sequences.
public sealed class IlDisassemblerResolves a metadata token from an IL instruction to an IlNavigationTarget describing what the token points to and where it lives.
public static class IlNavigationResolverResolves reference assemblies (e.g., System.Runtime, mscorlib) to their implementation assemblies (e.g., System.Private.CoreLib) by probing for type forwarding.
public static class ImplementationAssemblyResolverCLR-accurate .NET Framework assembly binder for both CLR generations. Consumes a NetFxBindingContext and produces a NetFxBindResult matching what the actual .NET Framework binder would do at runtime: framework unification + machine.config + publisher policy + app config (in CLR walk order, with later layers overriding earlier ones), then locate against the GAC (architecture-prioritized, strong-named only), then the framework runtime directory, then configured codeBase href (fail-fast), then the application base + private paths with culture-aware probing.
public static class NetFxBinderResolves assembly references by consulting the referencing assembly’s .deps.json
file to locate its NuGet dependencies in the NuGet global packages folder. This is the
probe step that makes library projects work — dotnet build does not copy NuGet
package assemblies next to a library’s bin output, but the .deps.json
manifest records the exact resolved package version and runtime asset path, matching
what the .NET host uses at runtime.
public static class NuGetDepsJsonResolverOpens and analyzes a NuGet package (.nupkg) file. Reads package metadata from .nuspec and lists all contents.
public sealed class NuGetPackageAnalyzer : IDisposableManages launching a .NET assembly as a child process and collecting runtime events via EventPipe diagnostics (PID-based connect with retry).
public sealed class RuntimeTracer : IDisposableReads .NET single-file bundles — detects the bundle signature, parses the manifest header, and extracts individual entries.
public static class SingleFileBundleReaderComputes IL code size per method and builds a hierarchical size tree for treemap visualization.
public static class SizeAnalyzerExtracts strings from .NET assemblies across three sources: the #US heap (user string literals), the #Strings heap (metadata identifiers), and raw printable character sequences from the binary.
public sealed class StringExtractor