migrate-dotnet9-to-dotnet10

Migrate .NET 9 projects to .NET 10 and resolve all breaking changes.

1|Updated Jun 1, 2026
One-click install
npx skills add https://github.com/D1ssolve/craft-agents --skill migrate-dotnet9-to-dotnet10-d1ssolve
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: migrate-dotnet9-to-dotnet10
Source: https://github.com/D1ssolve/craft-agents/tree/main/skills/migrate-dotnet9-to-dotnet10
Command: npx skills add https://github.com/D1ssolve/craft-agents --skill migrate-dotnet9-to-dotnet10-d1ssolve

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Upgrading a project from .NET 9 to .NET 10 introduces dozens of breaking changes across the compiler, runtime, SDK, ASP.NET Core, EF Core, and cryptography APIs. This Skill provides a systematic, step-by-step workflow that updates the target framework, fixes build errors, addresses behavioral changes, and updates infrastructure so the migrated project builds cleanly and passes tests. ## Core Features & Use Cases - Guided six-step migration workflow: Assess the project, update the TargetFramework to net10.0, resolve source-incompatible changes, address behavioral changes, update Dockerfiles and CI/CD, then verify with builds and tests. - Technology-aware reference loading: Ten detailed reference documents cover C# 14 compiler changes, core libraries, SDK/MSBuild, ASP.NET Core, EF Core, cryptography, extensions/hosting, serialization/networking, WinForms/WPF, and containers/interop, loaded selectively based on project type. - Concrete fix patterns: Provides before/after code for SYSLIB0058-0062 obsoletions, the C# 14 field and extension keywords, span overload resolution, System.Linq.Async migration, Microsoft.OpenApi v2 changes, and Sqlite DateTimeOffset behavior. - Use Case: A team upgrades their ASP.NET Core Web API from net9.0 to net10.0 and hits build errors from the new field keyword, NU1510 warnings, and OpenApi namespace removals. The Skill walks them through each fix and flags behavioral changes like SIGTERM handling and configuration null binding before deployment. ## Quick Start Migrate my .NET 9 solution at ./src/MyApp.sln to .NET 10 and fix all resulting build errors and breaking changes.

Frequently Asked Questions about migrate-dotnet9-to-dotnet10

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I migrate a .NET 9 project to .NET 10?

Update the TargetFramework from net9.0 to net10.0 in each .csproj, bump Microsoft package references to 10.0.x, run dotnet restore, then fix build errors and behavioral changes. This Skill provides a six-step workflow covering assessment, TFM update, source fixes, behavioral changes, infrastructure, and verification.

What breaking changes does .NET 10 introduce in C# 14?

C# 14 makes field a contextual keyword inside property accessors (locals named field cause error CS9272), reserves extension as a keyword, and changes overload resolution so span-based methods like MemoryExtensions.Contains may bind instead of Enumerable methods. Fixes include renaming variables, using @field, or adding .AsEnumerable() casts.

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

No, this Skill only covers the net9.0 to net10.0 step. For projects on .NET 8 or earlier, first use the migrate-dotnet8-to-dotnet9 skill to reach net9.0, then apply this Skill for the final .NET 10 migration.

How do I fix System.Linq.Async errors after upgrading to .NET 10?

Remove the System.Linq.Async package reference or upgrade it to v7.0.0, since .NET 10 includes built-in AsyncEnumerable LINQ support. If the package arrives transitively, add ExcludeAssets set to compile, and rename SelectAwait calls to Select where needed.

Why does my .NET 10 container app no longer shut down gracefully on SIGTERM?

The .NET 10 runtime no longer registers default SIGTERM handlers, so AppDomain.ProcessExit is not raised on termination signals. ASP.NET Core and Generic Host apps are unaffected, but console apps must register PosixSignalRegistration handlers explicitly.

Does .NET 10 still provide Debian-based Docker images?

No, default .NET 10 container images use Ubuntu 24.04 and Debian images are no longer shipped. Update Dockerfiles to the 10.0 tags and verify any apt-get commands or Debian-specific native dependencies still work.