TL;DR — the daily driver is JetBrains Rider on Linux, not VS Code. Rider is the only tool that covers Visual Studio 2026 and ReSharper and dotPeek and a DataGrip-grade SQL client in one process[1][25][51] — Visual Studio 2026 itself is Windows-only with no port planned[3].
The three real costs: (1) no WinForms/WPF visual designers anywhere on Linux — WPF only runs on Windows, full stop[52][20]; (2) SSMS has no successor on Linux now that Azure Data Studio was retired on 28 Feb 2026 — Microsoft's answer is VS Code + MSSQL extension, and "keep SSMS on Windows" for SQL Server Agent[4][23]; (3) Rider is a paid subscription unless your work is genuinely non-commercial[2][73].
The good news: your database moves cleanly. LocalDB 17.0.4025.3 is SQL Server 2025 CU3 — the exact same build ships as a Linux package and container image[5], free under Developer edition[30], and on Linux the container has no VM tax[13].
Already native — nothing to research, just reinstall
Bun[8], DBeaver 26[9], DB Browser for SQLite[10], Beyond Compare 5 (your existing key works — all licences sold since 2016 are multiplatform[12], current build 5.2.4 has .deb and .rpm[11]), Docker (Engine natively, or Desktop if you want the GUI[13]), and the .NET SDK itself. Three items simply cease to exist as problems: the Visual C++ redistributables, the x86 .NET runtimes (Linux .NET packages are x64/Arm64[6]), and MSYS2 — whose entire purpose is emulating a POSIX environment on Windows[15].
The comparison table
| Windows app (installed) | Linux replacement | Parity | Migration notes |
|---|---|---|---|
| Visual Studio Community 2026 | Rider; VS Code + C# Dev Kit | ⚠ | Rider covers everything except visual designers, SSIS/SSRS/SSAS projects and .NET Framework-era tooling[20]. VS 2026 is Windows-only[3]. C# Dev Kit is free for ≤5-person commercial teams but barred for Enterprises (>250 users or >$1M revenue)[16][17] |
| ReSharper in VS 2026 | Rider (same engine); ReSharper for VS Code | ✓ | New in 2026: ReSharper ships as a VS Code / Cursor / Antigravity extension with C#, XAML, Razor, Blazor analysis, solution-wide refactorings, and (since 2026.2) a real debugger[19][18] |
| JetBrains ETW Host Service | Nothing to install — EventPipe + dotnet-trace | ✓ | ETW is a Windows-only high-privilege pipe; EventPipe is its cross-platform replacement and in .NET 10 can emit Linux user_events for unified managed+kernel traces (root, kernel 6.4+)[21][22] ⭐ 1.3k. dotMemory inside Rider on Linux is functionally identical to standalone[72] |
| SSMS 20.2.1 | VS Code MSSQL extension + Rider/DataGrip | ⚠ | No Linux SSMS ever; SSMS 21 doubled down on the 64-bit Windows VS shell[23][24]. See the gap list below |
| SQL Server 2025 LocalDB | mssql-server container, or the native Linux package | ⚠ | Same build you have (17.0.4025.3 = CU3) exists for RHEL 9/10 and Ubuntu 22.04/24.04, x86-64 only[5]. Free via MSSQL_PID=StandardDeveloper / EnterpriseDeveloper[29]. Loses auto-start-on-connect and the instance-per-user model |
| System CLR Types for SQL Server 2019 | Nothing (it was an SSMS/SSIS dependency) | ✓ | If your code touches geometry/hierarchyid client-side, use the .NET Standard reimplementation dotMorten/Microsoft.SqlServer.Types ⭐ 77[74] |
| ODBC Driver 17 for SQL Server | msodbcsql18 + unixODBC | ✓ | Driver 18 is the current line and packages exist for Debian, Ubuntu, RHEL, SLES, Alpine, Azure Linux[36]. Note 18 flipped Encrypt to on by default — expect connection-string edits |
| OLE DB Driver for SQL Server | None — move to Microsoft.Data.SqlClient or ODBC | ✗ | MSOLEDBSQL is Windows-only by design; the current 19.4.2 release ships only Windows installers[37]. Anything using OLE DB (legacy SSIS packages, classic ADO, linked servers from a Windows box) stays on Windows |
| IIS 10.0 Express | Kestrel (dotnet run) + Caddy/nginx in front | ✓ | Kestrel is already the default debug server[38]; production pattern is systemd unit + reverse proxy[39]. Caddy ⭐ 74k gives automatic HTTPS in one binary[40] |
| Web Deploy 4.0 (msdeploy) | dotnet publish → rsync/scp + systemd, or containers, or CI | ⚠ | Web Deploy is an MSI that depends on IIS and the Web Management Service[41]; the cross-platform port was requested in 2016 and the repo was archived without it[79] ⭐ 256 |
| Help Viewer 2.3 (+ FRA module) | Zeal (Dash docsets) or DevDocs | ⚠ | No offline MS Learn library on Linux. Zeal ⭐ 13k is the closest equivalent, community-curated docsets rather than vendor-shipped[44][45]. Localised (FR) offline docs: gone |
| Visual Studio Tools for Applications 2019 | None | ✗ | VSTA is an ISV extensibility runtime on .NET Framework, installed by another app rather than chosen[46][47]. Whatever pulled it in (SSIS script tasks, a CAD/ERP host) is the thing that needs a Windows VM |
| dotPeek 2025.3.3 | Rider's Assembly Explorer; ilspycmd | ✓ | dotPeek's engine is Rider's cross-platform decompiler, working on Windows, macOS and Linux[51]. You lose the standalone WPF window, not the capability |
| ILSpy 10 | ilspy-vscode; ilspycmd dotnet tool | ⚠ | ILSpy v11 has an Avalonia UI that builds on Linux, but as of June 2026 prebuilt binaries are Windows-only — you compile it yourself[48] ⭐ 26k. AvaloniaILSpy is archived and points at the VS Code extension ⭐ 1.8k[49][50] ⭐ 233 |
| .NET SDK 10.0.110 / .301 / .302 | apt install dotnet-sdk-10.0, or dotnet-install.sh | ✓ | Gotcha: the Microsoft apt feed no longer carries .NET for Ubuntu — use Canonical's built-in feed, or ppa:dotnet/backports on 22.04/24.04[6]. Canonical ships only .1xx feature bands, so for a pinned 10.0.3xx SDK use the install script[7] |
| Windows Desktop Runtime 10.0.10 | None — Avalonia, Avalonia XPF, Uno | ✗ | WPF and WinForms are Windows desktop frameworks, period[52][76] ⭐ 7.7k[77] ⭐ 4.8k. See the designer section |
| NVM for Windows 1.2.2 | nvm ⭐ 94k, fnm ⭐ 26k, or mise ⭐ 31k | ✓ | The Windows port was always a reimplementation; the real nvm is the shell script[61]. mise reads your existing .nvmrc[78] |
| Ruby 3.4.8 (RubyInstaller) | rbenv + ruby-build ⭐ 17k, or mise | ✓ | No DevKit/MSYS2 dance — native gems compile against system headers[63] |
| Python 3.12 + 3.13 + Python Launcher | uv ⭐ 88k, pyenv ⭐ 45k, or mise | ✓ | uv replaces the installers, the py launcher and venv management in one binary[64][65]; pyenv if you prefer the classic model[66] |
| MSYS2 | Your shell | ✓ | Its stated job is running native Windows software[15] |
| Docker Desktop 4.61 | Docker Engine, or Podman ⭐ 32k | ✓ | On Linux, Desktop still runs a VM with its own desktop-linux context[13] — dropping it is a straight win. Podman is rootless by default[14][80], ⚠ but the MSSQL extension's container wizard explicitly does not support it[28] |
| Bun 1.3.9 | Bun | ✓ | First-class Linux target[8] |
| HeidiSQL 12.15 | HeidiSQL native Linux build (beta), or DBeaver | ⚠ | v12.20 (Jun 2026) ships .deb/.rpm in Qt6, Qt5 and GTK2 flavours[69]; the author calls Wine "quite unstable" and the native port a beta[70] |
| Robo 3T 1.4.3 | MongoDB Compass ⭐ 1.5k, or DBeaver | ⚠ | Robo 3T is abandoned (last release 1.4.4, no compat work for new MongoDB)[67] — you were due to replace it on Windows too. Compass is the free official GUI[68] |
| DBeaver 26.0.5 | DBeaver | ✓ | .deb/.rpm/zip[9]; workspace and connections copy over |
| DB Browser for SQLite | DB Browser for SQLite | ✓ | AppImage, Snap, distro packages[10] |
| Beyond Compare 5.1.7 | Beyond Compare 5 for Linux | ✓ | Same licence key — all licences sold since 2016 are multiplatform[12][11]. ⚠ the Windows shell-extension integration has no equivalent |
The IDE decision, priced
Rider is free for non-commercial use only, and the terms are specific: one-year subscription, auto-renewing only if you used it in the last six months, unusable for anything that qualifies as commercial work, and detailed code-related data collection is on by default[2]. For paid work you're buying a seat — dotUltimate (Rider + ReSharper + dotTrace/dotMemory/dotPeek) lists around $597 for a first commercial year[73]. That is the honest price of leaving Visual Studio Community behind, because the free-as-in-Community substitute (VS Code + C# Dev Kit) carries its own licence ceiling: free for individuals and ≤5-person commercial teams, and explicitly forbidden for Enterprises above 250 users/PCs or $1M revenue except for open source and education[16][17].
The 2026 wildcard is that ReSharper is no longer Visual-Studio-only: it now ships as an extension for VS Code, Cursor, Antigravity, Devin Desktop and Kiro, with ReSharper-grade C#/XAML/Razor/Blazor analysis, solution-wide refactorings, unit testing, a Solution Explorer, decompiled-source navigation[19] and, since 2026.2, breakpoints and attach-to-process[18]. So "VS Code with your ReSharper muscle memory" is a real Linux option now, not a downgrade story. Rider itself keeps shipping Linux-relevant fixes — 2026.2 lists more reliable source-generator debugging on Linux and macOS[71].
WinForms / WPF: the one genuine dead end
"Even though .NET is a cross-platform technology, WPF only runs on Windows"[52], and its XAML designer requires Visual Studio[52]. Rider will happily edit WPF/WinForms code on Linux but has no visual designers at all[20], and even on Windows the designer story is a Visual Studio monopoly. Your options, in ascending cost:
- New code: Avalonia ⭐ 31k — XAML, own renderer, Linux/macOS/Windows/WASM[54]; Uno ⭐ 10k if you also need mobile/web from one codebase[55].
- Existing WPF app you must run unchanged: Avalonia XPF — a commercial binary-compatibility layer that runs existing WPF apps, including DevExpress/Telerik-based ones, on desktop Linux[53].
- You need the designer itself: Windows VM. There is no third option — the frameworks are Windows desktop frameworks by definition[76][77].
SSMS: exactly what you lose
Microsoft's stated position after killing Azure Data Studio is "VS Code + MSSQL extension for development, SSMS for administration"[4] — which is a Windows answer to a Linux question. What the MSSQL extension does cover cross-platform is more than most people expect: Object Explorer, Table Designer, Schema Designer, Schema Compare, Query Profiler over Extended Events, backup/restore, DACPAC/BACPAC import-export, flat-file import, and SQL database projects[4][75]. Note that a February 2026 practitioner post flagged flat-file import as still missing[27] and Microsoft's June 2026 docs now list it as shipped[4] — the gap list is shrinking month over month.
Still Windows-only, per Microsoft and per practitioners: SQL Server Agent job management and SQL Server Profiler-style tracing UI[4][27], plus maintenance plans and the classic administration surface. ADS notebooks migrate to Polyglot Notebooks, a different extension with a different runtime — test before you rely on it[27].
Rider softens this considerably if you're buying it anyway: the DataGrip database engine is bundled and enabled by default, covering SQL Server 10–17[25][26] — so schema browsing, query console and data editing live in the same window as your C#. For scripted work, both SqlPackage (a dotnet tool on Linux)[56] and the rewritten sqlcmd ⭐ 575[58] are cross-platform. If you have classic SSDT .sqlproj databases, the SDK-style Microsoft.Build.Sql format is the portable successor, and SqlPackage 170.4 (June 2026) can reverse-engineer a live database directly into one[57].
LocalDB → a container, with three caveats
The mechanics are easy: the MSSQL extension has a Local SQL Server container wizard that works on Linux, defaults to SQL Server 2025, and manages start/stop/delete from the Connections view[28]. Licensing is a non-issue: Developer edition is free for non-production dev/test, and 2025 split it into Standard Developer and Enterprise Developer so you can develop against Standard's limits deliberately[30][29].
Caveats worth knowing before you commit:
- Podman is out for the wizard path — the docs say so flatly[28]. Same for Testcontainers unless you enable Docker's compatibility socket. Plan on Docker Engine.
- x86-64 only, and AVX required. Container images are supported only on Intel/AMD x86-64 hosts, with emulation explicitly unsupported[5]; SQL Server 2025 RTM needed AVX and asserted on startup where emulation lacked it (fixed in CU1)[33]. arm64 support is still an open feature request in both the mssql-docker ⭐ 1.9k and vscode-mssql ⭐ 1.9k repos[31][32] — irrelevant on your x86 laptop, decisive if you ever move to an ARM machine.
- Memory: minimum 2 GB per container, and SQL Server on Linux will take ~80% of what the container is allowed[28] — set limits, or a Testcontainers-heavy test run will fight your IDE.
For test suites, Testcontainers for .NET ⭐ 4.3k is the idiomatic LocalDB replacement: throwaway per-class SQL Server instances instead of a shared local instance[34][35] — and on Linux it runs without the Docker Desktop VM hop[13].
IIS Express → Kestrel, and the HTTPS cert tax
IIS Express is the easiest item on the list to delete: Kestrel is already the default, recommended cross-platform server and the default debug server[38], so dotnet run is your dev host and the documented production shape is a systemd unit behind nginx[39] (or Caddy ⭐ 74k for automatic HTTPS with a two-line config[40]).
⚠ The one paper cut nobody warns you about: dotnet dev-certs https --trust does not fully work on Linux. You export the cert into the system CA store, run update-ca-certificates, and then add it to each browser's NSS database with certutil; DOTNET_DEV_CERTS_NSSDB_PATHS lets you point .NET at extra NSS directories[42]. The community tool linux-dev-certs ⭐ 98 automates it with a CA-signed dev cert so more of the system trusts the endpoint, and handles the snap-Firefox case where browsers ignore system certs[43].
Web Deploy → pick your poison
There is no Linux msdeploy and there never will be: Web Deploy installs from an MSI onto Windows Server/IIS and leans on the Web Management Service, SMO and IIS Manager[41], and the "make MSDeploy cross-platform" request sat from 2016 until the repository was archived in 2020[79]. Replace the concept, not the tool: dotnet publish produces a folder, and you ship it with rsync/scp into a systemd-managed service directory[39], or you build a container image, or you let CI do both. Database deltas that Web Deploy used to carry go to SqlPackage/DACPAC instead[56]. If you are publishing to a Windows IIS server, that endpoint keeps requiring a Windows publish host — run it from CI, not your laptop.
Decompilers: capability survives, the standalone app does not
dotPeek is a WPF app, so it dies with Windows — but its engine is what Rider's Assembly Explorer runs, cross-platform, on Linux[51]. On the open-source side the picture in 2026 is transitional: ILSpy v11 has a finished Avalonia UI, but prebuilt binaries are still Windows-only as of June 2026, so Linux means building from source[48]; the old AvaloniaILSpy fork is archived and its README redirects you to the VS Code extension[49]. So the shipping cross-platform ILSpy today is ilspy-vscode[50] plus the ilspycmd dotnet tool. ⚠ dnSpyEx, if that's in your muscle memory, is Windows-only.
Toolchain managers: consolidate instead of porting
Four Windows-specific installers (NVM for Windows, RubyInstaller, two python.org builds + the py launcher) collapse into one tool if you want: mise ⭐ 31k manages dev tools, env vars and per-project tasks from a single CLI[59][60] and reads your existing .nvmrc/.ruby-version/.python-version files, so migration is not a rewrite[78]. If you'd rather keep one tool per language: nvm ⭐ 94k or fnm ⭐ 26k for Node[61][62], rbenv ⭐ 17k for Ruby[63], uv ⭐ 88k for Python[64][65] (or pyenv ⭐ 45k[66]). The .NET SDK is the exception to "use a version manager": use apt plus global.json, and dotnet-install.sh when you need a feature band Canonical doesn't ship[6][7].
What still needs Windows
Four items, and only four: the WinForms/WPF visual designers[52], SSMS's Agent/Profiler/maintenance-plan administration[4][23], anything binding OLE DB[37], and whichever ISV app dragged in VSTA 2019[47][46]. All four are VM material, not Wine material — a Windows VM with VS 2026 and SSMS 21 installed is the pragmatic escape hatch, used a few times a month rather than daily.