Migrating .NET Framework 4.6.2 to .NET 10 without stopping the business

Lessons from moving an ~800-file, 7-project SaaS solution from .NET Framework to .NET 10, including WebForms, EF6 EDMX and Telerik, in phases that kept the build green.

Plenty of profitable software still runs on .NET Framework 4.x. It works, until you need to hire for it, deploy it somewhere modern, or use a library that dropped support years ago. The instinct is often to rewrite from scratch. We almost always recommend against it.

Here is how we migrated a file-sharing SaaS (7 projects, about 800 C# files) from .NET Framework 4.6.2 to .NET 10.

Start with an honest inventory

Before touching code, we listed everything that would not survive the move:

  • System.Web, which ASP.NET Core doesn't have
  • WebForms: a 52-page admin portal
  • EF6 with an EDMX model
  • Telerik WebForms controls and Ionic.Zip
  • Version conflicts between the AWS SDK, JWT and Twilio packages

Each item got a replacement plan and an estimate. That list became the migration roadmap.

Phase 1: SDK-style projects

Converting project files to the SDK style is mechanical but unlocks everything else. We kept the target framework unchanged at first, so the solution still built and behaved exactly as before.

Phase 2: isolate the legacy

Code that depended on System.Web or WebForms was moved behind interfaces or into clearly marked legacy folders. Business logic was separated from the framework it happened to live in.

Phase 3: convert batch by batch

  • The API first. Web API 5.2 controllers became ASP.NET Core controllers with JWT Bearer auth, CORS and a global exception handler. 19 controllers, each tested against the old behavior.
  • Data access. EF6 EDMX moved to EF Core, and System.Data.SqlClient to Microsoft.Data.SqlClient.
  • The admin portal. WebForms can't be ported, so the 52 pages were rebuilt as ASP.NET Core MVC: about 50 controllers and 57 Razor views, keeping the workflows admins already knew.

The rule throughout: the solution builds at every step. No long-lived branch that "will compile eventually."

Phase 4: automate deployment

Finally, a script that builds, publishes and deploys to IIS on AWS EC2. Modernization isn't finished until releasing is boring.

Should you migrate?

If your .NET Framework app is still earning money but slowing you down, a phased migration is usually cheaper and far less risky than a rewrite. We're happy to look at your solution and give you an honest assessment.

Share this article

Let’s Solve Your Trucking & Logistics Software Challenges

Tell us about your operation, the systems you use, and the challenges you want to solve. Softlaunchers can help you evaluate a practical approach to software development, workflow automation, and integrations for your logistics business.