Skip to main content
When NSP attaches to a .NET application, you access it through the same Session interface you use for any other runtime — get_str, get_int, get_bool, and execute() all work identically. For cases where you need to read a specific .NET field or invoke a managed method directly, session.clr provides a CLRSessionProxy with runtime-specific helpers.

Detecting CLR apps

Before calling CLR-specific methods, confirm that the attached app is a CLR process. Check the runtime field on any AppSummary from list_apps().

Attaching to a CLR app

Attaching to a .NET app works exactly like attaching to any other app. Use the display name.

Reading state with standard accessors

The standard dot-notation accessors work the same way for CLR apps as they do for V8 or JVM apps. NSP normalizes .NET field values into the same flat SSF key-value map.
Use keys_with_prefix to see everything available under a namespace:

Reading fields directly with session.clr

session.clr exposes read_field() and read_fields() for reading .NET field values by fully-qualified type name. Use these when you need a value that the standard probe doesn’t surface, or when you want lower-latency access to a specific field.

Invoking managed methods

Use session.clr.invoke() to call a .NET method on the target process. Python values are automatically coerced to the correct .NET types based on the method’s parameter signature.
The raw_return field of an ActionResponse carries the method’s return value when you go through session.execute() for an action that maps to a managed method invocation. Check it to confirm what the CLR bridge returned.

Type coercion reference

Cold probe timing

The first time NSP attaches to a CLR process, the initial probe can take 10 to 90 seconds. During this time, probe_status is "attaching" or "cold_probe" and the confidence score is low.
Call await session.refresh(fresh_probe=True) after attaching to a CLR app to confirm the first state snapshot is ready before reading fields. Once the probe is active, CLR apps operate at the same confidence range as JVM apps: 0.93–0.97.

Complete example: Mission Planner telemetry monitor

mission_planner.py