Free MVP design: 5-6 screens, clickable, no obligation · Starter MVP 50% off: $1,500 $3,000 Free MVP design · MVP 50% off: $1,500 Claim now →

How to Upgrade from .NET 8 to .NET 10: Steps, Breaking Changes and Checklist

With .NET 8 support ending on November 10, 2026, most teams are moving their applications to .NET 10, the current long-term support release. This is a technical guide for developers and tech leads: the exact steps, the breaking changes that matter when you jump from .NET 8 straight to .NET 10, the errors you are likely to see and how to fix them.

Short answer: to upgrade, install the .NET 10 SDK, change <TargetFramework>net8.0</TargetFramework> to net10.0, update Microsoft packages such as ASP.NET Core and EF Core to version 10, switch Docker images to the :10.0 tags, fix obsolete-API warnings and run your tests. Because you skip .NET 9, review the breaking changes of both .NET 9 and .NET 10. For a single well-tested application, Three Circle estimates a few days to 2 weeks.

Before you start: upgrade checklist

CheckWhy it matters
List every project, service, function and container on .NET 8Background services and Azure Functions are often forgotten
Check third-party NuGet packages support .NET 10One unmaintained package can block the whole upgrade
Make sure automated tests run and pass on .NET 8You need a working baseline to compare against
Check hosting: Azure App Service, AWS, IIS, Docker, KubernetesThe runtime must be available where you deploy
Update Visual Studio or your IDEOlder IDE versions cannot target .NET 10; use Visual Studio 2026 or current VS Code tooling
Agree a rollback planKeep the .NET 8 build ready until production is stable

Step-by-step: how to upgrade from .NET 8 to .NET 10

  1. Install the .NET 10 SDK on developer machines and build agents, and update global.json if you pin the SDK (for example "version": "10.0.100").
  2. Change the target framework in every project file from net8.0 to net10.0. If you use Directory.Build.props, change it there once.
  3. Update packages: move Microsoft.AspNetCore.*, Microsoft.EntityFrameworkCore.* and Microsoft.Extensions.* packages to 10.0.x, then update third-party packages. dotnet list package --outdated shows what needs updating.
  4. Update Docker images: use mcr.microsoft.com/dotnet/sdk:10.0 to build and mcr.microsoft.com/dotnet/aspnet:10.0 to run. The default images now use Ubuntu instead of Debian, so check any apt-get package names in your Dockerfile.
  5. Update CI/CD and hosting: set the .NET 10 SDK in GitHub Actions or Azure DevOps, and the .NET 10 runtime stack in Azure App Service, Azure Functions or AWS.
  6. Build and fix warnings: treat obsolete-API warnings as a to-do list; the most common ones are listed below.
  7. Test and release in stages: run unit, integration and performance tests, deploy to staging, then production.

Breaking changes that matter when moving from .NET 8

Going from .NET 8 to .NET 10 means you also take on the .NET 9 changes. These are the ones we see most often in business applications. Microsoft publishes the full lists for .NET 10, ASP.NET Core 10 and EF Core 10.

AreaChangeWhat to do
.NET 9 librariesBinaryFormatter was removed and now always throwsMove to System.Text.Json or another supported serializer
EF Core 9Applying migrations fails if the model has changes with no migration (PendingModelChangesWarning)Add the missing migration before deploying
ASP.NET Core 10WebHostBuilder, IWebHost and WebHost are obsoleteMove to WebApplication.CreateBuilder or the generic host
ASP.NET Core 10Cookie login redirects are disabled for known API endpointsAPIs now return 401/403 instead of redirecting; check API clients
ASP.NET Core 10WithOpenApi extension method is deprecatedUse the built-in OpenAPI document configuration
ASP.NET Core 10Razor runtime compilation and IActionContextAccessor are obsoleteUse Hot Reload in development; inject what you need instead
EF Core 10Collections in LINQ Contains() are sent as multiple SQL parametersCheck the performance of queries with very large lists
EF Core 10With UseAzureSql, JSON columns use the new SQL Server json typeReview the generated migration before applying it
EF Core 10EF tools need --framework on multi-targeted projectsAdd --framework net10.0 to dotnet ef commands
ContainersDefault images use UbuntuFix apt-get package names; test the image
SDKdotnet restore audits transitive packages for vulnerabilitiesExpect new NuGet warnings; update or pin patched versions
SDKA PackageReference without a version is an error; dotnet new sln creates .slnx filesAdd versions or use central package management

Common upgrade errors and how to fix them

Error or symptomFix
NETSDK1045: the current .NET SDK does not support targeting .NET 10.0Install the .NET 10 SDK and update global.json and build agents
New NuGet vulnerability warnings after restoreUpdate the affected packages or add a direct reference to a patched version
Build warnings about obsolete APIsFollow the replacement named in each warning; fix them before they become errors
“The model has pending changes” when applying EF migrationsRun dotnet ef migrations add and review the result
Docker build fails at apt-getPackage names differ on Ubuntu; update the Dockerfile
API clients now get 401 instead of a login pageExpected in ASP.NET Core 10 for API endpoints; update the client handling

What you gain with .NET 10

  • Support until November 2028 as a long-term support release.
  • Performance: runtime improvements in JIT inlining, devirtualization and stack allocation.
  • C# 14: the field keyword for properties, extension members and null-conditional assignment.
  • ASP.NET Core 10: passkey support in Identity, OpenAPI and minimal API improvements, and Blazor updates.
  • EF Core 10: named query filters, LINQ improvements and better Azure Cosmos DB support.

How long does the upgrade take?

SituationTypical effort
One application, up-to-date packages, good automated testsA few days to 2 weeks
Several apps or services, some outdated packages2 to 6 weeks
Large estate, old libraries, limited tests1 to 3 months, delivered in phases

Still on .NET Framework 4.x rather than .NET 8? That is a bigger project; see our .NET Framework migration cost guide. For deadlines and options, read .NET 8 end of support: what to do now.

Get help with your .NET 10 upgrade

Three Circle is an ASP.NET development company registered in Texas and working with clients across the US. We upgrade .NET 8 and .NET 9 applications to .NET 10 and support them afterwards. See our .NET migration services or hire dedicated .NET developers. Rates start from $35 per hour, projects from $1,000, and every upgrade starts with a written estimate. Request a free upgrade assessment.

Frequently asked questions

How do I upgrade from .NET 8 to .NET 10?

Install the .NET 10 SDK, change the target framework from net8.0 to net10.0, update Microsoft and third-party packages, switch Docker images to the 10.0 tags, fix obsolete-API warnings, then test and deploy in stages.

Can I upgrade directly from .NET 8 to .NET 10 without .NET 9?

Yes. You can go straight to .NET 10, but review the breaking changes of both .NET 9 and .NET 10, such as the removal of BinaryFormatter in .NET 9.

What are the main breaking changes in .NET 10?

For most web apps: WebHostBuilder and WithOpenApi are obsolete, API endpoints no longer redirect to cookie login pages, EF Core sends Contains() lists as multiple parameters, default Docker images use Ubuntu and dotnet restore audits transitive packages.

How long does a .NET 8 to .NET 10 upgrade take?

A single well-tested application usually takes a few days to 2 weeks; several services 2 to 6 weeks; large estates 1 to 3 months in phases.

Do I need Visual Studio 2026 for .NET 10?

You need an IDE version that supports .NET 10, such as Visual Studio 2026 or current VS Code C# tooling. You can also build from the command line with the .NET 10 SDK.

How long is .NET 10 supported?

.NET 10 is a long-term support release, supported until November 2028.

Facebook
Twitter
LinkedIn
WhatsApp
Get Free Quote

Leave a Comment

Your email address will not be published. Comments are reviewed before they appear.