Breaking changes in .NET 5
If you're migrating an app to .NET 5, the breaking changes listed here might affect you. Changes are grouped by technology area, such as ASP.NET Core or cryptography.
This article indicates whether each breaking change is binary compatible or source compatible:
- Binary compatible - Existing binaries will load and execute successfully without recompilation, and the run-time behavior won't change.
- Source compatible - Source code will compile successfully without changes when targeting the new runtime or using the new SDK or component.
ASP.NET Core
Code analysis
Title | Binary compatible | Source compatible |
---|---|---|
CA1416 warning | ✔️ | ❌ |
CA1417 warning | ✔️ | ❌ |
CA1831 warning | ✔️ | ❌ |
CA2013 warning | ✔️ | ❌ |
CA2014 warning | ✔️ | ❌ |
CA2015 warning | ✔️ | ❌ |
CA2200 warning | ✔️ | ❌ |
CA2247 warning | ✔️ | ❌ |
Core .NET libraries
Cryptography
Title | Binary compatible | Source compatible |
---|---|---|
Cryptography APIs not supported on browser | ❌ | ✔️ |
Cryptography.Oid is init-only | ✔️ | ❌ |
Default TLS cipher suites on Linux | ❌ | ✔️ |
Create() overloads on cryptographic abstractions are obsolete | ✔️ | ❌ |
Default FeedbackSize value changed | ✔️ | ❌ |
Entity Framework Core
Breaking changes in EF Core 5.0
Globalization
Title | Binary compatible | Source compatible |
---|---|---|
Use ICU libraries on Windows | ❌ | ✔️ |
StringInfo and TextElementEnumerator are UAX29-compliant | ❌ | ✔️ |
Unicode category changed for Latin-1 characters | ✔️ | ❌ |
TextInfo.ListSeparator values changed | ✔️ | ❌ |
Interop
Title | Binary compatible | Source compatible |
---|---|---|
Support for WinRT is removed | ❌ | ✔️ |
Casting RCW to InterfaceIsIInspectable throws exception | ❌ | ✔️ |
No A/W suffix probing on non-Windows platforms | ❌ | ✔️ |
Networking
Title | Binary compatible | Source compatible |
---|---|---|
Cookie path handling conforms to RFC 6265 | ✔️ | ❌ |
LocalEndPoint is updated after calling SendToAsync | ✔️ | ❌ |
MulticastOption.Group doesn't accept null | ✔️ | ❌ |
Streams allow successive Begin operations | ❌ | ✔️ |
WinHttpHandler removed from .NET runtime | ❌ | ✔️ |
SDK
Security
Title | Binary compatible | Source compatible |
---|---|---|
Code access security APIs are obsolete | ✔️ | ❌ |
PrincipalPermissionAttribute is obsolete | ✔️ | ❌ |
UTF-7 code paths are obsolete | ✔️ | ❌ |
Serialization
Windows Forms
Title | Binary compatible | Source compatible |
---|---|---|
Native code can't access Windows Forms objects | ✔️ | ❌ |
OutputType set to WinExe | ❌ | ✔️ |
DataGridView doesn't reset custom fonts | ✔️ | ❌ |
Methods throw ArgumentException | ✔️ | ❌ |
Methods throw ArgumentNullException | ✔️ | ❌ |
Properties throw ArgumentOutOfRangeException | ✔️ | ❌ |
TextFormatFlags.ModifyString is obsolete | ✔️ | ❌ |
DataGridView APIs throw InvalidOperationException | ✔️ | ❌ |
WinForms apps use Microsoft.NET.Sdk | ❌ | ✔️ |
Removed status bar controls | ✔️ | ❌ |
WPF
Title | Binary compatible | Source compatible |
---|---|---|
OutputType set to WinExe | ❌ | ✔️ |
WPF apps use Microsoft.NET.Sdk | ❌ | ✔️ |
See also
Collaborate with us on GitHub
The source for this content can be found on GitHub, where you can also create and review issues and pull requests. For more information, see our contributor guide.