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.
Supported, superseded, or gone
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.
| Version | Status | What it means for you |
|---|---|---|
| .NET Framework 4.8 / 4.8.1 | Supported | Serviced 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.1 | Ended April 2022 | The in-place upgrade to 4.8 is usually small. Often a config change and a rebuild. |
| .NET Framework ≤ 4.5.1 | Long ended | Old enough that the build machine is usually the harder problem than the code. |
| .NET Core 3.1 · .NET 5 · .NET 7 | 2022 – 2024 | Non-LTS or superseded. Moving between modern versions is normally days, not months. |
| Silverlight | Ended October 2021 | No path forward and no browser will run it. This one is a replacement, not a migration. |
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.
| Built with | Verdict | Why |
|---|---|---|
| WinForms desktop | Crosses | Supported on modern .NET on Windows. Usually the most achievable modernization on this list. |
| WPF desktop | Crosses | Same. The UI framework itself is not the obstacle. |
| ASP.NET MVC 5 | Crosses, with work | Not a port — the pipeline, startup and DI all differ — but the shape of the application survives. |
| ASP.NET Web Forms | Does not cross | Never ported, and it will not be. Moving means rewriting the UI layer, whatever anyone tells you. |
| WCF services | Does not cross officially | A community project carries the server side. Worth knowing before it is assumed. |
| .asmx web services | Does not cross | A 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Find out which side of the fork you are on. 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 takes one to five days and produces a report you keep whatever you decide next. Prices are on one page.