Introduction
It’s been a recurrent meeting every 2 years, as this month Microsoft gave us the chance to try and adopt the new LTS version of our beloved framework, which is .NET 10 🔥
In this post, I’ll show you what are the big new improvements and features in this new LTS version, and also how to migrate your apps, which, you will see, has not changed a lot since the previous versions and this is a pretty good point.
What you need to know
So as you may know, .NET 10 has just been officially released (November 11, 2025) as a Long-Term Support (LTS) version, and is supported until November 14, 2028.
.NET 10 brings wide-ranging improvements across the runtime, libraries, SDK, and tooling, making it one of the most exciting releases so far.
Here are some of the big perks of this release:
- Runtime & performance boosts: As always, the new LTS version comes with a lot of performance improvements. The JIT compiler benefits from better inlining, method de-virtualization, enhanced code generation — plus support for modern hardware features (like AVX10.2 on Intel and improved vectorization on ARM64).
- Native AOT & file-based apps: you can build small utilities and CLI tools as single-file executables, thanks to native AOT support and improved file-based app support in the SDK.
- Enhanced libraries: new APIs and improvements in cryptography (including post-quantum readiness), globalization, serialization (stricter JSON behavior), collections, diagnostics, networking (like new WebSocketStream) and more.
- Better support for modern app types: improvements roll out across web (ASP.NET Core), desktop/mobile (via .NET MAUI), data access (Entity Framework Core 10), cloud-native and container scenarios.
- C# 14 enhancements: The new C# version introduces cleaner syntax features (Extension members 😍), improved pattern matching, better lambda capabilities, and new language constructs designed to reduce boilerplate.
For most production apps, migrating to .NET 10 is now strongly recommended by Microsoft, so don’t hesitate to step in !
How to migrate your project to .NET 10
Migrating isn’t just bumping a version number: a little bit of planning and testing ensures a smooth transition.
Here’s my step-by-step recommandations:
1. Review & plan
-
Inventory all your projects, libraries, services, shared code. If you use multiple projects/solutions (e.g. microservices, shared libs), list them all. This helps anticipate potential compatibility issues. 😉
-
Check your nugets dependencies for compatibility with .NET 10. Using:
dotnet list package --outdatedwill help you spot packages needing updates.
-
Make sure your development environment is ready: update to a version of Visual Studio (or other IDE) that supports .NET 10. (For example, Visual Studio 2026 is mandatory to use .NET 10 properly as I already tested this use case at my job. Good move Microsoft btw, 2022 was such a pain in the *** 🥹)
2. Update Target Framework and Project Files
In each .csproj, update the <TargetFramework> tag:
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
</PropertyGroup>
(or the appropriate target framework, like net10.0-windows, net10.0-android, if you’re targeting specific platforms like in your MAUI projects)
3. Update dependencies & packages
- After identifying outdated packages, update them to versions compatible with .NET 10. Use NuGet package manager, or
dotnet add packagecommands. Basically, what I always do is update all my Microsoft.AspNetCore*, Microsoft.EntityFrameworkCore*, Microsoft.Extensions*, and System.Net.Http.Json packages to the latest LTS version (in this case 10.0.0). - Pay attention to packages that may rely on APIs that changed or got deprecated. Some breaking changes may come from serialization behavior changes, stricter security defaults, or modified runtime behavior.
4. Adapt code & handle breaking changes
- As I said, be careful about serialization, JSON handling, cryptography or networking code if you rely on low-level APIs: .NET 10 libraries bring some updates on that, but I’ll let you check the breaking changes by yourself.
5. Test it, test it, test it !
- Run all your unit, integration and api tests under .NET 10 to catch regressions. Run all of them.
- If your app runs in containers / cloud / cross-platform: validate on all target environments (Windows, Linux, containers, mobile, etc.).
6. Gradual rollout & fallback strategy
For larger projects, it’s safer to migrate piece by piece:
- Migrate libraries first (shared code), then services, then full applications.
- Use branching / feature flags deployments to limit risk.
Conclusion
So here we are, 2 years after the .NET 8 release: C# is looking
sharper than ever
, and .NET 10 is a major milestone ! 🔥
It is blending performance, modern language features, improved runtime, richer libraries and a stable long-term support commitment. For many teams and projects (especially those in production, or planning to evolve across multiple platforms), migrating to .NET 10 is a very compelling move.
That said, a smooth migration requires planning: auditing dependencies, updating project files, carefully testing, and adapting code where needed. But as long as you approach it methodically, the upgrade path is clear, and the benefits are pretty neat 🥳
Enjoy your migration, and as always, Happy hacking 👨💻❤️