@@ -17,58 +17,59 @@ If you're migrating an app to .NET 9, the breaking changes listed here might aff
17
17
18
18
## ASP.NET Core
19
19
20
- | Title | Type of change | Introduced version |
21
- | ------------------------------------------------------------------------------------------| ---------------------| --------------------|
22
- | [ DefaultKeyResolution.ShouldGenerateNewKey has altered meaning] ( aspnet-core/9.0/key-resolution.md ) | Behavioral change | Preview 3 |
23
- | [ Dev cert export no longer creates folder] ( aspnet-core/9.0/certificate-export.md ) | Behavioral change | RC 1 |
24
- | [ HostBuilder enables ValidateOnBuild/ValidateScopes in development environment] ( aspnet-core/9.0/hostbuilder-validation.md ) | Behavioral change | Preview 7 |
25
- | [ Legacy Mono and Emscripten APIs not exported to global namespace] ( aspnet-core/9.0/legacy-apis.md ) | Source incompatible | GA |
26
- | [ Middleware types with multiple constructors] ( aspnet-core/9.0/middleware-constructors.md ) | Behavioral change | RC 1 |
20
+ | Title | Type of change | Introduced version |
21
+ | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------| --------------------|
22
+ | [ DefaultKeyResolution.ShouldGenerateNewKey has altered meaning] ( aspnet-core/9.0/key-resolution.md ) | Behavioral change | Preview 3 |
23
+ | [ Dev cert export no longer creates folder] ( aspnet-core/9.0/certificate-export.md ) | Behavioral change | RC 1 |
24
+ | [ HostBuilder enables ValidateOnBuild/ValidateScopes in development environment] ( aspnet-core/9.0/hostbuilder-validation.md ) | Behavioral change | Preview 7 |
25
+ | [ Legacy Mono and Emscripten APIs not exported to global namespace] ( aspnet-core/9.0/legacy-apis.md ) | Source incompatible | GA |
26
+ | [ Middleware types with multiple constructors] ( aspnet-core/9.0/middleware-constructors.md ) | Behavioral change | RC 1 |
27
27
28
28
## Containers
29
29
30
- | Title | Type of change | Introduced version |
31
- | -----------------------------------------------------------------------------| -------------------| --------------------|
32
- | [ Container images no longer install zlib] ( containers/9.0/no-zlib.md ) | Behavioral change | Preview 7 |
33
- | [ .NET Monitor images simplified to version-only tags] ( containers/9.0/monitor-images.md ) | Behavioral change | Preview 5 |
30
+ | Title | Type of change | Introduced version |
31
+ | ----------------------------------------------------------------------------------------- | -------------------| --------------------|
32
+ | [ Container images no longer install zlib] ( containers/9.0/no-zlib.md ) | Behavioral change | Preview 7 |
33
+ | [ .NET Monitor images simplified to version-only tags] ( containers/9.0/monitor-images.md ) | Behavioral change | Preview 5 |
34
34
35
35
## Core .NET libraries
36
36
37
- | Title | Type of change | Introduced version |
38
- | ------------------------------------------------------------------------------------------| ---------------------| --------------------|
39
- | [ Adding a ZipArchiveEntry with CompressionLevel sets ZIP central directory header general-purpose bit flags] ( core-libraries/9.0/compressionlevel-bits.md ) | Behavioral change | Preview 5 |
40
- | [ Altered UnsafeAccessor support for non-open generics] ( core-libraries/9.0/unsafeaccessor-generics.md ) | Behavioral change | Preview 6 |
41
- | [ API obsoletions with custom diagnostic IDs] ( core-libraries/9.0/obsolete-apis-with-custom-diagnostics.md ) | Source incompatible | (Multiple) |
42
- | [ BigInteger maximum length] ( core-libraries/9.0/biginteger-limit.md ) | Behavioral change | Preview 6 |
43
- | [ BinaryReader.GetString() returns "\uFFFD" on malformed sequences] ( core-libraries/9.0/binaryreader.md ) | Behavioral change | Preview 7 |
44
- | [ C# overload resolution prefers ` params ` span-type overloads] ( core-libraries/9.0/params-overloads.md ) | Source incompatible | |
45
- | [ Creating type of array of System.Void not allowed] ( core-libraries/9.0/type-instance.md ) | Behavioral change | Preview 1 |
46
- | [ Default ` Equals() ` and ` GetHashCode() ` throw for types marked with ` InlineArrayAttribute ` ] ( core-libraries/9.0/inlinearrayattribute.md ) | Behavioral change | Preview 6 |
47
- | [ EnumConverter validates registered types to be enum] ( core-libraries/9.0/enumconverter.md ) | Behavioral change | Preview 7 |
48
- | [ FromKeyedServicesAttribute no longer injects non-keyed parameter] ( core-libraries/9.0/non-keyed-params.md ) | Behavioral change | RC 1 |
49
- | [ IncrementingPollingCounter initial callback is asynchronous] ( core-libraries/9.0/async-callback.md ) | Behavioral change | RC 1 |
50
- | [ Inline array struct size limit is enforced] ( core-libraries/9.0/inlinearray-size.md ) | Behavioral change | Preview 1 |
51
- | [ InMemoryDirectoryInfo prepends rootDir to files] ( core-libraries/9.0/inmemorydirinfo-prepends-rootdir.md ) | Behavioral change | Preview 1 |
52
- | [ New TimeSpan.From* () overloads that take integers] ( core-libraries/9.0/timespan-from-overloads.md ) | Source incompatible | Preview 3 |
53
- | [ New version of some OOB packages] ( core-libraries/9.0/oob-packages.md ) | Source incompatible | Preview 5 |
54
- | [ RuntimeHelpers.GetSubArray returns different type] ( core-libraries/9.0/getsubarray-return.md ) | Behavioral change | Preview 1 |
55
- | [ String.Trim(params ReadOnlySpan\< char>) overload removed] ( core-libraries/9.0/string-trim.md ) | Source/binary incompatible | GA |
56
- | [ Support for empty environment variables] ( core-libraries/9.0/empty-env-variable.md ) | Behavioral change | Preview 6 |
57
- | [ ZipArchiveEntry names and comments respect UTF8 flag] ( core-libraries/9.0/ziparchiveentry-encoding.md ) | Behavioral change | RC 1 |
37
+ | Title | Type of change | Introduced version |
38
+ | -----------------------------------------------------------------------------------------------------------------------------------------------------------| ----------------------------| --------------------|
39
+ | [ Adding a ZipArchiveEntry with CompressionLevel sets ZIP central directory header general-purpose bit flags] ( core-libraries/9.0/compressionlevel-bits.md ) | Behavioral change | Preview 5 |
40
+ | [ Altered UnsafeAccessor support for non-open generics] ( core-libraries/9.0/unsafeaccessor-generics.md ) | Behavioral change | Preview 6 |
41
+ | [ API obsoletions with custom diagnostic IDs] ( core-libraries/9.0/obsolete-apis-with-custom-diagnostics.md ) | Source incompatible | (Multiple) |
42
+ | [ Ambiguous overload resolution affecting StringValues implicit operators] ( core-libraries/9.0/ambiguous-overload.md ) | Source incompatible | GA |
43
+ | [ BigInteger maximum length] ( core-libraries/9.0/biginteger-limit.md ) | Behavioral change | Preview 6 |
44
+ | [ BinaryReader.GetString() returns "\uFFFD" on malformed sequences] ( core-libraries/9.0/binaryreader.md ) | Behavioral change | Preview 7 |
45
+ | [ C# overload resolution prefers ` params ` span-type overloads] ( core-libraries/9.0/params-overloads.md ) | Source incompatible | |
46
+ | [ Creating type of array of System.Void not allowed] ( core-libraries/9.0/type-instance.md ) | Behavioral change | Preview 1 |
47
+ | [ Default ` Equals() ` and ` GetHashCode() ` throw for types marked with ` InlineArrayAttribute ` ] ( core-libraries/9.0/inlinearrayattribute.md ) | Behavioral change | Preview 6 |
48
+ | [ EnumConverter validates registered types to be enum] ( core-libraries/9.0/enumconverter.md ) | Behavioral change | Preview 7 |
49
+ | [ FromKeyedServicesAttribute no longer injects non-keyed parameter] ( core-libraries/9.0/non-keyed-params.md ) | Behavioral change | RC 1 |
50
+ | [ IncrementingPollingCounter initial callback is asynchronous] ( core-libraries/9.0/async-callback.md ) | Behavioral change | RC 1 |
51
+ | [ Inline array struct size limit is enforced] ( core-libraries/9.0/inlinearray-size.md ) | Behavioral change | Preview 1 |
52
+ | [ InMemoryDirectoryInfo prepends rootDir to files] ( core-libraries/9.0/inmemorydirinfo-prepends-rootdir.md ) | Behavioral change | Preview 1 |
53
+ | [ New TimeSpan.From* () overloads that take integers] ( core-libraries/9.0/timespan-from-overloads.md ) | Source incompatible | Preview 3 |
54
+ | [ New version of some OOB packages] ( core-libraries/9.0/oob-packages.md ) | Source incompatible | Preview 5 |
55
+ | [ RuntimeHelpers.GetSubArray returns different type] ( core-libraries/9.0/getsubarray-return.md ) | Behavioral change | Preview 1 |
56
+ | [ String.Trim(params ReadOnlySpan\< char>) overload removed] ( core-libraries/9.0/string-trim.md ) | Source/binary incompatible | GA |
57
+ | [ Support for empty environment variables] ( core-libraries/9.0/empty-env-variable.md ) | Behavioral change | Preview 6 |
58
+ | [ ZipArchiveEntry names and comments respect UTF8 flag] ( core-libraries/9.0/ziparchiveentry-encoding.md ) | Behavioral change | RC 1 |
58
59
59
60
## Cryptography
60
61
61
- | Title | Type of change | Introduced version |
62
- | -------| ----------------| --------------------|
63
- | [ SafeEvpPKeyHandle.DuplicateHandle up-refs the handle] ( cryptography/9.0/evp-pkey-handle.md ) | Behavioral change | Preview 7 |
64
- | [ Some X509Certificate2 and X509Certificate constructors are obsolete] ( cryptography/9.0/x509-certificates.md ) | Source incompatible | Preview 7 |
65
- | [ Windows private key lifetime simplified] ( cryptography/9.0/private-key-lifetime.md ) | Behavioral change | Preview 7 |
62
+ | Title | Type of change | Introduced version |
63
+ | -------------------------------------------------------------------------------------------------------------- | ----- ----------------| --------------------|
64
+ | [ SafeEvpPKeyHandle.DuplicateHandle up-refs the handle] ( cryptography/9.0/evp-pkey-handle.md ) | Behavioral change | Preview 7 |
65
+ | [ Some X509Certificate2 and X509Certificate constructors are obsolete] ( cryptography/9.0/x509-certificates.md ) | Source incompatible | Preview 7 |
66
+ | [ Windows private key lifetime simplified] ( cryptography/9.0/private-key-lifetime.md ) | Behavioral change | Preview 7 |
66
67
67
68
## Deployment
68
69
69
- | Title | Type of change | Introduced version |
70
- | -----------------------------------------------------------------------------------| ---------------------| --------------------|
71
- | [ Deprecated desktop Windows/macOS/Linux MonoVM runtime packages] ( deployment/9.0/monovm-packages.md ) | Source incompatible | Preview 7 |
70
+ | Title | Type of change | Introduced version |
71
+ | ----------------------------------------------------------------------------------------------------- | ---------------------| --------------------|
72
+ | [ Deprecated desktop Windows/macOS/Linux MonoVM runtime packages] ( deployment/9.0/monovm-packages.md ) | Source incompatible | Preview 7 |
72
73
73
74
## Interop
74
75
@@ -85,30 +86,30 @@ If you're migrating an app to .NET 9, the breaking changes listed here might aff
85
86
86
87
## Networking
87
88
88
- | Title | Type of change | Introduced version |
89
- | -----------------------------------------------------------------------------------| ---------------------| --------------------|
90
- | [ API obsoletions] ( core-libraries/9.0/obsolete-apis-with-custom-diagnostics.md ) | Source incompatible | Preview 6 |
91
- | [ HttpClient metrics report ` server.port ` unconditionally] ( networking/9.0/server-port-attribute.md ) | Behavioral change | Preview 7 |
92
- | [ HttpClientFactory logging redacts header values by default] ( networking/9.0/redact-headers.md ) | Behavioral change | RC 1 |
93
- | [ HttpClientFactory uses SocketsHttpHandler as primary handler] ( networking/9.0/default-handler.md ) | Behavioral change | Preview 6 |
94
- | [ HttpListenerRequest.UserAgent is nullable] ( networking/9.0/useragent-nullable.md ) | Source incompatible | Preview 1 |
95
- | [ URI query redaction in HttpClient EventSource events] ( networking/9.0/query-redaction-events.md ) | Behavioral change | Preview 7 |
96
- | [ URI query redaction in IHttpClientFactory logs] ( networking/9.0/query-redaction-logs.md ) | Behavioral change | Preview 7 |
89
+ | Title | Type of change | Introduced version |
90
+ | ---------------------------------------------------------------------------------------------------- | ---------------------| --------------------|
91
+ | [ API obsoletions] ( core-libraries/9.0/obsolete-apis-with-custom-diagnostics.md ) | Source incompatible | Preview 6 |
92
+ | [ HttpClient metrics report ` server.port ` unconditionally] ( networking/9.0/server-port-attribute.md ) | Behavioral change | Preview 7 |
93
+ | [ HttpClientFactory logging redacts header values by default] ( networking/9.0/redact-headers.md ) | Behavioral change | RC 1 |
94
+ | [ HttpClientFactory uses SocketsHttpHandler as primary handler] ( networking/9.0/default-handler.md ) | Behavioral change | Preview 6 |
95
+ | [ HttpListenerRequest.UserAgent is nullable] ( networking/9.0/useragent-nullable.md ) | Source incompatible | Preview 1 |
96
+ | [ URI query redaction in HttpClient EventSource events] ( networking/9.0/query-redaction-events.md ) | Behavioral change | Preview 7 |
97
+ | [ URI query redaction in IHttpClientFactory logs] ( networking/9.0/query-redaction-logs.md ) | Behavioral change | Preview 7 |
97
98
98
99
## SDK and MSBuild
99
100
100
- | Title | Type of change | Introduced version |
101
- | -------------------------------------------------------------------------------| -------------------| --------------------|
102
- | [ ` dotnet restore ` audits transitive packages] ( sdk/9.0/nugetaudit-transitive-packages.md ) | Behavioral change | Preview 6 |
103
- | [ ` dotnet sln add ` doesn't allow invalid file names] ( sdk/9.0/dotnet-sln.md ) | Behavioral change | 9.0.2xx |
104
- | [ ` dotnet watch ` incompatible with Hot Reload for old frameworks] ( sdk/9.0/dotnet-watch.md ) | Behavioral change | RC 1 |
105
- | [ ` dotnet workload ` commands output change] ( sdk/9.0/dotnet-workload-output.md ) | Behavioral change | Preview 1 |
106
- | [ ` installer ` repo version no longer documented] ( sdk/9.0/productcommits-versions.md ) | Behavioral change | Preview 5 |
107
- | [ New default RID used when targeting .NET Framework] ( sdk/9.0/default-rid.md ) | Source incompatible | GA |
108
- | [ Terminal logger is default] ( sdk/9.0/terminal-logger.md ) | Behavioral change | Preview 1 |
109
- | [ Version requirements for .NET 9 SDK] ( sdk/9.0/version-requirements.md ) | Source incompatible | GA |
110
- | [ Warning emitted for .NET Standard 1.x target] ( sdk/9.0/netstandard-warning.md ) | Source incompatible | Preview 6 |
111
- | [ Warning emitted for .NET 7 target] ( sdk/9.0/net70-warning.md ) | Source incompatible | GA |
101
+ | Title | Type of change | Introduced version |
102
+ | ------------------------------------------------------------------------------------------- | -- -------------------| --------------------|
103
+ | [ ` dotnet restore ` audits transitive packages] ( sdk/9.0/nugetaudit-transitive-packages.md ) | Behavioral change | Preview 6 |
104
+ | [ ` dotnet sln add ` doesn't allow invalid file names] ( sdk/9.0/dotnet-sln.md ) | Behavioral change | 9.0.2xx |
105
+ | [ ` dotnet watch ` incompatible with Hot Reload for old frameworks] ( sdk/9.0/dotnet-watch.md ) | Behavioral change | RC 1 |
106
+ | [ ` dotnet workload ` commands output change] ( sdk/9.0/dotnet-workload-output.md ) | Behavioral change | Preview 1 |
107
+ | [ ` installer ` repo version no longer documented] ( sdk/9.0/productcommits-versions.md ) | Behavioral change | Preview 5 |
108
+ | [ New default RID used when targeting .NET Framework] ( sdk/9.0/default-rid.md ) | Source incompatible | GA |
109
+ | [ Terminal logger is default] ( sdk/9.0/terminal-logger.md ) | Behavioral change | Preview 1 |
110
+ | [ Version requirements for .NET 9 SDK] ( sdk/9.0/version-requirements.md ) | Source incompatible | GA |
111
+ | [ Warning emitted for .NET Standard 1.x target] ( sdk/9.0/netstandard-warning.md ) | Source incompatible | Preview 6 |
112
+ | [ Warning emitted for .NET 7 target] ( sdk/9.0/net70-warning.md ) | Source incompatible | GA |
112
113
113
114
## Serialization
114
115
0 commit comments