diff --git a/docs/core/compatibility/7.0.md b/docs/core/compatibility/7.0.md index a128ffe432d82..43307543e7472 100644 --- a/docs/core/compatibility/7.0.md +++ b/docs/core/compatibility/7.0.md @@ -9,77 +9,77 @@ no-loc: [Blazor, Razor, Kestrel] 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. -[!INCLUDE [binary-source-compat](includes/binary-source-compat.md)] +[!INCLUDE [binary-source-behavioral](includes/binary-source-behavioral.md)] ## ASP.NET Core -| Title | Binary compatible | Source compatible | -|-------|:-----------------:|:-----------------:| -| [API controller actions try to infer parameters from DI](aspnet-core/7.0/api-controller-action-parameters-di.md) | ✔️ | ❌ | -| [ASPNET-prefixed environment variable precedence](aspnet-core/7.0/environment-variable-precedence.md) | ✔️ | ✔️ | -| [AuthenticateAsync for remote auth providers](aspnet-core/7.0/authenticateasync-anonymous-request.md) | ✔️ | ❌ | -| [Authentication in WebAssembly apps](aspnet-core/7.0/wasm-app-authentication.md) | ❌ | ✔️ | -| [Default authentication scheme](aspnet-core/7.0/default-authentication-scheme.md) | ❌ | ✔️ | -| [Event IDs for some Microsoft.AspNetCore.Mvc.Core log messages changed](aspnet-core/7.0/microsoft-aspnetcore-mvc-core-log-event-ids.md) | ❌ | ✔️ | -| [Fallback file endpoints](aspnet-core/7.0/fallback-file-endpoints.md) | ❌ | ✔️ | -| [IHubClients and IHubCallerClients hide members](aspnet-core/7.0/ihubclients-ihubcallerclients.md) | ✔️ | ❌ | -| [Kestrel: Default HTTPS binding removed](aspnet-core/7.0/https-binding-kestrel.md) | ❌ | ✔️ | -| [Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv and libuv.dll removed](aspnet-core/7.0/libuv-transport-dll-removed.md) | ❌ | ❌ | -| [Microsoft.Data.SqlClient updated to 4.0.1](aspnet-core/7.0/microsoft-data-sqlclient-updated-to-4-0-1.md) | ✔️ | ❌ | -| [Middleware no longer defers to endpoint with null request delegate](aspnet-core/7.0/middleware-null-requestdelegate.md) | ❌ | ✔️ | -| [MVC's detection of an empty body in model binding changed](aspnet-core/7.0/mvc-empty-body-model-binding.md) | ❌ | ✔️ | -| [Output caching API changes](aspnet-core/7.0/output-caching-renames.md) | ❌ | ❌ | -| [SignalR Hub methods try to resolve parameters from DI](aspnet-core/7.0/signalr-hub-method-parameters-di.md) | ✔️ | ❌ | +| Title | Type of change | +|-----------------------------------------------------------------------------------------------------------------------------------------|:--------------------------:| +| [API controller actions try to infer parameters from DI](aspnet-core/7.0/api-controller-action-parameters-di.md) | Source incompatible | +| [ASPNET-prefixed environment variable precedence](aspnet-core/7.0/environment-variable-precedence.md) | Behavioral change | +| [AuthenticateAsync for remote auth providers](aspnet-core/7.0/authenticateasync-anonymous-request.md) | Source incompatible | +| [Authentication in WebAssembly apps](aspnet-core/7.0/wasm-app-authentication.md) | Binary incompatible | +| [Default authentication scheme](aspnet-core/7.0/default-authentication-scheme.md) | Binary incompatible | +| [Event IDs for some Microsoft.AspNetCore.Mvc.Core log messages changed](aspnet-core/7.0/microsoft-aspnetcore-mvc-core-log-event-ids.md) | Binary incompatible | +| [Fallback file endpoints](aspnet-core/7.0/fallback-file-endpoints.md) | Binary incompatible | +| [IHubClients and IHubCallerClients hide members](aspnet-core/7.0/ihubclients-ihubcallerclients.md) | Source incompatible | +| [Kestrel: Default HTTPS binding removed](aspnet-core/7.0/https-binding-kestrel.md) | Binary incompatible | +| [Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv and libuv.dll removed](aspnet-core/7.0/libuv-transport-dll-removed.md) | Binary/source incompatible | +| [Microsoft.Data.SqlClient updated to 4.0.1](aspnet-core/7.0/microsoft-data-sqlclient-updated-to-4-0-1.md) | Source incompatible | +| [Middleware no longer defers to endpoint with null request delegate](aspnet-core/7.0/middleware-null-requestdelegate.md) | Binary incompatible | +| [MVC's detection of an empty body in model binding changed](aspnet-core/7.0/mvc-empty-body-model-binding.md) | Binary incompatible | +| [Output caching API changes](aspnet-core/7.0/output-caching-renames.md) | Binary/source incompatible | +| [SignalR Hub methods try to resolve parameters from DI](aspnet-core/7.0/signalr-hub-method-parameters-di.md) | Source incompatible | ## Core .NET libraries -| Title | Binary compatible | Source compatible | -|-------|:-----------------:|:-----------------:| -| [API obsoletions with default diagnostic ID](core-libraries/7.0/obsolete-apis-with-default-diagnostic.md) | ✔️ | ❌ | -| [API obsoletions with non-default diagnostic IDs](core-libraries/7.0/obsolete-apis-with-custom-diagnostics.md) | ✔️ | ❌ | -| [Asterisk no longer accepted for assembly name attributes](core-libraries/7.0/assembly-name-wildcard.md) | ✔️ | ✔️ | -| [BinaryFormatter serialization APIs produce compiler errors](serialization/7.0/binaryformatter-apis-produce-errors.md) | ✔️ | ❌ | -| [BrotliStream no longer allows undefined CompressionLevel values](core-libraries/7.0/brotlistream-ctor.md) | ❌ | ✔️ | -| [C++/CLI projects in Visual Studio](core-libraries/7.0/cpluspluscli-compiler-version.md) | ✔️ | ❌ | -| [Changes to reflection invoke API exceptions](core-libraries/7.0/reflection-invoke-exceptions.md) | ❌ | ✔️ | -| [Collectible Assembly in non-collectible AssemblyLoadContext](core-libraries/7.0/collectible-assemblies.md) | ❌ | ✔️ | -| [DateTime addition methods precision change](core-libraries/7.0/datetime-add-precision.md) | ✔️ | ✔️ | -| [Equals method behavior change for NaN](core-libraries/7.0/equals-nan.md) | ❌ | ✔️ | -| [EventSource callback behavior](core-libraries/6.0/eventsource-callback.md) | ✔️ | ✔️ | -| [Generic type constraint on PatternContext\](core-libraries/7.0/patterncontext-generic-constraint.md) | ❌ | ❌ | -| [Legacy FileStream strategy removed](core-libraries/7.0/filestream-compat-switch.md) | ❌ | ✔️ | -| [Library support for older frameworks](core-libraries/7.0/old-framework-support.md) | ❌ | ❌ | -| [Maximum precision for numeric format strings](core-libraries/7.0/max-precision-numeric-format-strings.md) | ❌ | ✔️ | -| [Regex patterns with ranges corrected](core-libraries/7.0/regex-ranges.md) | ✔️ | ✔️ | -| [SerializationFormat.Binary is obsolete](serialization/7.0/serializationformat-binary.md) | ❌ | ❌ | -| [System.Drawing.Common config switch removed](core-libraries/7.0/system-drawing.md) | ✔️ | ✔️ | -| [System.Runtime.CompilerServices.Unsafe NuGet package](core-libraries/7.0/unsafe-package.md) | ✔️ | ✔️ | -| [Time fields on symbolic links](core-libraries/7.0/symbolic-link-timestamps.md) | ❌ | ✔️ | -| [Tracking linked cache entries](core-libraries/7.0/memorycache-tracking.md) | ❌ | ✔️ | -| [Validate CompressionLevel for BrotliStream](core-libraries/7.0/compressionlevel-validation.md) | ❌ | ✔️ | +| Title | Type of change | +|------------------------------------------------------------------------------------------------------------------------|:--------------------------:| +| [API obsoletions with default diagnostic ID](core-libraries/7.0/obsolete-apis-with-default-diagnostic.md) | Source incompatible | +| [API obsoletions with non-default diagnostic IDs](core-libraries/7.0/obsolete-apis-with-custom-diagnostics.md) | Source incompatible | +| [Asterisk no longer accepted for assembly name attributes](core-libraries/7.0/assembly-name-wildcard.md) | Behavioral change | +| [BinaryFormatter serialization APIs produce compiler errors](serialization/7.0/binaryformatter-apis-produce-errors.md) | Source incompatible | +| [BrotliStream no longer allows undefined CompressionLevel values](core-libraries/7.0/brotlistream-ctor.md) | Binary incompatible | +| [C++/CLI projects in Visual Studio](core-libraries/7.0/cpluspluscli-compiler-version.md) | Source incompatible | +| [Changes to reflection invoke API exceptions](core-libraries/7.0/reflection-invoke-exceptions.md) | Binary incompatible | +| [Collectible Assembly in non-collectible AssemblyLoadContext](core-libraries/7.0/collectible-assemblies.md) | Binary incompatible | +| [DateTime addition methods precision change](core-libraries/7.0/datetime-add-precision.md) | Behavioral change | +| [Equals method behavior change for NaN](core-libraries/7.0/equals-nan.md) | Binary incompatible | +| [EventSource callback behavior](core-libraries/6.0/eventsource-callback.md) | Behavioral change | +| [Generic type constraint on PatternContext\](core-libraries/7.0/patterncontext-generic-constraint.md) | Binary/source incompatible | +| [Legacy FileStream strategy removed](core-libraries/7.0/filestream-compat-switch.md) | Binary incompatible | +| [Library support for older frameworks](core-libraries/7.0/old-framework-support.md) | Binary/source incompatible | +| [Maximum precision for numeric format strings](core-libraries/7.0/max-precision-numeric-format-strings.md) | Binary incompatible | +| [Regex patterns with ranges corrected](core-libraries/7.0/regex-ranges.md) | Behavioral change | +| [SerializationFormat.Binary is obsolete](serialization/7.0/serializationformat-binary.md) | Binary/source incompatible | +| [System.Drawing.Common config switch removed](core-libraries/7.0/system-drawing.md) | Behavioral change | +| [System.Runtime.CompilerServices.Unsafe NuGet package](core-libraries/7.0/unsafe-package.md) | Behavioral change | +| [Time fields on symbolic links](core-libraries/7.0/symbolic-link-timestamps.md) | Binary incompatible | +| [Tracking linked cache entries](core-libraries/7.0/memorycache-tracking.md) | Binary incompatible | +| [Validate CompressionLevel for BrotliStream](core-libraries/7.0/compressionlevel-validation.md) | Binary incompatible | ## Configuration -| Title | Binary compatible | Source compatible | -| - | :-: | :-: | -| [System.diagnostics entry in app.config](configuration/7.0/diagnostics-config-section.md) | ❌ | ✔️ | +| Title | Type of change | +|-------------------------------------------------------------------------------------------|:-------------------:| +| [System.diagnostics entry in app.config](configuration/7.0/diagnostics-config-section.md) | Binary incompatible | ## Cryptography -| Title | Binary compatible | Source compatible | -| - | :-: | :-: | -| [Decrypting EnvelopedCms doesn't double unwrap](cryptography/7.0/decrypt-envelopedcms.md) | ❌ | ✔️ | -| [Dynamic X509ChainPolicy verification time](cryptography/7.0/x509chainpolicy-verification-time.md) | ❌ | ✔️ | -| [X500DistinguishedName parsing of friendly names](cryptography/7.0/x500-distinguished-names.md) | ❌ | ✔️ | +| Title | Type of change | +|----------------------------------------------------------------------------------------------------|:-------------------:| +| [Decrypting EnvelopedCms doesn't double unwrap](cryptography/7.0/decrypt-envelopedcms.md) | Binary incompatible | +| [Dynamic X509ChainPolicy verification time](cryptography/7.0/x509chainpolicy-verification-time.md) | Binary incompatible | +| [X500DistinguishedName parsing of friendly names](cryptography/7.0/x500-distinguished-names.md) | Binary incompatible | ## Deployment -| Title | Binary compatible | Source compatible | -| - | :-: | :-: | -| [All assemblies trimmed by default](deployment/7.0/trim-all-assemblies.md) | ✔️ | ❌ | -| [Multi-level lookup is disabled](deployment/7.0/multilevel-lookup.md) | ❌ | ✔️ | -| [x86 host path on 64-bit Windows](deployment/7.0/x86-host-path.md) | ✔️ | ✔️ | -| [TrimmerDefaultAction is deprecated](deployment/7.0/deprecated-trimmer-default-action.md) | ✔️ | ❌ | +| Title | Type of change | +|-------------------------------------------------------------------------------------------|:-------------------:| +| [All assemblies trimmed by default](deployment/7.0/trim-all-assemblies.md) | Source incompatible | +| [Multi-level lookup is disabled](deployment/7.0/multilevel-lookup.md) | Binary incompatible | +| [x86 host path on 64-bit Windows](deployment/7.0/x86-host-path.md) | Behavioral change | +| [TrimmerDefaultAction is deprecated](deployment/7.0/deprecated-trimmer-default-action.md) | Source incompatible | ## Entity Framework Core @@ -87,87 +87,86 @@ If you're migrating an app to .NET 7, the breaking changes listed here might aff ## Extensions -| Title | Binary compatible | Source compatible | -| - | :-: | :-: | -| [Binding config to dictionary extends values](extensions/7.0/config-bind-dictionary.md) | ✔️ | ✔️ | -| [ContentRootPath for apps launched by Windows Shell](extensions/7.0/contentrootpath-hosted-app.md) | ❌ | ✔️ | -| [Environment variable prefixes](extensions/7.0/environment-variable-prefix.md) | ❌ | ✔️ | +| Title | Type of change | +|----------------------------------------------------------------------------------------------------|:-------------------:| +| [Binding config to dictionary extends values](extensions/7.0/config-bind-dictionary.md) | Behavioral change | +| [ContentRootPath for apps launched by Windows Shell](extensions/7.0/contentrootpath-hosted-app.md) | Binary incompatible | +| [Environment variable prefixes](extensions/7.0/environment-variable-prefix.md) | Binary incompatible | ## Globalization -| Title | Binary compatible | Source compatible | -| - | :-: | :-: | -| [Globalization APIs use ICU libraries on Windows Server](globalization/7.0/icu-globalization-api.md) | ❌ | ✔️ | +| Title | Type of change | +|------------------------------------------------------------------------------------------------------|:-------------------:| +| [Globalization APIs use ICU libraries on Windows Server](globalization/7.0/icu-globalization-api.md) | Binary incompatible | ## Interop -| Title | Binary compatible | Source compatible | -| - | :-: | :-: | -| [RuntimeInformation.OSArchitecture under emulation](interop/7.0/osarchitecture-emulation.md) | ❌ | ✔️ | +| Title | Type of change | +|----------------------------------------------------------------------------------------------|:-------------------:| +| [RuntimeInformation.OSArchitecture under emulation](interop/7.0/osarchitecture-emulation.md) | Binary incompatible | ## .NET MAUI -| Title | Binary compatible | Source compatible | -| - | :-: | :-: | -| [Constructors accept base interface instead of concrete type](maui/7.0/mauiwebviewnavigationdelegate-constructor.md) | ❌ | ✔️ | -| [Flow direction helper methods removed](maui/7.0/flow-direction-apis-removed.md) | ❌ | ❌ | -| [New UpdateBackground parameter](maui/7.0/updatebackground-parameter.md) | ❌ | ✔️ | -| [ScrollToRequest property renamed](maui/7.0/scrolltorequest-property-rename.md) | ❌ | ❌ | -| [Some Windows APIs are removed](maui/7.0/iwindowstatemanager-apis-removed.md) | ❌ | ❌ | +| Title | Type of change | +|----------------------------------------------------------------------------------------------------------------------|:--------------------------:| +| [Constructors accept base interface instead of concrete type](maui/7.0/mauiwebviewnavigationdelegate-constructor.md) | Binary incompatible | +| [Flow direction helper methods removed](maui/7.0/flow-direction-apis-removed.md) | Binary/source incompatible | +| [New UpdateBackground parameter](maui/7.0/updatebackground-parameter.md) | Binary incompatible | +| [ScrollToRequest property renamed](maui/7.0/scrolltorequest-property-rename.md) | Binary/source incompatible | +| [Some Windows APIs are removed](maui/7.0/iwindowstatemanager-apis-removed.md) | Binary/source incompatible | ## Networking -| Title | Binary compatible | Source compatible | -| - | :-: | :-: | -| [AllowRenegotiation default is false](networking/7.0/allowrenegotiation-default.md) | ❌ | ❌ | -| [Custom ping payloads on Linux](networking/7.0/ping-custom-payload-linux.md) | ❌ | ✔️ | -| [Socket.End methods don't throw ObjectDisposedException](networking/7.0/socket-end-closed-sockets.md) | ❌ | ✔️ | +| Title | Type of change | +|-------------------------------------------------------------------------------------------------------|:--------------------------:| +| [AllowRenegotiation default is false](networking/7.0/allowrenegotiation-default.md) | Binary/source incompatible | +| [Custom ping payloads on Linux](networking/7.0/ping-custom-payload-linux.md) | Binary incompatible | +| [Socket.End methods don't throw ObjectDisposedException](networking/7.0/socket-end-closed-sockets.md) | Binary incompatible | ## SDK and MSBuild -| Title | Binary compatible | Source compatible | -| - | :-: | :-: | -| [Automatic RuntimeIdentifier for certain projects](sdk/7.0/automatic-runtimeidentifier.md) | ✔️ | ❌ | -| [Automatic RuntimeIdentifier for publish only](sdk/7.0/automatic-rid-publish-only.md) | ❌ | ❌ | -| [CLI console output uses UTF-8](sdk/8.0/console-encoding.md) | ❌ | ❌ | -| [Console encoding not UTF-8 after completion](sdk/8.0/console-encoding-fix.md) | ❌ | ✔️ | -| [MSBuild serialization of custom types in .NET 7](sdk/7.0/custom-serialization.md) | ❌ | ❌ | -| [Side-by-side SDK installations](sdk/7.0/side-by-side-install.md) | ❌ | ❌ | -| [Tool manifests in root folder](sdk/7.0/manifest-search.md) | ✔️ | ✔️ | -| [Version requirements for .NET 7 SDK](sdk/7.0/vs-msbuild-version.md) | ✔️ | ✔️ | -| [dotnet test: switch `-a` to alias `--arch` instead of `--test-adapter-path`](https://github.com/dotnet/sdk/issues/21389) | ❌ | ❌ | -| [dotnet test: switch `-r` to alias `--runtime` instead of `--results-dir`](https://github.com/dotnet/sdk/issues/21952) | ❌ | ❌ | -| [`--output` option no longer is valid for solution-level commands](sdk/7.0/solution-level-output-no-longer-valid.md) | ❌ | ❌ | -| [SDK no longer calls ResolvePackageDependencies](sdk/7.0/resolvepackagedependencies.md) | ✔️ | ❌ | +| Title | Type of change | +|---------------------------------------------------------------------------------------------------------------------------|:--------------------------:| +| [Automatic RuntimeIdentifier for publish only](sdk/7.0/automatic-rid-publish-only.md) | Binary/source incompatible | +| [CLI console output uses UTF-8](sdk/8.0/console-encoding.md) | Binary/source incompatible | +| [Console encoding not UTF-8 after completion](sdk/8.0/console-encoding-fix.md) | Binary incompatible | +| [MSBuild serialization of custom types in .NET 7](sdk/7.0/custom-serialization.md) | Binary/source incompatible | +| [Side-by-side SDK installations](sdk/7.0/side-by-side-install.md) | Binary/source incompatible | +| [Tool manifests in root folder](sdk/7.0/manifest-search.md) | Behavioral change | +| [Version requirements for .NET 7 SDK](sdk/7.0/vs-msbuild-version.md) | Behavioral change | +| [dotnet test: switch `-a` to alias `--arch` instead of `--test-adapter-path`](https://github.com/dotnet/sdk/issues/21389) | Binary/source incompatible | +| [dotnet test: switch `-r` to alias `--runtime` instead of `--results-dir`](https://github.com/dotnet/sdk/issues/21952) | Binary/source incompatible | +| [`--output` option no longer is valid for solution-level commands](sdk/7.0/solution-level-output-no-longer-valid.md) | Binary/source incompatible | +| [SDK no longer calls ResolvePackageDependencies](sdk/7.0/resolvepackagedependencies.md) | Source incompatible | ## Serialization -| Title | Binary compatible | Source compatible | -| - | :-: | :-: | -| [DataContractSerializer retains sign when deserializing -0](serialization/7.0/datacontractserializer-negative-sign.md) | ❌ | ✔️ | -| [Deserialize Version type with leading or trailing whitespace](serialization/7.0/deserialize-version-with-whitespace.md) | ❌ | ✔️ | -| [JsonSerializerOptions copy constructor includes JsonSerializerContext](serialization/7.0/jsonserializeroptions-copy-constructor.md) | ❌ | ✔️ | -| [Polymorphic serialization for object types](serialization/7.0/polymorphic-serialization.md) | ❌ | ✔️ | -| [System.Text.Json source generator fallback](serialization/7.0/reflection-fallback.md) | ❌ | ✔️ | +| Title | Type of change | +|--------------------------------------------------------------------------------------------------------------------------------------|:-------------------:| +| [DataContractSerializer retains sign when deserializing -0](serialization/7.0/datacontractserializer-negative-sign.md) | Binary incompatible | +| [Deserialize Version type with leading or trailing whitespace](serialization/7.0/deserialize-version-with-whitespace.md) | Binary incompatible | +| [JsonSerializerOptions copy constructor includes JsonSerializerContext](serialization/7.0/jsonserializeroptions-copy-constructor.md) | Binary incompatible | +| [Polymorphic serialization for object types](serialization/7.0/polymorphic-serialization.md) | Binary incompatible | +| [System.Text.Json source generator fallback](serialization/7.0/reflection-fallback.md) | Binary incompatible | ## Windows Forms -| Title | Binary compatible | Source compatible | -| - | :-: | :-: | -| [Obsoletions and warnings](windows-forms/7.0/obsolete-apis.md) | ✔️ | ❌ | -| [Some APIs throw ArgumentNullException](windows-forms/7.0/apis-throw-argumentnullexception.md) | ❌ | ✔️ | +| Title | Type of change | +|------------------------------------------------------------------------------------------------|:-------------------:| +| [Obsoletions and warnings](windows-forms/7.0/obsolete-apis.md) | Source incompatible | +| [Some APIs throw ArgumentNullException](windows-forms/7.0/apis-throw-argumentnullexception.md) | Binary incompatible | ## WPF -| Title | Binary compatible | Source compatible | Backwards compatible | -| - | :-: | :-: | :-: | -| [Restored drag-and-drop operations behavior on text editors](wpf/7.0/drag-and-drop.md) | ✔️ | ✔️ | ❌ | +| Title | Type of change | +|----------------------------------------------------------------------------------------|:-----------------:| +| [Restored drag-and-drop operations behavior on text editors](wpf/7.0/drag-and-drop.md) | Behavioral change | ## XML and XSLT -| Title | Binary compatible | Source compatible | -| - | :-: | :-: | -| [XmlSecureResolver is obsolete](xml/7.0/xmlsecureresolver-obsolete.md) | ❌ | ❌ | +| Title | Type of change | +|------------------------------------------------------------------------|:--------------------------:| +| [XmlSecureResolver is obsolete](xml/7.0/xmlsecureresolver-obsolete.md) | Binary/source incompatible | ## See also