.NET Developer

Most .NET work in 2026
is not greenfield.
Hire for the migration too.

C# engineers who are fluent in .NET 8 and patient with what came before — Web Forms, WCF, a Windows service nobody has opened since 2016. Full-time in your team, on the Virtus payroll, from $30 an hour.

Typical journey
Framework 4.8.NET 8, on Linux
$30–52
per hour
6–10 days
to day one
The migration ladder

Six rungs, and what breaks on each

You do not have to climb all of it. Most clients stop at rung four and are perfectly happy there — the point of writing it down is that you choose where to stop, rather than discovering it halfway.

.NET Framework 4.8

Where you probably are

Windows-only, IIS-bound, no support for the container tooling your platform team standardised on two years ago. Still supported, but going nowhere.

Inventory & analysers

Know the actual size
1–2 weeks

Nothing yet. Run the upgrade assistant and the API portability analyser, and list every dependency with no .NET 8 story. Most projects discover two blockers, not twenty.

Retarget the libraries

.NET Standard 2.0 core
2–6 weeks

Anything touching System.Web, App Domains, WCF server, or a COM interop nobody remembers writing. This is where the real work is.

Port the host

ASP.NET Core on .NET 8
4–10 weeks

Global.asax, HttpContext.Current, Web.config transforms, and every place someone reached for a static. Config, DI and middleware all change shape.

Containerise

Linux, Kubernetes, real CI
2–4 weeks

Path separators, case-sensitive file systems, Windows-specific crypto and any scheduled task that was really a Windows service.

Modernise inside

Minimal APIs, EF Core, AOT
Ongoing

Nothing forced. This is the part you do a slice at a time, once the platform underneath stops being the constraint.

New builds

And when there is nothing to migrate

ASP.NET Core services

Minimal APIs or MVC, typed configuration, health checks, OpenAPI generated rather than hand-written.

EF Core done properly

Migrations in source control, no lazy loading in a loop, and the generated SQL actually read before it ships.

Azure-native

App Service or Container Apps, Key Vault, Service Bus, Managed Identity instead of a connection string in a config file.

Blazor where it fits

Server or WebAssembly, chosen for the latency profile rather than the demo — and not proposed where React is the better answer.

Testing that means something

xUnit, Testcontainers against a real SQL Server, and integration tests through WebApplicationFactory.

Observability

OpenTelemetry, structured logs with Serilog, and correlation ids that survive a Service Bus hop.

Seniority

Migration work is senior work

A mid-level engineer is good value for feature work in a modern codebase. Give the Framework port to someone who has done one before — the mistakes are expensive and mostly invisible until production.

Mid-level

3–5 yrs$30–36/hr

Ships features in an ASP.NET Core codebase with review. Comfortable with EF Core and DI.

Senior

5–8 yrs$36–46/hr

Owns a service, leads a migration slice, and is the person who reads the generated SQL.

Lead / Architect

8+ yrs$46–62/hr

Plans the whole migration, sets service boundaries, and negotiates the Windows-only dependencies.

Send us your .csproj files

That is genuinely enough to tell you which rung you are on and roughly what the next one costs. No charge for the read.