VSIX Extension Overview
Overview
The Navigation Session Inspector is a Visual Studio extension (.vsix) that brings the debugger's session recording, timeline replay, stack diffing, and runtime warnings into a native Visual Studio tool window.
It connects to a running MAUI debug session that has UseNavigationDebugger registered and lets you inspect the full navigation history without leaving Visual Studio.
Installation
- Download
Shaunebu.MAUI.Navigation.Vsix.vsix from the Releases page.
- Double-click the file or run it from the Developer Command Prompt.
- Follow the Visual Studio Extension Installer prompts.
- Restart Visual Studio.
- Open Visual Studio.
- Go to Extensions → Manage Extensions.
- Search for "Shaunebu Navigation Inspector".
- Click Download, then restart Visual Studio to complete installation.
The extension targets .NET Framework 4.8 (the VS extension host process). It is compatible with Visual Studio 2019 (16.x) and later.
After installation, open the Navigation Inspector from the Visual Studio menu:
View → Other Windows → Navigation Session Inspector
Or use the keyboard shortcut if you assigned one during install.
Architecture
Visual Studio Process (.NET Framework 4.8)
└── NavigationInspectorPackage (AsyncPackage)
├── OpenInspectorCommand (menu command handler)
├── NavigationInspectorToolWindow (tool window host)
│ └── WpfUiDispatcher (marshal calls to UI thread)
└── Shaunebu.MAUI.Navigation.Vsix.Desktop
├── DebuggerDashboardViewModel (from Debugger package)
├── TimelinePanelViewModel
├── WarningsPanelViewModel
└── StackPanelViewModel
The VSIX package (NavigationInspectorPackage) hosts the tool window and wires up the WPF UI. All navigation intelligence — replay, diffing, warnings — comes from the Shaunebu.MAUI.Navigation.Debugger and Shaunebu.MAUI.Navigation.Vsix.Desktop assemblies.
NavigationInspectorPackage
The package auto-loads on shell initialization via three [ProvideAutoLoad] registrations:
| Context |
GUID |
Trigger |
UICONTEXT_ShellInitialized |
E7B90C87-... |
VS shell fully loaded |
UICONTEXT_NoSolution |
ADFC4E64-... |
No solution open |
UICONTEXT_SolutionExists |
F1536EF8-... |
Solution loaded |
AllowsBackgroundLoading = true ensures the package does not block VS startup.
The NavigationInspectorToolWindow hosts:
| Panel |
Description |
| Live Events |
Real-time stream of navigation events during a debug session |
| Navigation Stack |
Current navigation and modal stack state |
| Timeline |
Frame-by-frame replay of a recorded or imported session |
| Warnings |
Runtime warnings from the warning engine |
Opening a Session File
To replay a session exported from a device or emulator:
- Export the session from your app:
await _exporter.ExportToFileAsync(session, path, DiagnosticsExportFormat.Json).
- Transfer the
.json file to your development machine.
- In the Navigation Inspector tool window, click Open Session.
- Select the
.json file.
- Use the step forward/backward controls to replay.
WpfUiDispatcher
All ViewModel property changes are dispatched to the VS UI thread via WpfUiDispatcher, which wraps JoinableTaskFactory.SwitchToMainThreadAsync. This ensures PropertyChanged events are always raised on the correct thread without blocking the background processing pipeline.