Supported Applications
The CLR probe covers any application built on .NET 4.x or .NET 6+. Known supported applications include:- Productivity software: Microsoft Excel, Word, PowerPoint, and the broader Office suite
- Developer tools: Visual Studio, Azure CLI tools
- GCS and simulation: Mission Planner
- Custom desktop apps: All WinForms applications, all WPF applications
- Any .NET application targeting .NET Framework 4.x or .NET 6 and later
How the CLR Probe Works
The CLR probe uses a three-stage injection and extraction pipeline.- Inject the CLR bootstrapper — NSP uses the Windows CLR Hosting API to load a native bootstrapper DLL into the target process. The bootstrapper initialises a managed C# runtime environment inside the target and opens an MMF channel for communication with the NSP daemon.
- Walk the CLR heap using managed reflection — Once the managed bridge is running inside the target process, it walks the CLR heap using reflection to discover managed object instances, read their field values, and resolve type metadata — all without requiring debug symbols or PDB files.
-
Transmit state over the MMF channel — Field values and type metadata are serialised and sent back to the NSP daemon through the MMF bridge, where they are normalised into SSF JSON and cached as a
SubstrateStateobject.
.NET Version Compatibility
The CLR probe requires .NET Framework 4.8 or later installed on the host machine. This runtime ships pre-installed on Windows 10 and Windows 11, so most machines are already compatible. You can verify by running
reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" /v Release in a terminal.For applications targeting .NET 6 or later (the modern unified runtime), the probe uses the same MMF bridge approach but targets the CoreCLR runtime instead of the .NET Framework CLR. Both code paths produce identical SubstrateState output.Prerequisites
- Windows 10 or Windows 11 x64 — the Windows CLR Hosting API is Windows-only
- .NET Framework 4.8 installed (pre-installed on Windows 10/11)
- NSP daemon running (see Quickstart)
What the Probe Reads
Once attached, the CLR probe exposes the following data in everySubstrateState:
Performance Characteristics
Reading CLR App State
Once the daemon detects a .NET application and the cold probe completes, attach to it from the Python SDK using the application’s name.app_name exactly as it appears in the GET /substrate/v1/apps response.
Verifying Probe Attachment
Call the apps endpoint after starting your .NET application to confirm the daemon has detected and attached to it:probe_status is "attaching", the cold probe is still running. Wait a few seconds and try again — CLR cold probes on large applications like Visual Studio can take up to 90 seconds on the first attach.