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.
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
Open a folder containing your solution.
Run Easy .NET: Run Projects… from the Command Palette (or click 🚀 .NET Run in the status bar).
Tick the projects to run, then pick the debugger target.
Watch the magic: terminals spawn, the debugger attaches, the browser opens.
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