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.
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.
| 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. |
.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.
Alongside the thirteen general domains every health check covers — access, backups, security, obligations — regardless of what the system is written in.
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.
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.
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.
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.
Windows authentication, ASP.NET Membership, SimpleMembership. The last two are dead ends and have to be replaced regardless of which runtime you land 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.
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.
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.
$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.