.NET 9 was released in November 2024. A release announcement is a useful input to planning, but the upgrade decision should begin with the product’s constraints.

Write down the reason

A useful upgrade proposal names an outcome: removing an unsupported dependency, simplifying deployment or resolving a measured bottleneck. Avoid bundling a runtime change with a new database access layer and a frontend redesign. The combined change becomes difficult to diagnose and harder to reverse.

Create a compatibility checklist covering packages, hosting, authentication, serialisation and background processing. Include tools used only during deployment; they are easy to miss when local compilation succeeds.

Define the exit criteria

Choose a representative set of user journeys. Run the same checks against the existing and candidate versions, then compare error behaviour and operational measurements. Record any intentional contract changes explicitly.

Plan database compatibility across the rollback window. Restoring the old application binary is insufficient if a migration has removed columns it still needs.

The decision record should say what passed, what remains uncertain and who owns the deployment. For a migration planned now, consult the current support policy before selecting a destination; this article examines the 2024 decision context rather than recommending that target today.

Reference

Microsoft’s .NET 9 announcement.