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 theruntime 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.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
Usesession.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.
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.
Complete example: Mission Planner telemetry monitor
mission_planner.py
