Skip to content

Commit e6888ca

Browse files
authored
Merge pull request #55345 from dotnet/main
Merge main into live
2 parents 6d10b48 + 2595bb9 commit e6888ca

51 files changed

Lines changed: 1623 additions & 118 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/ISSUE_TEMPLATE/02-breaking-change.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@ body:
2222
- .NET 8
2323
- .NET 9
2424
- .NET 10
25-
- .NET 11 Preview 1
26-
- .NET 11 Preview 2
27-
- .NET 11 Preview 3
2825
- .NET 11 Preview 4
2926
- .NET 11 Preview 5
3027
- .NET 11 Preview 6
@@ -87,6 +84,7 @@ body:
8784
- Cryptography
8885
- Debugger
8986
- Deployment
87+
- dotnetup
9088
- Extensions
9189
- Globalization
9290
- Interop

docs/azure/includes/dotnet-all.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
| Device Update | NuGet [1.0.0](https://www.nuget.org/packages/Azure.IoT.DeviceUpdate/1.0.0) | [docs](/dotnet/api/overview/azure/IoT.DeviceUpdate-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.IoT.DeviceUpdate_1.0.0/sdk/deviceupdate/Azure.IoT.DeviceUpdate/) |
4949
| Digital Twins | NuGet [1.6.0](https://www.nuget.org/packages/Azure.DigitalTwins.Core/1.6.0) | [docs](/dotnet/api/overview/azure/DigitalTwins.Core-readme) | GitHub [1.6.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.DigitalTwins.Core_1.6.0/sdk/digitaltwins/Azure.DigitalTwins.Core/) |
5050
| Document Intelligence | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.DocumentIntelligence/1.0.0) | [docs](/dotnet/api/overview/azure/AI.DocumentIntelligence-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.DocumentIntelligence_1.0.0/sdk/documentintelligence/Azure.AI.DocumentIntelligence/) |
51-
| Document Translation | NuGet [2.0.0](https://www.nuget.org/packages/Azure.AI.Translation.Document/2.0.0) | [docs](/dotnet/api/overview/azure/AI.Translation.Document-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Translation.Document_2.0.0/sdk/translation/Azure.AI.Translation.Document/) |
51+
| Document Translation | NuGet [3.0.0](https://www.nuget.org/packages/Azure.AI.Translation.Document/3.0.0) | [docs](/dotnet/api/overview/azure/AI.Translation.Document-readme) | GitHub [3.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Translation.Document_3.0.0/sdk/translation/Azure.AI.Translation.Document/) |
5252
| Event Grid | NuGet [5.0.0](https://www.nuget.org/packages/Azure.Messaging.EventGrid/5.0.0) | [docs](/dotnet/api/overview/azure/Messaging.EventGrid-readme) | GitHub [5.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.EventGrid_5.0.0/sdk/eventgrid/Azure.Messaging.EventGrid/) |
5353
| Event Grid Namespaces | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Messaging.EventGrid.Namespaces/1.1.0) | [docs](/dotnet/api/overview/azure/Messaging.EventGrid.Namespaces-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.EventGrid.Namespaces_1.1.0/sdk/eventgrid/Azure.Messaging.EventGrid.Namespaces/) |
5454
| Event Hubs | NuGet [5.12.2](https://www.nuget.org/packages/Azure.Messaging.EventHubs/5.12.2) | [docs](/dotnet/api/overview/azure/Messaging.EventHubs-readme) | GitHub [5.12.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.EventHubs_5.12.2/sdk/eventhub/Azure.Messaging.EventHubs/) |
@@ -128,7 +128,7 @@
128128
| Time Series Insights | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.IoT.TimeSeriesInsights/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/IoT.TimeSeriesInsights-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.IoT.TimeSeriesInsights_1.0.0-beta.1/sdk/timeseriesinsights/Azure.IoT.TimeSeriesInsights/) |
129129
| TimeZone | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Maps.TimeZones/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Maps.TimeZones-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Maps.TimeZones_1.0.0-beta.1/sdk/maps/Azure.Maps.TimeZones/) |
130130
| Vision Common | NuGet [0.15.1-beta.1](https://www.nuget.org/packages/Azure.AI.Vision.Common/0.15.1-beta.1) | | GitHub [0.15.1-beta.1](https://msasg.visualstudio.com/Skyman/_git/Carbon) |
131-
| Voice Live | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.VoiceLive/1.1.0)<br>NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.AI.VoiceLive/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.VoiceLive-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.VoiceLive_1.1.0/sdk/voicelive/Azure.AI.VoiceLive/)<br>GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.VoiceLive_1.2.0-beta.1/sdk/voicelive/Azure.AI.VoiceLive/) |
131+
| Voice Live | NuGet [1.2.0](https://www.nuget.org/packages/Azure.AI.VoiceLive/1.2.0) | [docs](/dotnet/api/overview/azure/AI.VoiceLive-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.VoiceLive_1.2.0/sdk/voicelive/Azure.AI.VoiceLive/) |
132132
| WCF Storage Queues | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Microsoft.WCF.Azure.StorageQueues/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Microsoft.WCF.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.WCF.Azure.StorageQueues_1.0.0-beta.1/sdk/extension-wcf/Microsoft.WCF.Azure.StorageQueues/) |
133133
| Web PubSub | NuGet [1.6.0](https://www.nuget.org/packages/Azure.Messaging.WebPubSub/1.6.0) | [docs](/dotnet/api/overview/azure/Messaging.WebPubSub-readme) | GitHub [1.6.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.WebPubSub_1.6.0/sdk/webpubsub/Azure.Messaging.WebPubSub/) |
134134
| Web PubSub Client | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Messaging.WebPubSub.Client/1.0.0) | [docs](/dotnet/api/overview/azure/Messaging.WebPubSub.Client-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.WebPubSub.Client_1.0.0/sdk/webpubsub/Azure.Messaging.WebPubSub.Client/) |

docs/azure/includes/dotnet-new.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
| Device Update | NuGet [1.0.0](https://www.nuget.org/packages/Azure.IoT.DeviceUpdate/1.0.0) | [docs](/dotnet/api/overview/azure/IoT.DeviceUpdate-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.IoT.DeviceUpdate_1.0.0/sdk/deviceupdate/Azure.IoT.DeviceUpdate/) |
5353
| Digital Twins | NuGet [1.6.0](https://www.nuget.org/packages/Azure.DigitalTwins.Core/1.6.0) | [docs](/dotnet/api/overview/azure/DigitalTwins.Core-readme) | GitHub [1.6.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.DigitalTwins.Core_1.6.0/sdk/digitaltwins/Azure.DigitalTwins.Core/) |
5454
| Document Intelligence | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.DocumentIntelligence/1.0.0) | [docs](/dotnet/api/overview/azure/AI.DocumentIntelligence-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.DocumentIntelligence_1.0.0/sdk/documentintelligence/Azure.AI.DocumentIntelligence/) |
55-
| Document Translation | NuGet [2.0.0](https://www.nuget.org/packages/Azure.AI.Translation.Document/2.0.0) | [docs](/dotnet/api/overview/azure/AI.Translation.Document-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Translation.Document_2.0.0/sdk/translation/Azure.AI.Translation.Document/) |
55+
| Document Translation | NuGet [3.0.0](https://www.nuget.org/packages/Azure.AI.Translation.Document/3.0.0) | [docs](/dotnet/api/overview/azure/AI.Translation.Document-readme) | GitHub [3.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Translation.Document_3.0.0/sdk/translation/Azure.AI.Translation.Document/) |
5656
| Event Grid | NuGet [5.0.0](https://www.nuget.org/packages/Azure.Messaging.EventGrid/5.0.0) | [docs](/dotnet/api/overview/azure/Messaging.EventGrid-readme) | GitHub [5.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.EventGrid_5.0.0/sdk/eventgrid/Azure.Messaging.EventGrid/) |
5757
| Event Grid Namespaces | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Messaging.EventGrid.Namespaces/1.1.0) | [docs](/dotnet/api/overview/azure/Messaging.EventGrid.Namespaces-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.EventGrid.Namespaces_1.1.0/sdk/eventgrid/Azure.Messaging.EventGrid.Namespaces/) |
5858
| Event Hubs | NuGet [5.12.2](https://www.nuget.org/packages/Azure.Messaging.EventHubs/5.12.2) | [docs](/dotnet/api/overview/azure/Messaging.EventHubs-readme) | GitHub [5.12.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.EventHubs_5.12.2/sdk/eventhub/Azure.Messaging.EventHubs/) |
@@ -141,7 +141,7 @@
141141
| TimeZone | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Maps.TimeZones/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Maps.TimeZones-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Maps.TimeZones_1.0.0-beta.1/sdk/maps/Azure.Maps.TimeZones/) |
142142
| Video Analyzer Edge | NuGet [1.0.0-beta.6](https://www.nuget.org/packages/Azure.Media.VideoAnalyzer.Edge/1.0.0-beta.6) | [docs](/dotnet/api/overview/azure/Media.VideoAnalyzer.Edge-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [1.0.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Media.VideoAnalyzer.Edge_1.0.0-beta.6/sdk/videoanalyzer/Azure.Media.VideoAnalyzer.Edge/) |
143143
| Vision Common | NuGet [0.15.1-beta.1](https://www.nuget.org/packages/Azure.AI.Vision.Common/0.15.1-beta.1) | | GitHub [0.15.1-beta.1](https://msasg.visualstudio.com/Skyman/_git/Carbon) |
144-
| Voice Live | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.VoiceLive/1.1.0)<br>NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.AI.VoiceLive/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.VoiceLive-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.VoiceLive_1.1.0/sdk/voicelive/Azure.AI.VoiceLive/)<br>GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.VoiceLive_1.2.0-beta.1/sdk/voicelive/Azure.AI.VoiceLive/) |
144+
| Voice Live | NuGet [1.2.0](https://www.nuget.org/packages/Azure.AI.VoiceLive/1.2.0) | [docs](/dotnet/api/overview/azure/AI.VoiceLive-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.VoiceLive_1.2.0/sdk/voicelive/Azure.AI.VoiceLive/) |
145145
| WCF Storage Queues | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Microsoft.WCF.Azure.StorageQueues/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Microsoft.WCF.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.WCF.Azure.StorageQueues_1.0.0-beta.1/sdk/extension-wcf/Microsoft.WCF.Azure.StorageQueues/) |
146146
| Web PubSub | NuGet [1.6.0](https://www.nuget.org/packages/Azure.Messaging.WebPubSub/1.6.0) | [docs](/dotnet/api/overview/azure/Messaging.WebPubSub-readme) | GitHub [1.6.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.WebPubSub_1.6.0/sdk/webpubsub/Azure.Messaging.WebPubSub/) |
147147
| Web PubSub Client | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Messaging.WebPubSub.Client/1.0.0) | [docs](/dotnet/api/overview/azure/Messaging.WebPubSub.Client-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.WebPubSub.Client_1.0.0/sdk/webpubsub/Azure.Messaging.WebPubSub.Client/) |

docs/core/compatibility/11.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ See [Breaking changes in ASP.NET Core 11](/aspnet/core/breaking-changes/11/overv
4343
| Title | Type of change |
4444
|----------------------------------------------------------------|-------------------|
4545
| [API obsoletions](cryptography/11/obsolete-apis.md) | Source incompatible |
46+
| [Composite ML-DSA on Windows uses native implementation](cryptography/11/compositemldsa-windows-native.md) | Behavioral change |
4647
| [DSA removed from macOS](cryptography/11/dsa-removed-macos.md) | Behavioral change |
4748
| [Linux AIA certificate fetching limited to two fetches per chain build](cryptography/11/aia-fetch-limit-linux.md) | Behavioral change |
4849

@@ -63,6 +64,8 @@ See [Breaking changes in EF Core 11](/ef/core/what-is-new/ef-core-11.0/breaking-
6364
| Title | Type of change |
6465
|-------|-------------------|
6566
| [ChangeToken.OnChange async overloads rebind existing Task-returning callbacks](extensions/11/changetoken-onchange-async-overloads-rebind-callbacks.md) | Behavioral change |
67+
| [FileConfigurationProvider doesn't raise reload token after ignored load failure](extensions/11/fileconfigurationprovider-reload-token-load-failure.md) | Behavioral change |
68+
| [FileConfigurationSource.OnLoadException callback is called for IO errors](extensions/11/fileconfigurationsource-onloadexception-io-errors.md) | Behavioral change |
6669
| [IHost.RunAsync and IHost.StopAsync throw when a BackgroundService fails](extensions/11/ihost-runasync-stopasync-throw-backgroundservice-failure.md) | Behavioral change |
6770
| [Some Microsoft.Extensions packages included in shared framework](extensions/11/extensions-in-shared-framework.md) | Behavioral change |
6871

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
---
2+
title: "Breaking change: Composite ML-DSA on Windows uses native implementation"
3+
description: "Learn about the breaking change in .NET 11 where Composite ML-DSA on Windows uses the native Windows implementation, which supports fewer algorithms than the previous managed implementation."
4+
ms.date: 08/03/2026
5+
ai-usage: ai-generated
6+
---
7+
8+
# Composite ML-DSA on Windows uses native implementation
9+
10+
Starting in .NET 11, <xref:System.Security.Cryptography.CompositeMLDsa> on Windows uses the native Windows implementation of Composite ML-DSA instead of a managed implementation layered over ML-DSA, RSA, and ECDSA. Because Windows only implements a subset of the Composite ML-DSA parameter sets natively, this change reduces the number of Composite ML-DSA algorithms supported on Windows.
11+
12+
## Version introduced
13+
14+
.NET 11 Preview 7
15+
16+
## Previous behavior
17+
18+
Previously, <xref:System.Security.Cryptography.CompositeMLDsa> APIs on Windows worked for any composite algorithm as long as its underlying components (ML-DSA, RSA, and ECDSA) were supported, including all the RSA-based composite algorithms. Algorithms that combine ML-DSA with EdDSA (Ed25519 or Ed448) always threw <xref:System.PlatformNotSupportedException> on Windows, because Windows doesn't support EdDSA.
19+
20+
## New behavior
21+
22+
Starting in .NET 11, <xref:System.Security.Cryptography.CompositeMLDsa> APIs on Windows only support the composite algorithms that Windows implements natively in CNG. Windows currently implements native support for exactly these four parameter sets, all of which pair ML-DSA with ECDSA:
23+
24+
| Windows parameter set | Composite ML-DSA algorithm | `CompositeMLDsaAlgorithm` member |
25+
|---------------------------------|-----------------------------------|-----------------------------------|
26+
| `44-ECDSA-P256-SHA256` | Composite ML-DSA-44 and ECDSA P256 | `MLDsa44WithECDsaP256` |
27+
| `65-ECDSA-P256-SHA512` | Composite ML-DSA-65 and ECDSA P256 | `MLDsa65WithECDsaP256` |
28+
| `65-ECDSA-P384-SHA512` | Composite ML-DSA-65 and ECDSA P384 | `MLDsa65WithECDsaP384` |
29+
| `87-ECDSA-P384-SHA512` | Composite ML-DSA-87 and ECDSA P384 | `MLDsa87WithECDsaP384` |
30+
31+
All other composite algorithms now throw <xref:System.PlatformNotSupportedException> on Windows. This includes every algorithm that pairs ML-DSA with RSA, which worked previously, and every algorithm that pairs ML-DSA with EdDSA (Ed25519 or Ed448), which already threw <xref:System.PlatformNotSupportedException> before this change.
32+
33+
For more information, see the `cbParameterSet` field of the [`BCRYPT_PQDSA_KEY_BLOB`](/windows/win32/seccng/bcrypt/ns-bcrypt-bcrypt_pqdsa_key_blob#cbparameterset) structure.
34+
35+
## Type of breaking change
36+
37+
This change is a [behavioral change](../../categories.md#behavioral-change).
38+
39+
## Reason for change
40+
41+
It's preferable to use the native implementation the operating system provides rather than a managed layer built on top of other primitives. Windows added native support for a subset of Composite ML-DSA parameter sets in recent Windows Insider Preview builds, and .NET now uses that native support when it's available.
42+
43+
## Recommended action
44+
45+
Before you use a specific Composite ML-DSA algorithm on Windows, call <xref:System.Security.Cryptography.CompositeMLDsa.IsAlgorithmSupported*> to check whether the algorithm is supported. If an algorithm isn't supported, choose a supported algorithm or handle the resulting <xref:System.PlatformNotSupportedException>.
46+
47+
```csharp
48+
if (CompositeMLDsa.IsAlgorithmSupported(CompositeMLDsaAlgorithm.MLDsa65WithECDsaP384))
49+
{
50+
using CompositeMLDsa mldsa = CompositeMLDsa.GenerateKey(CompositeMLDsaAlgorithm.MLDsa65WithECDsaP384);
51+
// Use mldsa.
52+
}
53+
else
54+
{
55+
// Fall back to another algorithm, or handle the lack of support.
56+
}
57+
```
58+
59+
This change doesn't affect the Composite ML-DSA certificate APIs. Those APIs continue to throw <xref:System.PlatformNotSupportedException> on Windows, as before.
60+
61+
## Affected APIs
62+
63+
- <xref:System.Security.Cryptography.CompositeMLDsa?displayProperty=fullName>
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
---
2+
title: "Breaking change: FileConfigurationProvider doesn't raise reload token after ignored load failure"
3+
description: "Learn about the breaking change in .NET 11 where FileConfigurationProvider doesn't raise its reload token after an ignored load failure."
4+
ms.date: 08/05/2026
5+
ai-usage: ai-assisted
6+
---
7+
8+
# FileConfigurationProvider doesn't raise reload token after ignored load failure
9+
10+
<xref:Microsoft.Extensions.Configuration.FileConfigurationProvider> no longer calls `OnReload` or fires its reload token after <xref:Microsoft.Extensions.Configuration.FileConfigurationProvider.Load> fails and its <xref:Microsoft.Extensions.Configuration.FileConfigurationSource.OnLoadException> callback ignores the exception.
11+
12+
## Version introduced
13+
14+
.NET 11 Preview 7
15+
16+
## Previous behavior
17+
18+
Previously, after `Load` failed and the `OnLoadException` callback set <xref:Microsoft.Extensions.Configuration.FileLoadExceptionContext.Ignore> to `true`, <xref:Microsoft.Extensions.Configuration.FileConfigurationProvider> called `OnReload`. The reload token returned by <xref:Microsoft.Extensions.Configuration.IConfiguration.GetReloadToken> fired even though the provider didn't load data.
19+
20+
## New behavior
21+
22+
Starting in .NET 11, <xref:Microsoft.Extensions.Configuration.FileConfigurationProvider> doesn't call `OnReload` after `Load` fails and the `OnLoadException` callback sets <xref:Microsoft.Extensions.Configuration.FileLoadExceptionContext.Ignore> to `true`. The reload token doesn't fire because the provider didn't load data.
23+
24+
## Type of breaking change
25+
26+
This change is a [behavioral change](../../categories.md#behavioral-change).
27+
28+
## Reason for change
29+
30+
To avoid a notification when no data changes, <xref:Microsoft.Extensions.Configuration.FileConfigurationProvider> calls `OnReload` only after it loads data. This behavior resulted from a control-flow fix in [dotnet/runtime#126093](https://github.com/dotnet/runtime/pull/126093).
31+
32+
## Recommended action
33+
34+
Don't depend on the reload token when the provider doesn't load data. If your application must run code after an ignored load failure, call that code from your `OnLoadException` callback.
35+
36+
## Affected APIs
37+
38+
- <xref:Microsoft.Extensions.Configuration.FileConfigurationProvider.Load?displayProperty=fullName>
39+
- <xref:Microsoft.Extensions.Configuration.Ini.IniConfigurationProvider.Load(System.IO.Stream)?displayProperty=fullName>
40+
- <xref:Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider.Load(System.IO.Stream)?displayProperty=fullName>
41+
- <xref:Microsoft.Extensions.Configuration.Xml.XmlConfigurationProvider.Load(System.IO.Stream)?displayProperty=fullName>

0 commit comments

Comments
 (0)