@@ -17,58 +17,59 @@ If you're migrating an app to .NET 9, the breaking changes listed here might aff
1717
1818## ASP.NET Core
1919
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 |
2727
2828## Containers
2929
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 |
3434
3535## Core .NET libraries
3636
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 |
5859
5960## Cryptography
6061
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 |
6667
6768## Deployment
6869
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 |
7273
7374## Interop
7475
@@ -85,30 +86,30 @@ If you're migrating an app to .NET 9, the breaking changes listed here might aff
8586
8687## Networking
8788
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 |
9798
9899## SDK and MSBuild
99100
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 |
112113
113114## Serialization
114115
0 commit comments