Atlas expedition

Your .NET + SQL Server stack on Linux: what actually replaces what

Rider replaces Visual Studio + ReSharper on Linux at the cost of the WinForms/WPF designers; SQL Server itself moves cleanly to a container, but SSMS has no Linux successor now that Azure Data Studio is dead.

80 sources ~13 min read #13 dotnet · sql-server · linux · rider · tooling · migration

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 replacementParityMigration notes
Visual Studio Community 2026Rider; VS Code + C# Dev KitRider 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 2026Rider (same engine); ReSharper for VS CodeNew 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 ServiceNothing to install — EventPipe + dotnet-traceETW 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.1VS Code MSSQL extension + Rider/DataGripNo Linux SSMS ever; SSMS 21 doubled down on the 64-bit Windows VS shell[23][24]. See the gap list below
SQL Server 2025 LocalDBmssql-server container, or the native Linux packageSame 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 2019Nothing (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 Servermsodbcsql18 + unixODBCDriver 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 ServerNone — move to Microsoft.Data.SqlClient or ODBCMSOLEDBSQL 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 ExpressKestrel (dotnet run) + Caddy/nginx in frontKestrel 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 CIWeb 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 DevDocsNo 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 2019NoneVSTA 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.3Rider's Assembly Explorer; ilspycmddotPeek'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 10ilspy-vscode; ilspycmd dotnet toolILSpy 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 / .302apt install dotnet-sdk-10.0, or dotnet-install.shGotcha: 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.10None — Avalonia, Avalonia XPF, UnoWPF and WinForms are Windows desktop frameworks, period[52][76] ⭐ 7.7k[77] ⭐ 4.8k. See the designer section
NVM for Windows 1.2.2nvm ⭐ 94k, fnm ⭐ 26k, or mise ⭐ 31kThe 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 miseNo DevKit/MSYS2 dance — native gems compile against system headers[63]
Python 3.12 + 3.13 + Python Launcheruv ⭐ 88k, pyenv ⭐ 45k, or miseuv replaces the installers, the py launcher and venv management in one binary[64][65]; pyenv if you prefer the classic model[66]
MSYS2Your shellIts stated job is running native Windows software[15]
Docker Desktop 4.61Docker Engine, or Podman ⭐ 32kOn 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.9BunFirst-class Linux target[8]
HeidiSQL 12.15HeidiSQL native Linux build (beta), or DBeaverv12.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.3MongoDB Compass ⭐ 1.5k, or DBeaverRobo 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.5DBeaver.deb/.rpm/zip[9]; workspace and connections copy over
DB Browser for SQLiteDB Browser for SQLiteAppImage, Snap, distro packages[10]
Beyond Compare 5.1.7Beyond Compare 5 for LinuxSame 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:

  1. 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.
  2. 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.
  3. 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.

Citations · 80 sources

Click the Citations tab to load…