Breaking changes in .NET 7

If you're migrating an app to .NET 7, the breaking changes listed here might affect you. Changes are grouped by technology area, such as ASP.NET Core or Windows Forms.

This article categorizes each breaking change as binary incompatible or source incompatible:

  • Binary incompatible - Existing binaries may encounter a breaking change in behavior, such as failure to load or execute, or different run-time behavior.
  • Source incompatible - Source code may encounter a breaking change in behavior when targeting the new runtime or using the new SDK or component. Behavior changes can include compile errors or different run-time behavior.

Note

This article is a work in progress. It's not a complete list of breaking changes in .NET 7. To query breaking changes that are still pending publication, see Issues of .NET.

ASP.NET Core

Title Binary compatible Source compatible Introduced
API controller actions try to infer parameters from DI ✔️ Preview 2
Event IDs for some Microsoft.AspNetCore.Mvc.Core log messages changed ✔️ Preview 3
Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv and libuv.dll removed Preview 1
Microsoft.Data.SqlClient updated to 4.0.1 ✔️ Preview 2
MVC's detection of an empty body in model binding changed ✔️ Preview 3
SignalR Hub methods try to resolve parameters from DI ✔️ Preview 2

Core .NET libraries

Title Binary compatible Source compatible Introduced
API obsoletions with non-default diagnostic IDs ✔️ Preview 1
C++/CLI projects in Visual Studio
Collectible Assembly in non-collectible AssemblyLoadContext ✔️ Preview 5
Equals method behavior change for NaN ✔️ Preview 5
FullPath and OldFullPath return fully qualified path ✔️ Preview 1
Generic type constraint on PatternContext<T> Preview 3
SerializationFormat.Binary is obsolete Preview 2
Validate CompressionLevel for BrotliStream ✔️ Preview 1

Cryptography

Title Binary compatible Source compatible Introduced
Decrypting EnvelopedCms doesn't double unwrap ✔️ Preview 5
X500DistinguishedName parsing of friendly names ✔️ Preview 5

Deployment

Title Binary compatible Source compatible Introduced
Multi-level lookup is disabled ✔️ Preview 4

Networking

Title Binary compatible Source compatible Introduced
AllowRenegotiation default is false Preview 3
Custom ping payloads on Linux ✔️ Preview 2

SDK and MSBuild

Title Binary compatible Source compatible Introduced
Version requirements for .NET 7 SDK ✔️ ✔️ 7.0.100
MSBuild serialization of custom types in .NET 7 7.0.100

Serialization

Title Binary compatible Source compatible Introduced
Deserialize Version type with leading or trailing whitespace ✔️ Preview 1

Windows Forms

Title Binary compatible Source compatible Introduced
Some APIs throw ArgumentNullException ✔️ Preview 1