migrate-dotnet9-to-dotnet10

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

Updated Jul 20, 2026
One-click install
npx skills add https://github.com/Netcodr81/kinetic-reports --skill migrate-dotnet9-to-dotnet10-netcodr81
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: migrate-dotnet9-to-dotnet10
Source: https://github.com/Netcodr81/kinetic-reports/tree/main/.github/skills/migrate-dotnet9-to-dotnet10
Command: npx skills add https://github.com/Netcodr81/kinetic-reports --skill migrate-dotnet9-to-dotnet10-netcodr81

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 identifies which changes apply to your project and supplies concrete fixes, so nothing is missed during the migration. ## Core Features & Use Cases - Guided six-step migration workflow: Assess the project, update the TargetFramework to net10.0, resolve build errors, address behavioral changes, update infrastructure (Dockerfiles, CI/CD, global.json), and verify with builds and tests. - Technology-specific reference documents: Ten detailed references covering 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 what the project uses. - Concrete fix patterns: Includes before/after code for SYSLIB0058–SYSLIB0062 obsoletions, the C# 14 field and extension keywords, span overload resolution, Microsoft.OpenApi v2 changes, System.Linq.Async migration, and Sqlite DateTimeOffset behavior. - Use Case: You update your build server to the .NET 10 SDK and your solution suddenly fails with CS9272 errors, NU1510 warnings, and OpenAPI compilation errors. This Skill walks you through each failure category with the exact fix. ## Quick Start Migrate my solution at ./src/MyApp.sln from .NET 9 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 work through build errors and behavioral changes systematically. This Skill provides a six-step workflow covering assessment, TFM update, build fixes, behavioral changes, infrastructure, and verification.

What breaking changes does .NET 10 introduce?▼

Key changes include the C# 14 field and extension contextual keywords, span overload resolution shifts, SYSLIB0058-SYSLIB0062 obsoletions, removed SIGTERM handlers, BackgroundService threading changes, Microsoft.OpenApi v2 API restructuring, and EF Core parameterized collections. The Skill's references document each with fixes.

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

No, this Skill only covers the net9.0 to net10.0 step. Upgrade from .NET 8 to .NET 9 first using the migrate-dotnet8-to-dotnet9 skill, then apply this Skill for the .NET 9 to .NET 10 migration.

How do I fix CS9272 field keyword errors in C# 14?▼

CS9272 occurs when a local variable named field is declared inside a property accessor, since field is now a contextual keyword. Rename the variable (e.g., fieldValue) or escape it as @field. Class members named field should be qualified with this.field.

Does .NET 10 still provide Debian Docker images?▼

No, .NET 10 default container images use Ubuntu 24.04 and Debian-based images are no longer shipped. Update Dockerfiles to the 10.0 tags, and audit any apt-get commands or Debian-specific native dependencies in your image layers.

Why does my build fail after removing System.Linq.Async?▼

.NET 10 includes built-in System.Linq.AsyncEnumerable, which conflicts with the community System.Linq.Async package. Remove the package or upgrade to v7.0.0, use ExcludeAssets compile for transitive references, and rename SelectAwait calls to Select where needed.