.NET Framework · ASP.NET · WinForms · WPF

First: are you actually in trouble?

A lot of .NET migration pressure is vendor noise. .NET Framework 4.8 is still supported and serviced as part of Windows — if that is what you are on, and the server underneath it is current, you are not exposed. You are simply not getting new features, which is a very different problem from being at risk.

The businesses that are genuinely exposed are on something older, on a Windows Server that stopped being supported in 2023, or built on a framework that has no way forward at all. Those are three different situations with three different price tags.

Where you stand

Supported, superseded, or gone.

.NET support status — check against Microsoft before quoting
VersionStatusWhat it means for you
.NET Framework 4.8 / 4.8.1SupportedServiced as a Windows component. If you are here and on a supported Windows Server, you are not in danger — you are just not getting new features.
.NET Framework 4.5.2 – 4.6.1Ended April 2022The in-place upgrade to 4.8 is usually small. Often a config change and a rebuild.
.NET Framework ≤ 4.5.1Long endedOld enough that the build machine is usually the harder problem than the code.
.NET Core 3.1 · .NET 5 · .NET 72022 – 2024Non-LTS or superseded. Moving between modern versions is normally days, not months.
SilverlightEnded October 2021No path forward and no browser will run it. This one is a replacement, not a migration.
The fork

Two runtimes, and not everything can cross.

.NET Framework and modern .NET are different runtimes, not different versions of one. Whether your application can move depends almost entirely on what it was built with — and this single table decides the difference between a few weeks and a project measured in quarters.

Can it move to modern .NET?
Built withVerdictWhy
WinForms desktopCrossesSupported on modern .NET on Windows. Usually the most achievable modernization on this list.
WPF desktopCrossesSame. The UI framework itself is not the obstacle.
ASP.NET MVC 5Crosses, with workNot a port — the pipeline, startup and DI all differ — but the shape of the application survives.
ASP.NET Web FormsDoes not crossNever ported, and it will not be. Moving means rewriting the UI layer, whatever anyone tells you.
WCF servicesDoes not cross officiallyA community project carries the server side. Worth knowing before it is assumed.
.asmx web servicesDoes not crossA dead end since roughly 2010. Usually replaced with a small modern API.

This is why an estimate given before anyone has opened the solution is worthless. A WinForms application and a Web Forms application are both "a .NET app" and they are not remotely the same piece of work.

What gets inspected

Seven questions specific to .NET.

Alongside the thirteen general domains every health check covers — access, backups, security, obligations — regardless of what the system is written in.

01

Which .NET is it, exactly?

Not "it is a .NET app" — the target framework moniker, per project. Mixed solutions are common and the answer often differs between the web project and the libraries underneath it.

02

Does it build on a clean machine?

And with which Visual Studio. A solution that only compiles on one retired laptop is the most urgent finding we can make, and it is more common than it sounds.

03

What third-party components are in it?

Crystal Reports, Telerik, DevExpress, Infragistics. These block migrations more often than the framework does, and the question is not only whether they still ship — it is whether the licence still exists and who holds it.

04

What is the data layer?

Entity Framework 6, raw ADO.NET, or a homegrown ORM from 2011. EF6 to EF Core is a rewrite of that layer rather than a port, and it is usually the largest single line in a modernization estimate.

05

How does authentication work?

Windows authentication, ASP.NET Membership, SimpleMembership. The last two are dead ends and have to be replaced regardless of which runtime you land on.

06

What is it running on?

Windows Server 2012 and 2012 R2 ended support in October 2023. The box underneath is often the real deadline, and nobody thinks to check it because the application is fine.

07

Is the deployment written down?

IIS site bindings, app pool identity and its password, machine keys, a folder somebody publishes to from Visual Studio. This is where "we cannot deploy a change" usually turns out to live.

What usually happens next

Three of the four answers are not a migration.

Get it building, then leave it alone. Reproduce the build on a clean machine, move to 4.8 if you are below it, put the server on something supported. For a business on Web Forms with no appetite for a rewrite, this is frequently the correct and complete answer — and it buys years, not months.

Move the box, not the code. Windows Server 2012 ending support is a real deadline with a real fix that does not involve touching the application at all. These get conflated constantly, and conflating them is how a server upgrade turns into a rewrite quote.

Route around one capability. Where a single thing has to change and the application cannot safely be edited — reporting, an integration, an API somebody needs — that piece moves out to a modern service beside it, reading through a seam, with nothing inside the original touched. See the bypass.

Modernize, where it actually crosses. WinForms and WPF onto modern .NET is achievable and worth doing when there is a reason. Web Forms is not that project, and anyone quoting it as though it were has not opened the solution.

Before you budget for a migration

Find out which side of the fork you are on.

$1,500, one day, no access to the code required — enough to say whether this is a server upgrade, a rebuild, or nothing at all. The full health check is $3,500 and produces a report you keep whatever you decide next.