Skip to content
| Marketplace
Sign in
Visual Studio Code>Debuggers>Easy .NET OrchestratorNew to Visual Studio Code? Get it now.
Easy .NET Orchestrator

Easy .NET Orchestrator

Volkan Şatır

|
1 install
| (0) | Free
Zero-configuration multi-project .NET runner: in-memory launch configs, dynamic debugger attach via TCP/PID detection, and automatic re-attach on hot reload.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Easy .NET Orchestrator

Zero-configuration VS Code / VSCodium extension for running and debugging multi-project .NET solutions. No launch.json, no tasks.json — everything is created in-memory at runtime.

Features

  • Zero physical JSON files — debug configurations are built programmatically and passed straight to vscode.debug.startDebugging. Your workspace stays clean.
  • Solution-wide discovery — scans the workspace for .csproj files, parses the XML to detect project type (Web / Console-Worker / Library) and target framework.
  • Interactive orchestration — a Quick Pick checklist lets you select which projects to run and exactly one project to attach the debugger to. Each project runs dotnet watch run --no-launch-profile in its own terminal.
  • Bulletproof hybrid status detection — no log parsing:
    • Web (Kestrel): the port from Properties/launchSettings.json is injected via ASPNETCORE_URLS and polled with raw TCP sockets; once live, the listening PID is resolved from the OS and the coreclr debugger attaches, then the browser opens.
    • Console / Worker: the OS process tree under the project terminal is queried to find the freshly spawned app process (never the watcher) and the debugger attaches to that PID.
  • Smart re-attach — when dotnet watch restarts the app after a code change, the extension detects the PID/port going down, waits for the new process, and re-attaches automatically. Breakpoints keep working.
  • Remembers your selection — the last confirmed project set and debugger target are stored per workspace and pre-selected the next time you run.
  • Startup-crash warning — if a web app process dies before its port ever opens (e.g. an unreachable broker/database throws during startup), a warning notification points you at the terminal instead of waiting silently.

Requirements

  • .NET SDK with dotnet watch (SDK 6.0+; tested with net8.0/net9.0)
  • C# extension (ms-dotnettools.csharp) — provides the coreclr debugger (installed automatically as a dependency)
  • Linux, macOS, or Windows. On Linux, PID-for-port resolution uses ss (iproute2) with an lsof fallback.

Usage

  1. Open a folder containing your solution.
  2. Run Easy .NET: Run Projects… from the Command Palette (or click 🚀 .NET Run in the status bar).
  3. Tick the projects to run, then pick the debugger target.
  4. Watch the magic: terminals spawn, the debugger attaches, the browser opens.
  5. Easy .NET: Stop All tears everything down. Closing a project's terminal stops just that project.

Easy .NET: Show Orchestrator Logs opens the output channel with the full event timeline.

Development

npm install
npm run compile   # or: npm run watch

Press F5 in VS Code to launch an Extension Development Host.

Architecture

Module Responsibility
projectScanner.ts .csproj discovery + XML parsing, launchSettings.json port extraction
ui.ts Quick Pick multi-select + debug-target picker
netUtils.ts TCP port polling, PID-for-port lookup, PID liveness
processUtils.ts Cross-platform process-tree snapshots and app-process matching
debugManager.ts In-memory coreclr attach sessions, stale-session cleanup
orchestrator.ts Terminal lifecycle, per-project monitor loops, smart re-attach
extension.ts Commands, status bar, activation
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft