Introduction
I’ve worked with nearly every .NET version in real-world projects, and every major release brings something that either surprises me or genuinely boosts my productivity. With .NET 9 and .NET 10, Microsoft has really stepped up their game these aren’t just incremental updates, but feature drops that can change how you architect and ship your software. If you’re maintaining legacy APIs or jumping into greenfield cloud apps, there’s plenty to get excited about. Here’s a quick rundown of the five features that made me stop, dig in, and say “wow, this is going to save time.
Explore the official release notes:
.NET 9 What's New
.NET 10 What's New
1. Native AOT (Ahead-of-Time Compilation) for All App Types
One of the pain points I’ve run into especially with microservices or background tasks is startup lag and heavy memory usage. Native AOT changes the rules. Now, you can compile your .NET code straight to native binaries, meaning apps launch instantly, use less memory, and don’t drag the entire .NET runtime along for the ride. This is especially huge for anyone pushing containers or building serverless functions.
How to enable Native AOT in your project:
<PropertyGroup>
<PublishAot>true</PublishAot>
</PropertyGroup>
Publish your app as a native executable:
dotnet publish -c Release -r win-x64 --self-contained -p:PublishAot=true
2. Built-in OpenTelemetry and Observability
Tracing and monitoring used to mean fighting with extra NuGet packages or gluing together logging libraries. With .NET 9/10, OpenTelemetry is built right in. The first time I saw distributed tracing flow from ASP.NET Core through my data layer without much config, I was honestly relieved.
Benefits:
- Automatic tracing and metrics
- Easier integration with popular monitoring tools
- Better visibility into distributed systems
3. C# 13: Primary Constructors and More
I’m a huge fan of anything that helps me write less boilerplate and keeps code clean. C# 13’s Primary Constructors for classes do exactly that. No more repetitive constructor assignments just declare your parameters once, and you’re set.
Here’s a quick example:
public class User(string name, string email)
{
public string Name { get; } = name;
public string Email { get; } = email;
}
Besides that, lambdas and pattern matching keep improving every release, and string interpolation is now both faster and safer. All these little changes add up and make daily coding genuinely nicer.
4. ASP.NET Core: Strongly Typed Minimal APIs with Source Generators
Minimal APIs were already a breath of fresh air for small services, but .NET 10 takes it up a notch. The new source generators make reflection mostly a thing of the past, and you get full type safety for your endpoints. It’s the sort of feature that makes refactoring APIs less nerve-wracking and really speeds up the "write it, test it, ship it" cycle.
Here’s how clear your endpoint code can look now:
app.MapPost("/users", (UserRequest request) => Results.Ok(request))
.WithName("CreateUser");
Less magic, more compile-time safety, and no more second-guessing your routes.
5. Smarter Entity Framework Core: Bulk Operations & Performance
If you work with large datasets or ever had to write a manual loop just to update rows, this one’s for you. The new bulk operations like BulkUpdate and BulkDelete in EF Core have saved me from so much tedium and boosted performance in the process.
Here’s an example:
context.Users.Where(u => u.IsActive)
.ExecuteUpdate(u => u.SetProperty(x => x.LastLogin, DateTime.UtcNow));
You can now update or delete hundreds or thousands of rows with a single, efficient query. I wish this existed a few projects ago!
Conclusion
I’ll be honest: I don’t adopt every new .NET feature right away, but .NET 9 and 10 have a lot of compelling reasons to upgrade. Native AOT and observability alone are enough to simplify deployment and maintenance, and the C# and EF Core upgrades make writing and maintaining code more enjoyable. If you’re looking for ways to build faster, cleaner, and more reliable apps, these releases are well worth your attention.
What new .NET feature are you most excited to try? Drop your thoughts below always happy to geek out about new tech!
Happy coding! 🚀
Top comments (0)