Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 10 additions & 13 deletions docs/azure/includes/dotnet-all.md

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/azure/includes/dotnet-new.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
| Conversational Language Understanding | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.Language.Conversations/1.1.0)<br>NuGet [2.0.0-beta.3](https://www.nuget.org/packages/Azure.AI.Language.Conversations/2.0.0-beta.3) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_1.1.0/sdk/cognitivelanguage/Azure.AI.Language.Conversations/)<br>GitHub [2.0.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_2.0.0-beta.3/sdk/cognitivelanguage/Azure.AI.Language.Conversations/) |
| Conversations Authoring | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Language.Conversations.Authoring/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations.Authoring-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [1.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations.Authoring_1.0.0-beta.2/sdk/cognitivelanguage/Azure.AI.Language.Conversations.Authoring/) |
| Core - Client - AMQP | NuGet [1.3.1](https://www.nuget.org/packages/Azure.Core.Amqp/1.3.1) | [docs](/dotnet/api/overview/azure/Core.Amqp-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core.Amqp_1.3.1/sdk/core/Azure.Core.Amqp/) |
| Core - Client - Core | NuGet [1.47.3](https://www.nuget.org/packages/Azure.Core/1.47.3) | [docs](/dotnet/api/overview/azure/Core-readme) | GitHub [1.47.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core_1.47.3/sdk/core/Azure.Core/) |
| Core - Client - Core | NuGet [1.48.0](https://www.nuget.org/packages/Azure.Core/1.48.0) | [docs](/dotnet/api/overview/azure/Core-readme) | GitHub [1.48.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core_1.48.0/sdk/core/Azure.Core/) |
| Core Newtonsoft Json | NuGet [2.0.0](https://www.nuget.org/packages/Microsoft.Azure.Core.NewtonsoftJson/2.0.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.Core.NewtonsoftJson-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.Core.NewtonsoftJson_2.0.0/sdk/core/Microsoft.Azure.Core.NewtonsoftJson/) |
| Core WCF Storage Queues | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Microsoft.CoreWCF.Azure.StorageQueues/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Microsoft.CoreWCF.Azure.StorageQueues-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.CoreWCF.Azure.StorageQueues_1.0.0-beta.1/sdk/extension-wcf/Microsoft.CoreWCF.Azure.StorageQueues/) |
| Data Movement | NuGet [12.2.1](https://www.nuget.org/packages/Azure.Storage.DataMovement/12.2.1) | [docs](/dotnet/api/overview/azure/Storage.DataMovement-readme) | GitHub [12.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.DataMovement_12.2.1/sdk/storage/Azure.Storage.DataMovement/) |
Expand Down Expand Up @@ -266,7 +266,7 @@
| Resource Management - Event Grid | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.EventGrid/1.1.0)<br>NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.EventGrid/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.EventGrid-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EventGrid_1.1.0/sdk/eventgrid/Azure.ResourceManager.EventGrid/)<br>GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EventGrid_1.2.0-beta.2/sdk/eventgrid/Azure.ResourceManager.EventGrid/) |
| Resource Management - Event Hubs | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.EventHubs/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.EventHubs-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EventHubs_1.2.0/sdk/eventhub/Azure.ResourceManager.EventHubs/) |
| Resource Management - Extended Location | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ExtendedLocations/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ExtendedLocations-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ExtendedLocations_1.1.1/sdk/extendedlocation/Azure.ResourceManager.ExtendedLocations/) |
| Resource Management - Fabric | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.Fabric/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Fabric-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [1.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Fabric_1.0.0-beta.2/sdk/fabric/Azure.ResourceManager.Fabric/) |
| Resource Management - Fabric | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.Fabric/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Fabric-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Fabric_1.0.0/sdk/fabric/Azure.ResourceManager.Fabric/) |
| Resource Management - Fluid Relay | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.FluidRelay/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.FluidRelay-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.FluidRelay_1.1.1/sdk/fluidrelay/Azure.ResourceManager.FluidRelay/) |
| Resource Management - Front Door | NuGet [1.4.0](https://www.nuget.org/packages/Azure.ResourceManager.FrontDoor/1.4.0) | [docs](/dotnet/api/overview/azure/ResourceManager.FrontDoor-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.FrontDoor_1.4.0/sdk/frontdoor/Azure.ResourceManager.FrontDoor/) |
| Resource Management - Graph Services | NuGet [1.1.2](https://www.nuget.org/packages/Azure.ResourceManager.GraphServices/1.1.2) | [docs](/dotnet/api/overview/azure/ResourceManager.GraphServices-readme) | GitHub [1.1.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.GraphServices_1.1.2/sdk/graphservices/Azure.ResourceManager.GraphServices/) |
Expand Down
26 changes: 15 additions & 11 deletions docs/core/compatibility/10.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: Breaking changes in .NET 10
titleSuffix: ""
description: Navigate to the breaking changes in .NET 10.
ms.date: 08/08/2025
ms.date: 09/09/2025
ai-usage: ai-assisted
no-loc: [Blazor, Razor, Kestrel]
---
Expand All @@ -27,6 +27,7 @@ If you're migrating an app to .NET 10, the breaking changes listed here might af
| [IPNetwork and ForwardedHeadersOptions.KnownNetworks are obsolete](aspnet-core/10/ipnetwork-knownnetworks-obsolete.md) | Source incompatible | Preview 7 |
| [Microsoft.Extensions.ApiDescription.Client package deprecated](aspnet-core/10/apidescription-client-deprecated.md) | Source incompatible | Preview 7 |
| [Razor run-time compilation is obsolete](aspnet-core/10/razor-runtime-compilation-obsolete.md) | Source incompatible | Preview 7 |
| [WebHostBuilder, IWebHost, and WebHost are obsolete](aspnet-core/10/webhostbuilder-deprecated.md) | Source incompatible | RC 1 |

## Containers

Expand Down Expand Up @@ -54,6 +55,17 @@ If you're migrating an app to .NET 10, the breaking changes listed here might af
| [System.Linq.AsyncEnumerable included in core libraries](core-libraries/10.0/asyncenumerable.md) | Source incompatible | Preview 1 |
| [YMM embedded rounding removed from AVX10.2](core-libraries/10.0/ymm-embedded-rounding.md) | Behavioral change | Preview 5 |

## Cryptography

| Title | Type of change | Introduced version |
|-------|-------------------|--------------------|
| [CoseSigner.Key can be null](cryptography/10.0/cosesigner-key-null.md) | Behavioral/source incompatible change | Preview 7 |
| [MLDsa and SlhDsa 'SecretKey' members renamed](cryptography/10.0/mldsa-slhdsa-secretkey-to-privatekey.md) | Source incompatible | RC 1 |
| [OpenSSL cryptographic primitives aren't supported on macOS](cryptography/10.0/openssl-macos-unsupported.md) | Behavioral change | Preview 6 |
| [X500DistinguishedName validation is stricter](cryptography/10.0/x500distinguishedname-validation.md) | Behavioral change | Preview 1 |
| [X509Certificate and PublicKey key parameters can be null](cryptography/10.0/x509-publickey-null.md) | Behavioral/source incompatible change | Preview 3 |
| [Environment variable renamed to DOTNET_OPENSSL_VERSION_OVERRIDE](cryptography/10.0/version-override.md) | Behavioral change | Preview 1 |

## Entity Framework Core

[Breaking changes in EF Core 10](/ef/core/what-is-new/ef-core-10.0/breaking-changes)
Expand All @@ -73,16 +85,6 @@ If you're migrating an app to .NET 10, the breaking changes listed here might af
|-------|-------------------|--------------------|
| [Environment variable renamed to DOTNET_ICU_VERSION_OVERRIDE](globalization/10.0/version-override.md) | Behavioral change | Preview 1 |

## Cryptography

| Title | Type of change | Introduced version |
|-------|-------------------|--------------------|
| [CoseSigner.Key can be null](cryptography/10.0/cosesigner-key-null.md) | Behavioral/source incompatible change | Preview 7 |
| [OpenSSL cryptographic primitives aren't supported on macOS](cryptography/10.0/openssl-macos-unsupported.md) | Behavioral change | Preview 6 |
| [X500DistinguishedName validation is stricter](cryptography/10.0/x500distinguishedname-validation.md) | Behavioral change | Preview 1 |
| [X509Certificate and PublicKey key parameters can be null](cryptography/10.0/x509-publickey-null.md) | Behavioral/source incompatible change | Preview 3 |
| [Environment variable renamed to DOTNET_OPENSSL_VERSION_OVERRIDE](cryptography/10.0/version-override.md) | Behavioral change | Preview 1 |

## Interop

| Title | Type of change | Introduced version |
Expand All @@ -109,6 +111,7 @@ If you're migrating an app to .NET 10, the breaking changes listed here might af
| [`dotnet new sln` defaults to SLNX file format](sdk/10.0/dotnet-new-sln-slnx-default.md) | Behavioral change | RC 1 |
| [`dotnet package list` performs restore](sdk/10.0/dotnet-package-list-restore.md) | Behavioral change | Preview 4 |
| [`dotnet restore` audits transitive packages](sdk/10.0/nugetaudit-transitive-packages.md) | Behavioral change | Preview 3 |
| [`dotnet tool install --local` creates manifest by default](sdk/10.0/dotnet-tool-install-local-manifest.md) | Behavioral change | Preview 7 |
| [project.json not supported in `dotnet restore`](sdk/10.0/dotnet-restore-project-json-unsupported.md) | Source incompatible | Preview 7 |
| [SHA-1 fingerprint support deprecated in `dotnet nuget sign`](sdk/10.0/dotnet-nuget-sign-sha1-deprecated.md) | Behavioral change | Preview 1 |
| [MSBUILDCUSTOMBUILDEVENTWARNING escape hatch removed](sdk/10.0/custom-build-event-warning.md) | Behavioral change | Preview 1 |
Expand All @@ -119,6 +122,7 @@ If you're migrating an app to .NET 10, the breaking changes listed here might af
| [PrunePackageReference privatizes direct prunable references](sdk/10.0/prune-packagereference-privateassets.md) | Behavioral change | Preview 7 |
| [HTTP warnings promoted to errors in `dotnet package list` and `dotnet package search`](sdk/10.0/http-warnings-to-errors.md) | Behavioral/source incompatible change | Preview 4 |
| [NUGET_ENABLE_ENHANCED_HTTP_RETRY environment variable removed](sdk/10.0/nuget-enhanced-http-retry-removed.md) | Behavioral change | Preview 6 |
| [NuGet logs an error for invalid package IDs](sdk/10.0/nuget-packageid-validation.md) | Behavioral change | RC 1 |

## Windows Forms

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
---
title: "WebHostBuilder, IWebHost, and WebHost are obsolete"
description: "Learn about the breaking change in ASP.NET Core 10 where WebHostBuilder, IWebHost, and WebHost are marked as obsolete."
ms.date: 09/05/2025
ai-usage: ai-generated
ms.custom: https://github.com/aspnet/Announcements/issues/526
---

# WebHostBuilder, IWebHost, and WebHost are obsolete

<xref:Microsoft.AspNetCore.Hosting.WebHostBuilder>, <xref:Microsoft.AspNetCore.Hosting.IWebHost>, and <xref:Microsoft.AspNetCore.WebHost> have been marked as obsolete in .NET 10. `WebHostBuilder` was replaced by `HostBuilder` ([generic host](/aspnet/core/fundamentals/host/generic-host)) in ASP.NET Core 3.0, and `WebApplicationBuilder` was introduced in ASP.NET Core 6.0. These newer alternatives are where future investments will occur.

## Version introduced

.NET 10 RC 1

## Previous behavior

Previously, you could use `WebHostBuilder` to configure and build a web host without any compile-time warnings.

## New behavior

Starting in .NET 10, using `WebHostBuilder` produces a compiler warning with diagnostic ID `ASPDEPR004`:

> warning ASPDEPR004: WebHostBuilder is deprecated in favor of HostBuilder and WebApplicationBuilder. For more information, visit <https://aka.ms/aspnet/deprecate/004>.

Using `IWebHost` or `WebHost` produces a compiler warning with diagnostic ID `ASPDEPR008`:

> warning ASPDEPR008: WebHost is obsolete. Use HostBuilder or WebApplicationBuilder instead. For more information, visit <https://aka.ms/aspnet/deprecate/008>.

## Type of breaking change

This change can affect [source compatibility](../../categories.md#source-compatibility).

## Reason for change

`HostBuilder` and <xref:Microsoft.AspNetCore.Builder.WebApplication> have all the features of `WebHostBuilder` and are the focus of future investment. `WebHostBuilder` was replaced by the generic host in ASP.NET Core 3.0, and minimal APIs with <xref:Microsoft.AspNetCore.Builder.WebApplicationBuilder> were introduced in ASP.NET Core 6.0. These newer hosting models provide better integration with the .NET ecosystem and are the recommended approach for new applications.

## Recommended action

Migrate from `WebHostBuilder` to either [`HostBuilder`](/aspnet/core/fundamentals/host/generic-host) or [`WebApplication`](/aspnet/core/fundamentals/minimal-apis/webapplication):

- For applications that need the full hosting capabilities, migrate to `HostBuilder`:

**Before:**

```csharp
var hostBuilder = new WebHostBuilder()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup()
.UseKestrel();
// Test code might use TestServer:
var testServer = new TestServer(hostBuilder);
```

**After:**

```csharp
using var host = new HostBuilder()
.ConfigureWebHost(webHostBuilder =>
{
webHostBuilder
.UseTestServer() // If using TestServer.
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup()
.UseKestrel();
})
.Build();
await host.StartAsync();

var testServer = host.GetTestServer();
```

- For new applications, especially those using minimal APIs, migrate to <xref:Microsoft.AspNetCore.Builder.WebApplicationBuilder>.

## Affected APIs

- <xref:Microsoft.AspNetCore.Hosting.WebHostBuilder?displayProperty=fullName>
- <xref:Microsoft.AspNetCore.Hosting.IWebHost?displayProperty=fullName>
- <xref:Microsoft.AspNetCore.WebHost?displayProperty=fullName>

## See also

- [Generic Host in ASP.NET Core](/aspnet/core/fundamentals/host/generic-host)
- [Minimal APIs with WebApplication](/aspnet/core/fundamentals/minimal-apis/webapplication)
- [HostBuilder replaces WebHostBuilder](/aspnet/core/migration/22-to-30#hostbuilder-replaces-webhostbuilder)
- [Introducing WebApplication](/aspnet/core/migration/50-to-60#new-hosting-model)
7 changes: 6 additions & 1 deletion docs/core/compatibility/core-libraries/10.0/obsolete-apis.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: "Breaking change: .NET 10 obsoletions with custom IDs"
titleSuffix: ""
description: Learn about the APIs that have been marked as obsolete in .NET 10 with a custom diagnostic ID.
ms.date: 03/28/2025
ms.date: 09/08/2025
ai-usage: ai-assisted
---
# API obsoletions with non-default diagnostic IDs (.NET 10)
Expand All @@ -21,6 +21,7 @@ The following table lists the custom diagnostic IDs and their corresponding warn
| [SYSLIB0059](../../../../fundamentals/syslib-diagnostics/syslib0059.md) | <xref:Microsoft.Win32.SystemEvents.EventsThreadShutdown?displayProperty=nameWithType> callbacks aren't run before the process exits. Use <xref:System.AppDomain.ProcessExit?displayProperty=nameWithType> instead. | Warning |
| [SYSLIB0060](../../../../fundamentals/syslib-diagnostics/syslib0060.md) | <xref:System.Security.Cryptography.Rfc2898DeriveBytes?displayProperty=nameWithType> constructors are obsolete. Use <xref:System.Security.Cryptography.Rfc2898DeriveBytes.Pbkdf2*?displayProperty=nameWithType> instead. | Warning |
| [SYSLIB0061](../../../../fundamentals/syslib-diagnostics/syslib0061.md) | <xref:System.Linq.Queryable.MaxBy``2(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,``1}},System.Collections.Generic.IComparer{``0})?displayProperty=nameWithType> and <xref:System.Linq.Queryable.MinBy``2(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,``1}},System.Collections.Generic.IComparer{``0})?displayProperty=nameWithType> taking an `IComparer<TSource>` are obsolete. Use the new ones that take an `IComparer<TKey>`. | Warning |
| [SYSLIB0062](../../../../fundamentals/syslib-diagnostics/syslib0062.md) | <xref:System.Xml.Xsl.XsltSettings.EnableScript?displayProperty=nameWithType> is obsolete. | Warning |

## Version introduced

Expand Down Expand Up @@ -64,6 +65,10 @@ These obsoletions can affect [source compatibility](../../categories.md#source-c
- <xref:System.Linq.Queryable.MaxBy``2(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,``1}},System.Collections.Generic.IComparer{``0})?displayProperty=fullName>
- <xref:System.Linq.Queryable.MinBy``2(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,``1}},System.Collections.Generic.IComparer{``0})?displayProperty=fullName>

### SYSLIB0062

- <xref:System.Xml.Xsl.XsltSettings.EnableScript?displayProperty=fullName>

## See also

- [API obsoletions with non-default diagnostic IDs (.NET 9)](../9.0/obsolete-apis-with-custom-diagnostics.md)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
title: "Breaking change - MLDsa and SlhDsa 'SecretKey' members renamed"
description: "Learn about the breaking change in .NET 10 where MLDsa and SlhDsa members were renamed from using 'SecretKey' to using 'PrivateKey'."
ms.date: 09/05/2025
ai-usage: ai-assisted
ms.custom: https://github.com/dotnet/docs/issues/47691
---

# MLDsa and SlhDsa 'SecretKey' members renamed

Some methods and properties in the `[Experimental]` post-quantum cryptography (PQC) classes <xref:System.Security.Cryptography.MLDsa?displayProperty=fullName> and <xref:System.Security.Cryptography.SlhDsa?displayProperty=fullName> have been renamed. APIs that involve the `sk` value from their respective specifications now have `PrivateKey` in their names instead of `SecretKey`.

## Version introduced

.NET 10 RC 1

## Previous behavior

Previously, you could call methods like `ImportMLDsaSecretKey` and `ImportSlhDsaSecretKey`, and you could access properties like `SecretKeySizeInBytes`.

## New behavior

Starting in .NET 10 RC 1, you must call methods like `ImportMLDsaPrivateKey` or `ImportSlhDsaPrivateKey`, and access properties like `PrivateKeySizeInBytes`.

## Type of breaking change

This change can affect [source compatibility](../../categories.md#source-compatibility).

## Reason for change

The change was made to align with existing asymmetric cryptography types in .NET and with related members such as <xref:System.Security.Cryptography.MLDsa.ExportPkcs8PrivateKey>.

## Recommended action

Resolve any compile breaks from this change by replacing instances of `SecretKey` with `PrivateKey` in the called member names:

```diff
-int targetSize = key.Algorithm.SecretKeySizeInBytes;
+int targetSize = key.Algorithm.PrivateKeySizeInBytes;
byte[] output = new byte[targetSize];
-key.ExportMLDsaSecretKey(output);
+key.ExportMLDsaPrivateKey(output);
```

## Affected APIs

- <xref:System.Security.Cryptography.MLDsa.ImportMLDsaSecretKey*?displayProperty=fullName>
- <xref:System.Security.Cryptography.MLDsa.ExportMLDsaSecretKey*?displayProperty=fullName>
- <xref:System.Security.Cryptography.MLDsaAlgorithm.SecretKeySizeInBytes?displayProperty=fullName>
- <xref:System.Security.Cryptography.SlhDsa.ImportSlhDsaSecretKey*?displayProperty=fullName>
- <xref:System.Security.Cryptography.SlhDsa.ExportSlhDsaSecretKey*?displayProperty=fullName>
- <xref:System.Security.Cryptography.SlhDsaAlgorithm.SecretKeySizeInBytes?displayProperty=fullName>
Loading
Loading