From d2fd585f0405424514c768351ad75f9cf6b262a5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 8 Sep 2026 11:49:39 -0700 Subject: [PATCH 01/14] .NET dependabot-bot automated PR. (#55897) Co-authored-by: BillWagner <493969+BillWagner@users.noreply.github.com> --- .github/dependabot.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 2d53a6c601681..3841c705e93c6 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1752,6 +1752,19 @@ updates: dotnet: patterns: - "*" # Prefer a single PR per project update. + - package-ecosystem: "nuget" + directory: "/docs/core/diagnostics/snippets/resource-monitoring-kubernetes" #resource-monitoring-kubernetes.csproj + schedule: + interval: "weekly" + day: "wednesday" + open-pull-requests-limit: 5 + cooldown: + default-days: 7 + groups: + # Group .NET updates together for projects. + dotnet: + patterns: + - "*" # Prefer a single PR per project update. - package-ecosystem: "nuget" directory: "/docs/core/diagnostics/snippets/resource-monitoring-with-manual-metrics" #resource-monitoring-with-manual-metrics.csproj schedule: @@ -2584,16 +2597,3 @@ updates: dotnet: patterns: - "*" # Prefer a single PR per project update. - - package-ecosystem: "nuget" - directory: "/docs/core/extensions/snippets/logging/getting-started-open-telemetry" #getting-started-open-telemetry.csproj - schedule: - interval: "weekly" - day: "wednesday" - open-pull-requests-limit: 5 - cooldown: - default-days: 7 - groups: - # Group .NET updates together for projects. - dotnet: - patterns: - - "*" # Prefer a single PR per project update. From 46137dc87e577c4b18e65d5a9293bd63e7724ff3 Mon Sep 17 00:00:00 2001 From: "azure-sdk-automation[bot]" <191533747+azure-sdk-automation[bot]@users.noreply.github.com> Date: Tue, 8 Sep 2026 11:50:23 -0700 Subject: [PATCH 02/14] Update package index with latest published versions (#55903) Co-authored-by: azure-sdk --- docs/azure/includes/dotnet-all.md | 8 ++++---- docs/azure/includes/dotnet-new.md | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md index 334ad4c7e5729..0f8f130ccf44d 100644 --- a/docs/azure/includes/dotnet-all.md +++ b/docs/azure/includes/dotnet-all.md @@ -2,8 +2,8 @@ | ---- | ------- | ---- | ------ | | AI Agent Server - Agent Framework | NuGet [1.0.0-beta.11](https://www.nuget.org/packages/Azure.AI.AgentServer.AgentFramework/1.0.0-beta.11) | [docs](/dotnet/api/overview/azure/AI.AgentServer.AgentFramework-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.11](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.AgentFramework_1.0.0-beta.11/sdk/agentserver/Azure.AI.AgentServer.AgentFramework/) | | AI Agent Server - Contracts | NuGet [1.0.0-beta.11](https://www.nuget.org/packages/Azure.AI.AgentServer.Contracts/1.0.0-beta.11) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Contracts-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.11](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Contracts_1.0.0-beta.11/sdk/agentserver/Azure.AI.AgentServer.Contracts/) | -| AI Agent Server - Core | NuGet [1.0.0-beta.28](https://www.nuget.org/packages/Azure.AI.AgentServer.Core/1.0.0-beta.28) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Core-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.28](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Core_1.0.0-beta.28/sdk/agentserver/Azure.AI.AgentServer.Core/) | -| AI Agent Server - Invocations | NuGet [1.0.0-beta.6](https://www.nuget.org/packages/Azure.AI.AgentServer.Invocations/1.0.0-beta.6) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Invocations-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Invocations_1.0.0-beta.6/sdk/agentserver/Azure.AI.AgentServer.Invocations/) | +| AI Agent Server - Core | NuGet [1.0.0-beta.29](https://www.nuget.org/packages/Azure.AI.AgentServer.Core/1.0.0-beta.29) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Core-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.29](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Core_1.0.0-beta.29/sdk/agentserver/Azure.AI.AgentServer.Core/) | +| AI Agent Server - Invocations | NuGet [1.0.0-beta.7](https://www.nuget.org/packages/Azure.AI.AgentServer.Invocations/1.0.0-beta.7) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Invocations-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.7](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Invocations_1.0.0-beta.7/sdk/agentserver/Azure.AI.AgentServer.Invocations/) | | AI Agent Server - Responses | NuGet [1.0.0-beta.8](https://www.nuget.org/packages/Azure.AI.AgentServer.Responses/1.0.0-beta.8) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Responses-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.8](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Responses_1.0.0-beta.8/sdk/agentserver/Azure.AI.AgentServer.Responses/) | | AI Agents Persistent | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.Agents.Persistent/1.1.0)
NuGet [1.2.0-beta.10](https://www.nuget.org/packages/Azure.AI.Agents.Persistent/1.2.0-beta.10) | [docs](/dotnet/api/overview/azure/AI.Agents.Persistent-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Agents.Persistent_1.1.0/sdk/ai/Azure.AI.Agents.Persistent/)
GitHub [1.2.0-beta.10](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Agents.Persistent_1.2.0-beta.10/sdk/ai/Azure.AI.Agents.Persistent/) | | AI Extensions - OpenAI | NuGet [2.0.0](https://www.nuget.org/packages/Azure.AI.Extensions.OpenAI/2.0.0)
NuGet [3.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Extensions.OpenAI/3.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Extensions.OpenAI-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Extensions.OpenAI_2.0.0/sdk/ai/Azure.AI.Extensions.OpenAI/)
GitHub [3.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Extensions.OpenAI_3.0.0-beta.2/sdk/ai/Azure.AI.Extensions.OpenAI/) | @@ -245,7 +245,7 @@ | Resource Management - Carbon Optimization | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.CarbonOptimization/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.CarbonOptimization-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CarbonOptimization_1.0.1/sdk/carbon/Azure.ResourceManager.CarbonOptimization/) | | Resource Management - Certificate Registration | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.CertificateRegistration/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.CertificateRegistration-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CertificateRegistration_1.0.0/sdk/certificateregistration/Azure.ResourceManager.CertificateRegistration/) | | Resource Management - Chaos | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Chaos/1.1.1)
NuGet [1.2.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.Chaos/1.2.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.Chaos-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Chaos_1.1.1/sdk/chaos/Azure.ResourceManager.Chaos/)
GitHub [1.2.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Chaos_1.2.0-beta.3/sdk/chaos/Azure.ResourceManager.Chaos/) | -| Resource Management - Cloud Health | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.ResourceManager.CloudHealth/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/ResourceManager.CloudHealth-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CloudHealth_1.0.0-beta.4/sdk/cloudhealth/Azure.ResourceManager.CloudHealth/) | +| Resource Management - Cloud Health | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.CloudHealth/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.CloudHealth-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CloudHealth_1.0.0-beta.5/sdk/cloudhealth/Azure.ResourceManager.CloudHealth/) | | Resource Management - Cognitive Services | NuGet [1.5.2](https://www.nuget.org/packages/Azure.ResourceManager.CognitiveServices/1.5.2)
NuGet [1.6.0-beta.4](https://www.nuget.org/packages/Azure.ResourceManager.CognitiveServices/1.6.0-beta.4) | [docs](/dotnet/api/overview/azure/ResourceManager.CognitiveServices-readme) | GitHub [1.5.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CognitiveServices_1.5.2/sdk/cognitiveservices/Azure.ResourceManager.CognitiveServices/)
GitHub [1.6.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CognitiveServices_1.6.0-beta.4/sdk/cognitiveservices/Azure.ResourceManager.CognitiveServices/) | | Resource Management - Communication | NuGet [1.3.1](https://www.nuget.org/packages/Azure.ResourceManager.Communication/1.3.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Communication-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Communication_1.3.1/sdk/communication/Azure.ResourceManager.Communication/) | | Resource Management - Commvaultcontentstore | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.CommvaultContentStore/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.CommvaultContentStore-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CommvaultContentStore_1.0.0-beta.1/sdk/commvaultcontentstore/Azure.ResourceManager.CommvaultContentStore/) | @@ -268,7 +268,7 @@ | Resource Management - Container Registry Tasks | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ContainerRegistry.Tasks/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerRegistry.Tasks-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerRegistry.Tasks_1.0.0-beta.1/sdk/containerregistry/Azure.ResourceManager.ContainerRegistry.Tasks/) | | Resource Management - Container Service | NuGet [1.7.0](https://www.nuget.org/packages/Azure.ResourceManager.ContainerService/1.7.0)
NuGet [1.8.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ContainerService/1.8.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerService-readme) | GitHub [1.7.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerService_1.7.0/sdk/containerservice/Azure.ResourceManager.ContainerService/)
GitHub [1.8.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerService_1.8.0-beta.1/sdk/containerservice/Azure.ResourceManager.ContainerService/) | | Resource Management - Container Service Fleet | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.ContainerServiceFleet/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerServiceFleet-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerServiceFleet_1.2.0/sdk/fleet/Azure.ResourceManager.ContainerServiceFleet/) | -| Resource Management - Containerservicepreparedimgspec | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ContainerServicePreparedImgSpec/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerServicePreparedImgSpec-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerServicePreparedImgSpec_1.0.0-beta.1/sdk/containerservicepreparedimgspec/Azure.ResourceManager.ContainerServicePreparedImgSpec/) | +| Resource Management - Containerservicepreparedimgspec | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ContainerServicePreparedImgSpec/1.0.0-beta.1) | | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerServicePreparedImgSpec_1.0.0-beta.1/sdk/containerservicepreparedimgspec/Azure.ResourceManager.ContainerServicePreparedImgSpec/) | | Resource Management - Content Delivery Network | NuGet [1.5.1](https://www.nuget.org/packages/Azure.ResourceManager.Cdn/1.5.1)
NuGet [1.6.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.Cdn/1.6.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Cdn-readme) | GitHub [1.5.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Cdn_1.5.1/sdk/cdn/Azure.ResourceManager.Cdn/)
GitHub [1.6.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Cdn_1.6.0-beta.1/sdk/cdn/Azure.ResourceManager.Cdn/) | | Resource Management - Cosmos DB | NuGet [1.5.0](https://www.nuget.org/packages/Azure.ResourceManager.CosmosDB/1.5.0) | [docs](/dotnet/api/overview/azure/ResourceManager.CosmosDB-readme) | GitHub [1.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CosmosDB_1.5.0/sdk/cosmosdb/Azure.ResourceManager.CosmosDB/) | | Resource Management - Cosmos DB for PostgreSQL | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.CosmosDBForPostgreSql/1.0.0)
NuGet [1.1.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.CosmosDBForPostgreSql/1.1.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.CosmosDBForPostgreSql-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CosmosDBForPostgreSql_1.0.0/sdk/cosmosdbforpostgresql/Azure.ResourceManager.CosmosDBForPostgreSql/)
GitHub [1.1.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CosmosDBForPostgreSql_1.1.0-beta.3/sdk/cosmosdbforpostgresql/Azure.ResourceManager.CosmosDBForPostgreSql/) | diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md index 318f82c02068a..ca8df068668e8 100644 --- a/docs/azure/includes/dotnet-new.md +++ b/docs/azure/includes/dotnet-new.md @@ -2,8 +2,8 @@ | ---- | ------- | ---- | ------ | | AI Agent Server - Agent Framework | NuGet [1.0.0-beta.11](https://www.nuget.org/packages/Azure.AI.AgentServer.AgentFramework/1.0.0-beta.11) | [docs](/dotnet/api/overview/azure/AI.AgentServer.AgentFramework-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.11](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.AgentFramework_1.0.0-beta.11/sdk/agentserver/Azure.AI.AgentServer.AgentFramework/) | | AI Agent Server - Contracts | NuGet [1.0.0-beta.11](https://www.nuget.org/packages/Azure.AI.AgentServer.Contracts/1.0.0-beta.11) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Contracts-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.11](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Contracts_1.0.0-beta.11/sdk/agentserver/Azure.AI.AgentServer.Contracts/) | -| AI Agent Server - Core | NuGet [1.0.0-beta.28](https://www.nuget.org/packages/Azure.AI.AgentServer.Core/1.0.0-beta.28) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Core-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.28](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Core_1.0.0-beta.28/sdk/agentserver/Azure.AI.AgentServer.Core/) | -| AI Agent Server - Invocations | NuGet [1.0.0-beta.6](https://www.nuget.org/packages/Azure.AI.AgentServer.Invocations/1.0.0-beta.6) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Invocations-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Invocations_1.0.0-beta.6/sdk/agentserver/Azure.AI.AgentServer.Invocations/) | +| AI Agent Server - Core | NuGet [1.0.0-beta.29](https://www.nuget.org/packages/Azure.AI.AgentServer.Core/1.0.0-beta.29) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Core-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.29](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Core_1.0.0-beta.29/sdk/agentserver/Azure.AI.AgentServer.Core/) | +| AI Agent Server - Invocations | NuGet [1.0.0-beta.7](https://www.nuget.org/packages/Azure.AI.AgentServer.Invocations/1.0.0-beta.7) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Invocations-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.7](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Invocations_1.0.0-beta.7/sdk/agentserver/Azure.AI.AgentServer.Invocations/) | | AI Agent Server - Responses | NuGet [1.0.0-beta.8](https://www.nuget.org/packages/Azure.AI.AgentServer.Responses/1.0.0-beta.8) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Responses-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.8](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Responses_1.0.0-beta.8/sdk/agentserver/Azure.AI.AgentServer.Responses/) | | AI Agents Persistent | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.Agents.Persistent/1.1.0)
NuGet [1.2.0-beta.10](https://www.nuget.org/packages/Azure.AI.Agents.Persistent/1.2.0-beta.10) | [docs](/dotnet/api/overview/azure/AI.Agents.Persistent-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Agents.Persistent_1.1.0/sdk/ai/Azure.AI.Agents.Persistent/)
GitHub [1.2.0-beta.10](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Agents.Persistent_1.2.0-beta.10/sdk/ai/Azure.AI.Agents.Persistent/) | | AI Extensions - OpenAI | NuGet [2.0.0](https://www.nuget.org/packages/Azure.AI.Extensions.OpenAI/2.0.0)
NuGet [3.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Extensions.OpenAI/3.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Extensions.OpenAI-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Extensions.OpenAI_2.0.0/sdk/ai/Azure.AI.Extensions.OpenAI/)
GitHub [3.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Extensions.OpenAI_3.0.0-beta.2/sdk/ai/Azure.AI.Extensions.OpenAI/) | @@ -261,7 +261,7 @@ | Resource Management - Carbon Optimization | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.CarbonOptimization/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.CarbonOptimization-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CarbonOptimization_1.0.1/sdk/carbon/Azure.ResourceManager.CarbonOptimization/) | | Resource Management - Certificate Registration | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.CertificateRegistration/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.CertificateRegistration-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CertificateRegistration_1.0.0/sdk/certificateregistration/Azure.ResourceManager.CertificateRegistration/) | | Resource Management - Chaos | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Chaos/1.1.1)
NuGet [1.2.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.Chaos/1.2.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.Chaos-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Chaos_1.1.1/sdk/chaos/Azure.ResourceManager.Chaos/)
GitHub [1.2.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Chaos_1.2.0-beta.3/sdk/chaos/Azure.ResourceManager.Chaos/) | -| Resource Management - Cloud Health | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.ResourceManager.CloudHealth/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/ResourceManager.CloudHealth-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CloudHealth_1.0.0-beta.4/sdk/cloudhealth/Azure.ResourceManager.CloudHealth/) | +| Resource Management - Cloud Health | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.CloudHealth/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.CloudHealth-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CloudHealth_1.0.0-beta.5/sdk/cloudhealth/Azure.ResourceManager.CloudHealth/) | | Resource Management - Cognitive Services | NuGet [1.5.2](https://www.nuget.org/packages/Azure.ResourceManager.CognitiveServices/1.5.2)
NuGet [1.6.0-beta.4](https://www.nuget.org/packages/Azure.ResourceManager.CognitiveServices/1.6.0-beta.4) | [docs](/dotnet/api/overview/azure/ResourceManager.CognitiveServices-readme) | GitHub [1.5.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CognitiveServices_1.5.2/sdk/cognitiveservices/Azure.ResourceManager.CognitiveServices/)
GitHub [1.6.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CognitiveServices_1.6.0-beta.4/sdk/cognitiveservices/Azure.ResourceManager.CognitiveServices/) | | Resource Management - Communication | NuGet [1.3.1](https://www.nuget.org/packages/Azure.ResourceManager.Communication/1.3.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Communication-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Communication_1.3.1/sdk/communication/Azure.ResourceManager.Communication/) | | Resource Management - Commvaultcontentstore | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.CommvaultContentStore/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.CommvaultContentStore-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CommvaultContentStore_1.0.0-beta.1/sdk/commvaultcontentstore/Azure.ResourceManager.CommvaultContentStore/) | @@ -284,7 +284,7 @@ | Resource Management - Container Registry Tasks | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ContainerRegistry.Tasks/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerRegistry.Tasks-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerRegistry.Tasks_1.0.0-beta.1/sdk/containerregistry/Azure.ResourceManager.ContainerRegistry.Tasks/) | | Resource Management - Container Service | NuGet [1.7.0](https://www.nuget.org/packages/Azure.ResourceManager.ContainerService/1.7.0)
NuGet [1.8.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ContainerService/1.8.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerService-readme) | GitHub [1.7.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerService_1.7.0/sdk/containerservice/Azure.ResourceManager.ContainerService/)
GitHub [1.8.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerService_1.8.0-beta.1/sdk/containerservice/Azure.ResourceManager.ContainerService/) | | Resource Management - Container Service Fleet | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.ContainerServiceFleet/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerServiceFleet-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerServiceFleet_1.2.0/sdk/fleet/Azure.ResourceManager.ContainerServiceFleet/) | -| Resource Management - Containerservicepreparedimgspec | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ContainerServicePreparedImgSpec/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerServicePreparedImgSpec-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerServicePreparedImgSpec_1.0.0-beta.1/sdk/containerservicepreparedimgspec/Azure.ResourceManager.ContainerServicePreparedImgSpec/) | +| Resource Management - Containerservicepreparedimgspec | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ContainerServicePreparedImgSpec/1.0.0-beta.1) | | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerServicePreparedImgSpec_1.0.0-beta.1/sdk/containerservicepreparedimgspec/Azure.ResourceManager.ContainerServicePreparedImgSpec/) | | Resource Management - Content Delivery Network | NuGet [1.5.1](https://www.nuget.org/packages/Azure.ResourceManager.Cdn/1.5.1)
NuGet [1.6.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.Cdn/1.6.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Cdn-readme) | GitHub [1.5.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Cdn_1.5.1/sdk/cdn/Azure.ResourceManager.Cdn/)
GitHub [1.6.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Cdn_1.6.0-beta.1/sdk/cdn/Azure.ResourceManager.Cdn/) | | Resource Management - Cosmos DB | NuGet [1.5.0](https://www.nuget.org/packages/Azure.ResourceManager.CosmosDB/1.5.0) | [docs](/dotnet/api/overview/azure/ResourceManager.CosmosDB-readme) | GitHub [1.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CosmosDB_1.5.0/sdk/cosmosdb/Azure.ResourceManager.CosmosDB/) | | Resource Management - Cosmos DB for PostgreSQL | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.CosmosDBForPostgreSql/1.0.0)
NuGet [1.1.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.CosmosDBForPostgreSql/1.1.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.CosmosDBForPostgreSql-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CosmosDBForPostgreSql_1.0.0/sdk/cosmosdbforpostgresql/Azure.ResourceManager.CosmosDBForPostgreSql/)
GitHub [1.1.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CosmosDBForPostgreSql_1.1.0-beta.3/sdk/cosmosdbforpostgresql/Azure.ResourceManager.CosmosDBForPostgreSql/) | From cedd03be41fd500394e7727aacb03629142be7bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Sep 2026 18:57:26 +0000 Subject: [PATCH 03/14] Bump the dotnet group with 5 updates (#55908) Bumps Microsoft.Orleans.Core.Abstractions from 10.2.2 to 10.3.1 Bumps Microsoft.Orleans.Sdk from 10.2.2 to 10.3.1 Bumps Microsoft.Orleans.Server from 10.2.2 to 10.3.1 Bumps Microsoft.Orleans.Transactions from 10.2.2 to 10.3.1 Bumps Microsoft.Orleans.Transactions.AzureStorage from 10.2.2 to 10.3.1 --- updated-dependencies: - dependency-name: Microsoft.Orleans.Core.Abstractions dependency-version: 10.3.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dotnet - dependency-name: Microsoft.Orleans.Sdk dependency-version: 10.3.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dotnet - dependency-name: Microsoft.Orleans.Server dependency-version: 10.3.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dotnet - dependency-name: Microsoft.Orleans.Transactions dependency-version: 10.3.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dotnet - dependency-name: Microsoft.Orleans.Transactions.AzureStorage dependency-version: 10.3.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dotnet ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/orleans/Directory.Build.props | 4 ++-- .../snippets/transactions/Abstractions/Abstractions.csproj | 6 +++--- .../grains/snippets/transactions/Server/Server.csproj | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/orleans/Directory.Build.props b/docs/orleans/Directory.Build.props index 8449fed0ee40d..42608960e4e4a 100644 --- a/docs/orleans/Directory.Build.props +++ b/docs/orleans/Directory.Build.props @@ -13,8 +13,8 @@ - - + + diff --git a/docs/orleans/grains/snippets/transactions/Abstractions/Abstractions.csproj b/docs/orleans/grains/snippets/transactions/Abstractions/Abstractions.csproj index 6d9e24aa54dee..fb6b60ffaf8d6 100644 --- a/docs/orleans/grains/snippets/transactions/Abstractions/Abstractions.csproj +++ b/docs/orleans/grains/snippets/transactions/Abstractions/Abstractions.csproj @@ -3,9 +3,9 @@ - - - + + + diff --git a/docs/orleans/grains/snippets/transactions/Server/Server.csproj b/docs/orleans/grains/snippets/transactions/Server/Server.csproj index f8aa615e9ae78..0c6f1c0c6610b 100644 --- a/docs/orleans/grains/snippets/transactions/Server/Server.csproj +++ b/docs/orleans/grains/snippets/transactions/Server/Server.csproj @@ -7,8 +7,8 @@ - - + + From 6a539791ba1d2bdec8022a15202b707a39bfeee5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Sep 2026 18:59:18 +0000 Subject: [PATCH 04/14] Bump the dotnet group with 4 updates (#55907) Bumps Microsoft.Extensions.DependencyInjection from 10.0.8 to 10.0.11 Bumps Microsoft.Extensions.Diagnostics.ResourceMonitoring.Kubernetes from 10.7.0 to 10.9.0 Bumps Microsoft.Extensions.Hosting from 10.0.8 to 10.0.11 Bumps Microsoft.Extensions.Logging.Console from 10.0.8 to 10.0.11 --- updated-dependencies: - dependency-name: Microsoft.Extensions.DependencyInjection dependency-version: 10.0.11 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet - dependency-name: Microsoft.Extensions.Diagnostics.ResourceMonitoring.Kubernetes dependency-version: 10.9.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dotnet - dependency-name: Microsoft.Extensions.Hosting dependency-version: 10.0.11 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet - dependency-name: Microsoft.Extensions.Logging.Console dependency-version: 10.0.11 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../resource-monitoring-kubernetes.csproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/core/diagnostics/snippets/resource-monitoring-kubernetes/resource-monitoring-kubernetes.csproj b/docs/core/diagnostics/snippets/resource-monitoring-kubernetes/resource-monitoring-kubernetes.csproj index 7a3f0875540a8..d289bac017c45 100644 --- a/docs/core/diagnostics/snippets/resource-monitoring-kubernetes/resource-monitoring-kubernetes.csproj +++ b/docs/core/diagnostics/snippets/resource-monitoring-kubernetes/resource-monitoring-kubernetes.csproj @@ -8,10 +8,10 @@ - - - - + + + + From 20f43111d180cafbe8ef84de72ad1528112fbac7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Sep 2026 18:59:26 +0000 Subject: [PATCH 05/14] Bump the dotnet group with 1 update (#55906) Bumps Microsoft.Agents.AI.OpenAI from 1.19.0 to 1.20.0 --- updated-dependencies: - dependency-name: Microsoft.Agents.AI.OpenAI dependency-version: 1.20.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dotnet ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/ai/snippets/prompt-engineering/multi-turn-chat.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ai/snippets/prompt-engineering/multi-turn-chat.csproj b/docs/ai/snippets/prompt-engineering/multi-turn-chat.csproj index f0922e8ce377c..21493bfbb99c8 100644 --- a/docs/ai/snippets/prompt-engineering/multi-turn-chat.csproj +++ b/docs/ai/snippets/prompt-engineering/multi-turn-chat.csproj @@ -10,7 +10,7 @@ - + - - + + diff --git a/docs/orleans/host/snippets/aspire/Silo/Silo.csproj b/docs/orleans/host/snippets/aspire/Silo/Silo.csproj index e05fb583bcf01..0dd344efcedbb 100644 --- a/docs/orleans/host/snippets/aspire/Silo/Silo.csproj +++ b/docs/orleans/host/snippets/aspire/Silo/Silo.csproj @@ -6,15 +6,15 @@ - - + + - + From 97ef389319730ddb0aea1a0bdc3b9d8d635739a6 Mon Sep 17 00:00:00 2001 From: Bill Wagner Date: Tue, 8 Sep 2026 15:57:46 -0400 Subject: [PATCH 09/14] Configure labels for reporting (#55892) New labels for reporting. --- quest-config.json | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/quest-config.json b/quest-config.json index b5a7b174d4c1f..b399004a01842 100644 --- a/quest-config.json +++ b/quest-config.json @@ -15,12 +15,24 @@ "DefaultParentNode": 410746, "WorkItemTags": [ { - "Label": ":checkered_flag: Release: .NET 10", + "Label": ":checkered_flag: Release: .NET 11", "Tag": "new-feature" }, { "Label": "okr-curation", "Tag": "content-curation" + }, + { + "Label": ":sparkler: Highlight :sparkler:", + "Tag": "Highlight-$FullMonthText$" + }, + { + "Label": ":mag_right: AISDLC :mag:", + "Tag": "SP-AISDLC" + }, + { + "Label": ":mag_right: AIPlatform :mag:", + "Tag": "SP-AIPlatform" } ] } From a903bc381955f8f4420a326ff871fb23e4d0b216 Mon Sep 17 00:00:00 2001 From: Tara Overfield Date: Tue, 8 Sep 2026 18:39:38 -0700 Subject: [PATCH 10/14] publish 9B release notes (#55884) * publish 9B release notes * Update release notes for September 2026 update Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Fix formatting of CVE-2026-62886 description Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../2026/09-08-september-cumulative-update.md | 85 +++++++++++++++++++ docs/framework/release-notes/release-notes.md | 3 +- docs/framework/toc.yml | 2 + 3 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 docs/framework/release-notes/2026/09-08-september-cumulative-update.md diff --git a/docs/framework/release-notes/2026/09-08-september-cumulative-update.md b/docs/framework/release-notes/2026/09-08-september-cumulative-update.md new file mode 100644 index 0000000000000..e4fd813251ef4 --- /dev/null +++ b/docs/framework/release-notes/2026/09-08-september-cumulative-update.md @@ -0,0 +1,85 @@ +--- +title: September 2026 cumulative update +description: Learn about the improvements in the .NET Framework September 2026 cumulative update. +ms.date: 09/08/2026 +ai-usage: ai-generated +--- +# .NET Framework September 2026 cumulative update + +_Released September 8, 2026_ + +## Summary of what's new in this release + +- [Security improvements](#security-improvements) +- [Quality and reliability improvements](#quality-and-reliability-improvements) + +### Security improvements + +#### CVE-2026-62886 – Elevation of Privilege vulnerability + +This security update addresses an elevation of privilege vulnerability detailed in [CVE-2026-62886](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-62886). + +#### CVE-2026-69522 – Remote Code Execution vulnerability + +This security update addresses a remote code execution vulnerability detailed in [CVE-2026-69522.](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-69522) + +### Quality and reliability improvements + +There are no new quality and reliability improvements in this release. + +## Known issues in this release + +Microsoft is not currently aware of any issues in this update. + +## Summary tables + +The following table outlines the updates in this release. + +| Product version | Cumulative update | +| --- | --- | +| **Windows 11, version 26H1** | | +| .NET Framework 4.8.1 | [5126053](https://support.microsoft.com/kb/5126053) | +| **Windows 11, version 25H2** | | +| .NET Framework 3.5, 4.8.1 | [5126052](https://support.microsoft.com/kb/5126052) | +| **Windows 11, version 24H2** | | +| .NET Framework 3.5, 4.8.1 | [5126052](https://support.microsoft.com/kb/5126052) | +| **Windows 11, version 23H2** | | +| .NET Framework 3.5, 4.8.1 | [5126424](https://support.microsoft.com/kb/5126424) | +| **Windows Server 2025** | | +| .NET Framework 3.5, 4.8.1 | [5126052](https://support.microsoft.com/kb/5126052) | +| **Windows Server 2022** | | +| .NET Framework 3.5, 4.8 | [5126050](https://support.microsoft.com/kb/5126050) | +| .NET Framework 3.5, 4.8.1 | [5126422](https://support.microsoft.com/kb/5126422) | +| **Windows 10, version 22H2** | | +| .NET Framework 3.5, 4.8 | [5126046](https://support.microsoft.com/kb/5126046) | +| .NET Framework 3.5, 4.8.1 | [5126421](https://support.microsoft.com/kb/5126421) | +| **Windows 10, version 21H2** | | +| .NET Framework 3.5, 4.8 | [5126046](https://support.microsoft.com/kb/5126046) | +| .NET Framework 3.5, 4.8.1 | [5126421](https://support.microsoft.com/kb/5126421) | +| **Windows 10 1809 and Windows Server 2019** | | +| .NET Framework 3.5, 4.7.2 | [5126043](https://support.microsoft.com/kb/5126043) | +| .NET Framework 3.5, 4.8 | [5126048](https://support.microsoft.com/kb/5126048) | +| **Windows 10 1607 and Windows Server 2016** | | +| .NET Framework 3.5, 4.6.2, 4.7, 4.7.1, 4.7.2 | Pending package; will be included in the LCU | +| .NET Framework 4.8 | [5126047](https://support.microsoft.com/kb/5126047) | + +The following table is for earlier Windows Server versions for Security and Quality Rollup updates. + +| Product version | Security and quality rollup | +| --- | --- | +| **Windows Server 2012 R2** | | +| .NET Framework 3.5 | [5120695](https://support.microsoft.com/kb/5120695) | +| .NET Framework 4.6.2, 4.7, 4.7.1, 4.7.2 | [5126045](https://support.microsoft.com/kb/5126045) | +| .NET Framework 4.8 | [5126051](https://support.microsoft.com/kb/5126051) | +| **Windows Server 2012** | | +| .NET Framework 3.5 | [5120716](https://support.microsoft.com/kb/5120716) | +| .NET Framework 4.6.2, 4.7, 4.7.1, 4.7.2 | [5126044](https://support.microsoft.com/kb/5126044) | +| .NET Framework 4.8 | [5126049](https://support.microsoft.com/kb/5126049) | + +The operating system rows list a KB that's used for update-offering purposes. When the operating system KB is offered, the applicability logic determines the specific .NET Framework updates that will be installed. Updates for individual .NET Framework versions are installed based on the version of .NET Framework that's already present on the device. Because of this, the operating system KB is not expected to be listed as an installed update on the device. The expected updates to be installed are the .NET Framework specific version updates listed in the preceding table. + +This update installs the complete .NET Framework 3.5 product for Windows 11, version 26H1 (build version 28000) and newer. Unlike traditional cumulative updates that patch individual components, this update delivers the full .NET Framework 3.5 product as a standalone installer. It replaces any previously installed version. + +| Product version | .NET Framework 3.5 product update | +| --- | --- | +| .NET Framework 3.5 | [5120747](https://support.microsoft.com/kb/5120747) | diff --git a/docs/framework/release-notes/release-notes.md b/docs/framework/release-notes/release-notes.md index 1fc8f7fff02fe..1c471bd74f1c6 100644 --- a/docs/framework/release-notes/release-notes.md +++ b/docs/framework/release-notes/release-notes.md @@ -11,7 +11,8 @@ The .NET Framework updates include cumulative security and reliability improveme .NET Framework cumulative update releases are discussed in detail in the following individual release notes: -* August 27, 2026 - [cumulative update preview](./2026/08-27-august-cumulative-update-preview.md) **New Release** +* September 8, 2026 - [cumulative update](./2026/09-08-september-cumulative-update.md) **New Release** +* August 27, 2026 - [cumulative update preview](./2026/08-27-august-cumulative-update-preview.md) * August 11, 2026 - [cumulative update](./2026/08-11-august-cumulative-update.md) * July 14, 2026 - [cumulative update](./2026/07-14-july-cumulative-update.md) * May 26, 2026 - [cumulative update preview](./2026/05-26-may-cumulative-update-preview.md) diff --git a/docs/framework/toc.yml b/docs/framework/toc.yml index d37c85a679de3..b55abb504d89e 100644 --- a/docs/framework/toc.yml +++ b/docs/framework/toc.yml @@ -679,6 +679,8 @@ items: items: - name: Overview and index href: release-notes/release-notes.md + - name: September 2026 cumulative update + href: release-notes/2026/09-08-september-cumulative-update.md - name: August 2026 cumulative update preview href: release-notes/2026/08-27-august-cumulative-update-preview.md - name: August 2026 cumulative update From 5efd5ea1d9fed0be98345d4085eed262f81d5251 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Sep 2026 09:08:25 -0400 Subject: [PATCH 11/14] Bump step-security/harden-runner from 2.21.0 to 2.21.1 (#55905) Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.21.0 to 2.21.1. - [Release notes](https://github.com/step-security/harden-runner/releases) - [Commits](https://github.com/step-security/harden-runner/compare/05e31511f85b41b11d1cf0ef85d0992719546e2c...e14015d583714f6e62063499dc959a02595150a1) --- updated-dependencies: - dependency-name: step-security/harden-runner dependency-version: 2.21.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/check-for-build-warnings.yml | 2 +- .github/workflows/cleanrepo-orphaned-articles.yml | 2 +- .github/workflows/cleanrepo-orphaned-images.yml | 2 +- .github/workflows/cleanrepo-orphaned-includes.yml | 2 +- .github/workflows/cleanrepo-orphaned-snippets.yml | 2 +- .github/workflows/cleanrepo-redirect-hops.yml | 2 +- .github/workflows/cleanrepo-relative-links.yml | 2 +- .github/workflows/cleanrepo-replace-redirects.yml | 2 +- .github/workflows/dependabot-bot.yml | 2 +- .github/workflows/dependency-review.yml | 2 +- .github/workflows/do-not-merge-label-check.yml | 2 +- .github/workflows/docs-verifier.yml | 2 +- .github/workflows/live-protection.yml | 2 +- .github/workflows/markdownlint.yml | 2 +- .github/workflows/ops-build-reporter.yml | 2 +- .github/workflows/quest-bulk.yml | 2 +- .github/workflows/quest.yml | 2 +- .github/workflows/scorecards.yml | 2 +- .github/workflows/snippets5000.yml | 2 +- .github/workflows/version-sweep.yml | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.github/workflows/check-for-build-warnings.yml b/.github/workflows/check-for-build-warnings.yml index 6f91745899ce1..d001d9373037b 100644 --- a/.github/workflows/check-for-build-warnings.yml +++ b/.github/workflows/check-for-build-warnings.yml @@ -16,7 +16,7 @@ jobs: pull-requests: write steps: - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/cleanrepo-orphaned-articles.yml b/.github/workflows/cleanrepo-orphaned-articles.yml index 4bc0584b1c3d8..2c818618064ef 100644 --- a/.github/workflows/cleanrepo-orphaned-articles.yml +++ b/.github/workflows/cleanrepo-orphaned-articles.yml @@ -17,7 +17,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/cleanrepo-orphaned-images.yml b/.github/workflows/cleanrepo-orphaned-images.yml index 2a29867193be0..b8cf8fe24b47c 100644 --- a/.github/workflows/cleanrepo-orphaned-images.yml +++ b/.github/workflows/cleanrepo-orphaned-images.yml @@ -17,7 +17,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/cleanrepo-orphaned-includes.yml b/.github/workflows/cleanrepo-orphaned-includes.yml index 3b986ba58778b..d705c0acad1ec 100644 --- a/.github/workflows/cleanrepo-orphaned-includes.yml +++ b/.github/workflows/cleanrepo-orphaned-includes.yml @@ -17,7 +17,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/cleanrepo-orphaned-snippets.yml b/.github/workflows/cleanrepo-orphaned-snippets.yml index e23a580e31eb2..a8f6c663aa0d0 100644 --- a/.github/workflows/cleanrepo-orphaned-snippets.yml +++ b/.github/workflows/cleanrepo-orphaned-snippets.yml @@ -17,7 +17,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/cleanrepo-redirect-hops.yml b/.github/workflows/cleanrepo-redirect-hops.yml index 3be481b9e17b1..56d1aa78fef2a 100644 --- a/.github/workflows/cleanrepo-redirect-hops.yml +++ b/.github/workflows/cleanrepo-redirect-hops.yml @@ -17,7 +17,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/cleanrepo-relative-links.yml b/.github/workflows/cleanrepo-relative-links.yml index ca77bdda08761..62100bed464fd 100644 --- a/.github/workflows/cleanrepo-relative-links.yml +++ b/.github/workflows/cleanrepo-relative-links.yml @@ -17,7 +17,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/cleanrepo-replace-redirects.yml b/.github/workflows/cleanrepo-replace-redirects.yml index dd88d3cee3a22..9228f2856cc04 100644 --- a/.github/workflows/cleanrepo-replace-redirects.yml +++ b/.github/workflows/cleanrepo-replace-redirects.yml @@ -17,7 +17,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/dependabot-bot.yml b/.github/workflows/dependabot-bot.yml index 4d463768e8dde..f2e84c0070f1a 100644 --- a/.github/workflows/dependabot-bot.yml +++ b/.github/workflows/dependabot-bot.yml @@ -26,7 +26,7 @@ jobs: # Checkout the repo into the workspace within the VM steps: - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 67bf1daed89b6..e9a12c12963ab 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/do-not-merge-label-check.yml b/.github/workflows/do-not-merge-label-check.yml index 642ba38fed661..220ca3a37bcd4 100644 --- a/.github/workflows/do-not-merge-label-check.yml +++ b/.github/workflows/do-not-merge-label-check.yml @@ -22,7 +22,7 @@ jobs: - 'DO NOT MERGE' steps: - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/docs-verifier.yml b/.github/workflows/docs-verifier.yml index f2b90720d2828..4d6f5cb88a345 100644 --- a/.github/workflows/docs-verifier.yml +++ b/.github/workflows/docs-verifier.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/live-protection.yml b/.github/workflows/live-protection.yml index 62df9b015ef87..205552791d2d4 100644 --- a/.github/workflows/live-protection.yml +++ b/.github/workflows/live-protection.yml @@ -11,7 +11,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/markdownlint.yml b/.github/workflows/markdownlint.yml index 6e7b8c49d3bd2..4f54fcdf8d5ce 100644 --- a/.github/workflows/markdownlint.yml +++ b/.github/workflows/markdownlint.yml @@ -22,7 +22,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/ops-build-reporter.yml b/.github/workflows/ops-build-reporter.yml index 8f29809cf112b..1320746324154 100644 --- a/.github/workflows/ops-build-reporter.yml +++ b/.github/workflows/ops-build-reporter.yml @@ -17,7 +17,7 @@ jobs: pull-requests: write steps: - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/quest-bulk.yml b/.github/workflows/quest-bulk.yml index 41538b5e38b26..91b7b2b2b0e36 100644 --- a/.github/workflows/quest-bulk.yml +++ b/.github/workflows/quest-bulk.yml @@ -28,7 +28,7 @@ jobs: if: ${{ github.repository_owner == 'dotnet' }} steps: - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/quest.yml b/.github/workflows/quest.yml index 382be4b711f9b..603130795390b 100644 --- a/.github/workflows/quest.yml +++ b/.github/workflows/quest.yml @@ -29,7 +29,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 4b92f4257568b..9507669729edb 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -31,7 +31,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/snippets5000.yml b/.github/workflows/snippets5000.yml index b9bbcc45023b0..e3250565d9c21 100644 --- a/.github/workflows/snippets5000.yml +++ b/.github/workflows/snippets5000.yml @@ -31,7 +31,7 @@ jobs: steps: # Checkout the repository for the PR - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit diff --git a/.github/workflows/version-sweep.yml b/.github/workflows/version-sweep.yml index ef1c9fa23761f..4c5fb085459b2 100644 --- a/.github/workflows/version-sweep.yml +++ b/.github/workflows/version-sweep.yml @@ -34,7 +34,7 @@ jobs: # Start the .NET version updater action # A composite of the .NET Version Sweeper and the .NET Upgrade Assistant - name: Harden Runner - uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0 + uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 with: egress-policy: audit From df1e0c9f7c61b1f500243c9e24eedb7f97f2fee2 Mon Sep 17 00:00:00 2001 From: Alex Ravenna Date: Wed, 9 Sep 2026 15:09:29 +0200 Subject: [PATCH 12/14] Fix typos and improve clarity in cs1591.md (#55916) --- docs/csharp/language-reference/compiler-messages/cs1591.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/csharp/language-reference/compiler-messages/cs1591.md b/docs/csharp/language-reference/compiler-messages/cs1591.md index 12ce72e140c6e..3bab8ab873100 100644 --- a/docs/csharp/language-reference/compiler-messages/cs1591.md +++ b/docs/csharp/language-reference/compiler-messages/cs1591.md @@ -26,11 +26,12 @@ public class Test // /// text public static void Main() // Try the following instead: remove "//" from previous line (`// /// text` about the comments) //or add #pragma warning disable 1591 - //a good practice is add the following comments: + //A good practice is to add the following comments: // /// // /// // /// - // this can be easily achieve at Visual Studio in a simple way adding triple forward slashes (`///`) + // this can be easily achieved in Visual Studio by simply adding triple forward slashes (`///`) - + // autocomplete will add the summary tags { } } From 30375d1386692ad9092acb729a988e719f3386ed Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Wed, 9 Sep 2026 07:58:08 -0700 Subject: [PATCH 13/14] Clarify CA1502 `AdditionalFiles` path for `Directory.Build.props` (#55902) * Initial plan * Clarify CA1502 AdditionalFiles path for Directory.Build.props Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com> --- docs/fundamentals/code-analysis/quality-rules/ca1502.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/fundamentals/code-analysis/quality-rules/ca1502.md b/docs/fundamentals/code-analysis/quality-rules/ca1502.md index 819ef71823c83..a2373c3c4bee9 100644 --- a/docs/fundamentals/code-analysis/quality-rules/ca1502.md +++ b/docs/fundamentals/code-analysis/quality-rules/ca1502.md @@ -105,11 +105,11 @@ You can configure the threshold at which this rule fires and the kinds of symbol In this example, the rule is configured to fire when a type's cyclomatic complexity is greater than 4. With this configuration file, the rule would continue to report methods with a cyclomatic complexity greater than the default (25). -3. In the project file, mark the build action of the configuration file as [**AdditionalFiles**](/visualstudio/ide/build-actions#build-action-values). For example: +3. In the project file, mark the build action of the configuration file as [**AdditionalFiles**](/visualstudio/ide/build-actions#build-action-values). If you configure `AdditionalFiles` in `Directory.Build.props`, prepend `$(MSBuildThisFileDirectory)` so MSBuild resolves the file path correctly. For example: ```xml - + ``` From 4dd379e757bae3ee12c9bf6cfc7eaae1e1236d20 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Wed, 9 Sep 2026 11:50:33 -0700 Subject: [PATCH 14/14] Update What's New in .NET 11 for RC 1 (#55904) --- docs/core/whats-new/dotnet-11/libraries.md | 116 +++++++++++++++++- docs/core/whats-new/dotnet-11/overview.md | 34 ++--- docs/core/whats-new/dotnet-11/runtime.md | 8 +- docs/core/whats-new/dotnet-11/sdk.md | 99 ++++++++++++++- .../dotnet-11/snippets/csharp/Libraries.cs | 84 +++++++++++++ .../dotnet-11/snippets/csharp/snippets.csproj | 1 + 6 files changed, 315 insertions(+), 27 deletions(-) diff --git a/docs/core/whats-new/dotnet-11/libraries.md b/docs/core/whats-new/dotnet-11/libraries.md index d79394169a3fd..9087ba9509389 100644 --- a/docs/core/whats-new/dotnet-11/libraries.md +++ b/docs/core/whats-new/dotnet-11/libraries.md @@ -2,14 +2,14 @@ title: What's new in .NET libraries for .NET 11 description: Learn about the updates to the .NET libraries for .NET 11. titleSuffix: "" -ms.date: 08/25/2026 +ms.date: 09/08/2026 ai-usage: ai-assisted ms.update-cycle: 3650-days --- # What's new in .NET libraries for .NET 11 -This article describes new features in the .NET libraries for .NET 11. It was last updated for Preview 7. +This article describes new features in the .NET libraries for .NET 11. It was last updated for release candidate 1 (RC 1). ## Diagnostics and process execution @@ -71,6 +71,15 @@ AttachProfiler(process); process.SafeHandle.Resume(); ``` +#### Signal processes and inspect termination status + + exposes process signaling and exit-status APIs directly, without requiring you to work through : + +- sends a POSIX signal to the process. +- , , and return a , which distinguishes a normal exit from a signal-based termination. + +:::code language="csharp" source="./snippets/csharp/Libraries.cs" id="ProcessSignal"::: + ### Console FORCE_COLOR support .NET console output now honors the [`FORCE_COLOR`](https://force-color.org/) standard alongside the existing `NO_COLOR` support. When `FORCE_COLOR` is set, no longer suppresses ANSI escape codes. This is useful when you pipe `dotnet run` output through `tee`, into a CI log viewer, or through `less -R`: @@ -214,6 +223,21 @@ let json = System.Text.Json.JsonSerializer.Serialize(Circle 1.5) :::code language="csharp" source="./snippets/csharp/Libraries.cs" id="JsonSerializeAsyncEnumerablePipe"::: +#### Numeric type and binary-schema support + +`System.Text.Json` includes built-in converters for , , , and . These converters work with both the reflection-based serializer and the source generator, including named floating-point literals when enabled through . + +:::code language="csharp" source="./snippets/csharp/Libraries.cs" id="JsonNumericTypes"::: + + also identifies the base64 representation used for `byte[]`, , and . For `byte[]`, the exported schema now includes a `contentEncoding` keyword: + +```diff +- { "type": ["string", "null"] } ++ { "type": ["string", "null"], "contentEncoding": "base64" } +``` + +The `Memory` and `ReadOnlyMemory` schemas remain non-nullable (`"type": "string"`) and also include `contentEncoding`. + #### C# union type serialization `System.Text.Json` can now serialize and deserialize C# union types. The serializer recognizes a union through the new `JsonTypeInfoKind.Union` contract kind, reads and writes the active case, and supports both the reflection-based serializer and the source generator. When you serialize a union, `System.Text.Json` writes the value of whichever case is active, so a union of `int` and `string` round-trips cleanly: @@ -234,10 +258,25 @@ let json = System.Text.Json.JsonSerializer.Serialize(Circle 1.5) The new `JsonUnionAttribute` and `JsonUnionCaseInfo` APIs, along with type-classifier APIs (`JsonTypeClassifier` and `JsonSerializerOptions.TypeClassifiers`), let you customize how cases are discovered and named. Union types are a C# language preview feature. For more information, see [What's new in C# 15](../../../csharp/whats-new/csharp-15.md#union-types). +For a union with object-shaped cases, the built-in `JsonUnionTypeStructuralClassifier` selects the active case from its distinguishing property names, so you don't need to author a custom classifier: + +:::code language="csharp" source="./snippets/csharp/Libraries.cs" id="JsonUnionStructuralClassifier"::: + #### Closed-hierarchy polymorphism inference adds so the serializer can infer polymorphic metadata for C# closed hierarchies without requiring explicit annotations on each base type. Explicit registrations still take precedence. +You can also opt a single closed hierarchy in to this behavior with , without changing the application-wide `JsonSerializerOptions` setting: + +```csharp +[JsonPolymorphic(InferClosedTypePolymorphism = true)] +public abstract record Shape; + +public sealed record Circle(double Radius) : Shape; + +public sealed record Square(double Side) : Shape; +``` + ### Regular expression improvements #### AnyNewLine option @@ -292,6 +331,8 @@ For more information, see [DeflateStream and GZipStream write headers and footer :::code language="csharp" source="./snippets/csharp/Libraries.cs" id="ZLibEncoderSpan"::: +The streamless `DeflateEncoder`, `DeflateDecoder`, `ZLibEncoder`, `ZLibDecoder`, `GZipEncoder`, and `GZipDecoder` types also gain a `Reset()` method. Resetting returns an instance to its initial state so you can process another independent payload without allocating a replacement encoder or decoder. + ### Zstandard compression The Zstandard compression APIs, for example, and , are now part of the namespace, alongside `DeflateStream`, `GZipStream`, and `BrotliStream`. The API surface is otherwise unchanged. @@ -308,6 +349,7 @@ New overloads on and ](#generic-complext) - [BFloat16 support in BitConverter](#bfloat16-support-in-bitconverter) @@ -336,6 +378,12 @@ Because the three outer-join operations return tuples directly, you can work wit adds , , and , which implement IEEE 754-2019 decimal floating-point semantics. These types support generic math, infinities, and NaN values, and can help when you need IEEE decimal behavior instead of . +### Correctly rounded decimal and BigInteger conversions + +Conversions between and binary floating-point types, and conversions from to binary floating-point types, now round the exact source value once to the nearest representable destination value. The previous conversions could lose significant digits or round through an intermediate value, so binaries rebuilt with a .NET 11 SDK can produce different results than they did on earlier versions. There's no compatibility switch to restore the previous conversion algorithms. + +For example, converting the `double` literal `1.23` to `decimal` now preserves the exact binary floating-point value rather than producing `1.23`. If a value is meant to be decimal, use a decimal literal such as `1.23m` instead of converting a `double` literal. For complete guidance, including previous and new behavior for each conversion direction, see [Decimal and BigInteger floating-point conversions are correctly rounded](../../compatibility/core-libraries/11/decimal-biginteger-floating-point-conversions.md). + ### Partial numeric parsing adds partial parsing overloads that report consumed input. Use this API to parse delimited formats, such as CSV, so you don't copy substrings. @@ -431,10 +479,19 @@ On Windows, `Process` now uses overlapped I/O for redirected stdout/stderr, whic ### Collections improvements +- [BitArray span constructors](#bitarray-span-constructors) - [BitArray.PopCount](#bitarraypopcount) - [IReadOnlySet support in JSON serialization](#ireadonlyset-support-in-json-serialization) - [EqualityComparer\.Create](#equalitycomparertcreate) +#### BitArray span constructors + + now has constructors that accept : `ReadOnlySpan`, `ReadOnlySpan`, and `ReadOnlySpan`. You can construct a bit array directly from a slice or stack-allocated data without first allocating an array: + +:::code language="csharp" source="./snippets/csharp/Libraries.cs" id="BitArraySpanConstructor"::: + +The span-based constructors avoid the intermediate array allocation that `new BitArray(span.ToArray())` requires. + #### BitArray.PopCount The class now includes a method that returns the number of bits set to `true` in the array. This provides an efficient way to count set bits without manually iterating through the array. @@ -627,7 +684,24 @@ var context = new ValidationContext(model, serviceProvider, items: null); await Validator.ValidateObjectAsync(model, context, validateAllProperties: true); ``` -`Microsoft.Extensions.Options` gains matching support: options can be validated asynchronously, including at startup through the new `IAsyncStartupValidator`. This lets an app fail fast when an option that requires a network check is misconfigured. +`Microsoft.Extensions.Options` gains matching support: options can be validated asynchronously, including at startup through the new `IAsyncStartupValidator`. This lets an app fail fast when an option that requires a network check is misconfigured. `IStartupValidator` is now obsolete; implement `IAsyncStartupValidator` instead. + +Source-generated options validators provide a synchronous `IValidateOptions.Validate` implementation in addition to asynchronous validation, so existing synchronous validation call sites keep working alongside validators that need to await I/O: + +```csharp +public sealed class BackendOptionsValidator : IAsyncValidateOptions +{ + public async Task ValidateAsync( + string? name, BackendOptions options, CancellationToken cancellationToken = default) => + await IsReachableAsync(options.HostName, cancellationToken) + ? ValidateOptionsResult.Success + : ValidateOptionsResult.Fail($"'{options.HostName}' isn't reachable."); + + // Source-generated validators also implement this synchronous fallback. + public ValidateOptionsResult Validate(string? name, BackendOptions options) => + ValidateOptionsResult.Fail("Backend validation must run asynchronously."); +} +``` ### Activity tracing configuration @@ -663,6 +737,8 @@ It now handles relative paths, missing directories, and file systems that don't - [X25519 Diffie-Hellman key exchange](#x25519-diffie-hellman-key-exchange) - [CryptographicOperations.FixedTimeEquals overload](#cryptographicoperationsfixedtimeequals-overload) +- [AES Key Wrap](#aes-key-wrap) +- [Faster authenticated encryption on Apple platforms](#faster-authenticated-encryption-on-apple-platforms) ### X25519 Diffie-Hellman key exchange @@ -680,15 +756,32 @@ For secret-comparison scenarios where the expected value is a single known byte, bool equal = CryptographicOperations.FixedTimeEquals(receivedSpan, 0x42); ``` +### AES Key Wrap + + now supports the AES Key Wrap algorithms used by JOSE and other libraries to encrypt cryptographic keys: + +- , , , and implement the padded AES-KWP algorithm (RFC 5649). +- , , , and implement the unpadded AES Key Wrap algorithm (RFC 3394), which requires plaintext that's a multiple of 8 bytes. + +Both sets of APIs provide array-returning and span-based overloads: + +:::code language="csharp" source="./snippets/csharp/Libraries.cs" id="AesKeyWrap"::: + +### Faster authenticated encryption on Apple platforms + + and avoid passing empty associated data to CryptoKit on Apple platforms, letting the native implementation use its empty-AAD fast path. On Apple platforms version 26 and later, encryption also skips a copy that was previously required for older Foundation implementations. + ## Networking and transport security - [TLS handshake hardening](#tls-handshake-hardening) +- [Experimental caller-driven TLS sessions](#experimental-caller-driven-tls-sessions) - [HTTP request compression](#http-request-compression) - [Configurable HTTP connection eviction](#configurable-http-connection-eviction) - [DNS record resolution APIs](#dns-record-resolution-apis) - [HTTP/2 automatic downgrade for Windows authentication](#http2-automatic-downgrade-for-windows-authentication) - [QUIC stream priority](#quic-stream-priority) - [Video MIME type constants](#video-mime-type-constants) +- [HTTP metrics use observable instruments](#http-metrics-use-observable-instruments) ### TLS handshake hardening @@ -697,6 +790,17 @@ Two items improve TLS (Trans - server-side handshake bounds-checking fixes in `TlsFrameHelper` close several edge cases that could surface as `IOException` on malformed ClientHello records. - On Linux, certificate-validation failures now surface as standard TLS alerts to the peer, matching Windows behavior. Connecting clients receive an actionable handshake error instead of a connection drop. +Negotiate authentication servers can also validate TLS channel binding tokens on Unix. The managed GSSAPI path passes the channel binding data to `gss_accept_sec_context`, which rejects a mismatch in the same way as the existing Unix client path. This enables Extended Protection scenarios, such as ASP.NET Core's Negotiate authentication, that bind authentication to the underlying TLS connection. + +### Experimental caller-driven TLS sessions + +> [!WARNING] +> The `TlsContext`, `TlsSession`, `TlsBufferSession`, `TlsSocketSession`, and `TlsOperationStatus` types are experimental in .NET 11 and report diagnostic `SYSLIB5007`. + + adds a caller-driven, non-blocking TLS state machine for advanced transports where the application controls buffers and I/O scheduling. `TlsBufferSession` operates over caller-provided spans, while `TlsSocketSession` works with a `SafeSocketHandle`. + +Operations such as `Handshake`, `Read`, `Write`, `Shutdown`, and `RequestClientCertificate` return `TlsOperationStatus`, which reports whether an operation completed, needs more input, needs a larger destination buffer, or requires certificate validation or a new `TlsContext`. + ### HTTP request compression adds , , and wrappers for request bodies. These wrappers set the `Content-Encoding` header and stream compressed content as the request serializes. @@ -709,6 +813,8 @@ Two items improve TLS (Trans adds typed record-resolution APIs, including , , , , , and , together with `Async` variants. The results include records, response code, and negative-cache time-to-live (TTL) metadata through . +The new class provides the same record types through an instance API that accepts a object, which lets you supply a custom list of DNS servers instead of using the platform resolver configuration. `DnsResolver` and the static `Dns.Resolve*` methods now work on Linux in addition to Windows and macOS. + ### HTTP/2 automatic downgrade for Windows authentication automatically downgrades to HTTP/1.1 when a request requires Windows authentication (NTLM/Negotiate) over HTTP/2. The HTTP/2 specification disallows the connection-bound authentication schemes that NTLM and Kerberos rely on, so these requests previously failed. With the downgrade in place, applications targeting mixed-authentication environments—common in enterprise intranets—work without explicit `HttpRequestMessage.Version` overrides. @@ -734,6 +840,10 @@ A new c These join the existing `MediaTypeNames.Application`, `MediaTypeNames.Image`, `MediaTypeNames.Text`, and `MediaTypeNames.Multipart` classes. +### HTTP metrics use observable instruments + +The high-cardinality HTTP `open_connections` and `active_requests` metrics are now observable instruments instead of regular counters. If you use directly to read these metrics, call to receive measurements from them. + ## Unsafe API accessibility .NET 11 removes the `[RequiresUnsafe]` attribute from a large set of APIs that take pointer parameters. Previously, calling these methods from code that used `unsafe` blocks still required a project-level `true` setting because the attribute enforced that requirement independently. Now, only the standard `unsafe` block or method modifier is required. diff --git a/docs/core/whats-new/dotnet-11/overview.md b/docs/core/whats-new/dotnet-11/overview.md index 42a05a01aeea4..0d8a073b47a76 100644 --- a/docs/core/whats-new/dotnet-11/overview.md +++ b/docs/core/whats-new/dotnet-11/overview.md @@ -2,16 +2,16 @@ title: What's new in .NET 11 description: Learn about the new features introduced in .NET 11 for the runtime, libraries, and SDK. Also find links to what's new in other areas, such as ASP.NET Core. titleSuffix: "" -ms.date: 08/12/2026 +ms.date: 09/08/2026 ai-usage: ai-assisted ms.update-cycle: 3650-days --- # What's new in .NET 11 -This article describes new features in .NET 11. It was last updated for Preview 7. +This article describes new features in .NET 11. It was last updated for release candidate 1 (RC 1). -.NET 11 is currently in preview. The final release is expected in November 2026. You can [download .NET 11 here](https://dotnet.microsoft.com/download/dotnet/11.0). +.NET 11 is currently in release candidate. General availability is expected in November 2026. You can [download .NET 11 here](https://dotnet.microsoft.com/download/dotnet/11.0). ## .NET runtime @@ -23,9 +23,10 @@ The .NET 11 runtime includes: - Runtime Async tiered compilation, task and value-task factory intrinsics, and implicit tailcall improvements that reduce warm-up allocations and speed up common `await` paths. - JIT improvements for bounds check elimination, redundant checked context removal, devirtualization, switch expression folding, constant-folding `SequenceEqual`, and redundant branch elimination. There are also new Arm SVE2 intrinsics, improved hardware-intrinsic cost modeling, and a faster `Math.BigMul` on x64 that emits a single `MUL` instruction. - CoreCLR on WebAssembly now runs the libraries test suite end to end, and the runtime adds AVX-VNNI-512 hardware intrinsics for vectorized multiply-add workloads. -- In-process crash report logging on mobile platforms that captures the managed stack trace and runtime state before the process exits. +- In-process crash report logging that captures the managed stack trace and runtime state before the process exits, available on mobile platforms as well as Linux and macOS. - NativeAOT faster interface dispatch using a shared dispatch helper, reducing binary size at call sites and improving throughput for interface-heavy workloads. - SIMD lane construction and composition APIs (`CreateGeometricSequence`, `Zip`, `Unzip`, and the `Concat` family) across `Vector128`, `Vector256`, `Vector512`, `Vector64`, and `Vector`. +- Hardware FP16 instructions for `Half` arithmetic and conversions on x64 and Arm64. For more information, see [What's new in the .NET 11 runtime](runtime.md). @@ -33,25 +34,26 @@ For more information, see [What's new in the .NET 11 runtime](runtime.md). The .NET 11 libraries include new APIs for: -- expansion with run-and-capture helpers, fire-and-forget launches, lifecycle methods, tighter handle control, and new for suspended starts and for safe process lookup. -- Compression, including improved Base64 APIs, new methods for ZIP archive entries, Zstandard compression in , and CRC32 validation when reading ZIP entries. +- expansion with run-and-capture helpers, fire-and-forget launches, lifecycle methods, tighter handle control, new for suspended starts, for safe process lookup, and with for signaling processes and inspecting how they exited. +- Compression, including improved Base64 APIs, new methods for ZIP archive entries, Zstandard compression in , CRC32 validation when reading ZIP entries, and a `Reset()` method on the streamless Deflate, ZLib, and GZip encoders and decoders. - New numeric APIs, including IEEE 754 decimal floating-point types (, , and ), for delimiter-aware parsing, and generic . -- System.Text.Json improvements, including generic type info retrieval, , per-member naming policy overrides, type-level ignore conditions, F# discriminated union support, with options, `SerializeAsyncEnumerable` overloads for `PipeWriter` targets and top-level values (NDJSON) output, and serialization of C# union types. +- System.Text.Json improvements, including generic type info retrieval, , per-member naming policy overrides, type-level ignore conditions, F# discriminated union support, with options, `SerializeAsyncEnumerable` overloads for `PipeWriter` targets and top-level values (NDJSON) output, serialization of C# union types with the new `JsonUnionTypeStructuralClassifier`, built-in converters for `BFloat16` and the new decimal floating-point types, and base64 schema metadata from `JsonSchemaExporter`. - Built-in OpenTelemetry metrics for . - Discriminated-union scaffolding (`UnionAttribute` and `IUnion`) in . - Tar archive format selection and GNU sparse format 1.0 support. - `Console` support for the `FORCE_COLOR` environment variable. -- TLS handshake hardening and certificate-validation alerts on Linux. -- Networking additions, including HTTP request-body compression wrappers, configurable HTTP connection eviction, and typed DNS record resolution APIs. +- TLS handshake hardening, certificate-validation alerts on Linux, channel binding validation on Unix, and an experimental caller-driven TLS session API (`TlsBufferSession` and `TlsSocketSession`). +- Networking additions, including HTTP request-body compression wrappers, configurable HTTP connection eviction, and typed DNS record resolution APIs on Windows, Linux, and macOS through and the new class. - HTTP/2 automatic downgrade for Windows authentication. - LINQ join improvements, including `FullJoin` and tuple-returning `Join` and `GroupJoin` overloads, across , , and . -- A new class for X25519 key exchange. +- A new class for X25519 key exchange, and unpadded AES Key Wrap support (`EncryptKeyWrap`/`DecryptKeyWrap`) on . - Generic overloads on — `NextInteger` and `NextBinaryFloat` — that work with any numeric generic type. - factory method that creates a comparer from a key selector. - for HTTP/3 stream prioritization. - Video MIME type constants in . - Four new `Stream` types (`ReadOnlyMemoryStream`, `WritableMemoryStream`, `ReadOnlySequenceStream`, `StringStream`) that wrap in-memory data without copying. -- Asynchronous validation in `System.ComponentModel.DataAnnotations` via `AsyncValidationAttribute`, `IAsyncValidatableObject`, and new `Validator.ValidateObjectAsync` methods. +- constructors that accept `ReadOnlySpan`, `ReadOnlySpan`, and `ReadOnlySpan`. +- Asynchronous validation in `System.ComponentModel.DataAnnotations` via `AsyncValidationAttribute`, `IAsyncValidatableObject`, and new `Validator.ValidateObjectAsync` methods, along with asynchronous `Microsoft.Extensions.Options` validation through `IAsyncStartupValidator`. - Activity tracing configuration using rules in `Microsoft.Extensions.Diagnostics`, enabling declarative control of `Activity` tracing without wiring up `ActivityListener` instances manually. - Cross-lane vector operations including `CreateGeometricSequence`, `Zip`, `Unzip`, and the `Concat` family on `Vector128`, `Vector256`, `Vector512`, `Vector64`, and `Vector`. @@ -64,18 +66,20 @@ The .NET 11 SDK includes: - Smaller SDK installers on Linux and macOS through assembly deduplication, with additional savings by skipping crossgen for `DotnetTools`-only assemblies. - Improved [CA1873](../../../fundamentals/code-analysis/quality-rules/ca1873.md) code analyzer with reduced noise and clearer diagnostic messages. - Support for creating and editing solution filters (`.slnf`) from the `dotnet sln` CLI. -- File-based app support for `#:include` to split apps across multiple files, and `#:include ./libs/MyLib.dll` to include compiled DLL references directly. +- File-based app support for `#:include` to split apps across multiple files and to include compiled DLL references directly, plus Native AOT build-output reuse and `dotnet format` support for file-based apps. - A new `dotnet run -e` option to pass environment variables from the command line. - `dotnet watch` improvements, including Aspire app-host integration, automatic crash recovery, and device selection for MAUI and mobile projects. - OpenTelemetry replaces Application Insights for CLI telemetry. - NativeAOT CLI entry point that serves the full command surface—including `--help` for all built-in commands and tool/external-command launches—out-of-process from the AOT path, skipping managed CLI startup. - NativeAOT CLI and the MSBuild server are now enabled by default. - `dotnet test` improvements, including `--no-dependencies`, `DOTNET_TEST_RUNNER` environment variable, `--use-current-runtime`, `--test-modules` exclusion patterns, per-assembly test counts, and live display of in-flight tests. -- Additional `dotnet test` improvements include run-level `--timeout` and `--maximum-failed-tests`, traversal-project support, JSON output for `--list-tests`, and artifact post-processing for multi-module runs. +- `dotnet test` support for Android, iOS, macOS, and Mac Catalyst test projects, with device selection and new `androidtest`, `iostest`, `macostest`, and `maccatalysttest` templates. +- Additional `dotnet test` run-level options, including `--timeout`, `--maximum-failed-tests`, `--results-directory-layout per-module`, and an experimental affected-test workflow, along with traversal-project support, JSON output for `--list-tests`, and artifact post-processing for multi-module runs. - Built-in test templates support xUnit v3 (defaulting to Microsoft.Testing.Platform) and NUnit with an opt-in `--test-runner` option. - Multi-architecture container image builds with Podman using the SDK's container publishing support. -- Container publishing now prefers platform-native local runtimes (`wslc` on Windows and `container` on macOS) before Docker and Podman. +- Container publishing now prefers platform-native local runtimes (`wslc` on Windows and `container` on macOS) before Docker and Podman, produces reproducible image digests through `SOURCE_DATE_EPOCH`, and skips redundant layer uploads when the target manifest already exists. - TypeScript compilation outputs from Razor Class Libraries now integrate correctly with the Static Web Assets pipeline. +- `dotnet format` limits `.editorconfig` discovery in folder mode to the ancestor directories of included files. - The `dotnet` CLI no longer suppresses the MSBuild build server when `DOTNET_CLI_USE_MSBUILD_SERVER` is unset, and the OTLP telemetry exporter activates on any standard `OTEL_EXPORTER_OTLP_*` environment variable. For more information, see [What's new in the SDK for .NET 11](sdk.md). @@ -86,7 +90,7 @@ For information about what's new in ASP.NET Core, see [What's new in ASP.NET Cor ## C# 15 -C# 15 includes these features: +C# 15 is the default language version for projects that target .NET 11 and includes these features: - [Collection expression arguments](../../../csharp/whats-new/csharp-15.md#collection-expression-arguments) - [Union types](../../../csharp/whats-new/csharp-15.md#union-types) diff --git a/docs/core/whats-new/dotnet-11/runtime.md b/docs/core/whats-new/dotnet-11/runtime.md index 73ab4e7e7fc86..39a93b670679f 100644 --- a/docs/core/whats-new/dotnet-11/runtime.md +++ b/docs/core/whats-new/dotnet-11/runtime.md @@ -2,14 +2,14 @@ title: What's new in .NET 11 runtime description: Learn about the new features introduced in the .NET 11 runtime. titleSuffix: "" -ms.date: 08/15/2026 +ms.date: 09/08/2026 ai-usage: ai-assisted ms.update-cycle: 3650-days --- # What's new in the .NET 11 runtime -This article describes new features in the .NET runtime for .NET 11. It was last updated for Preview 7. +This article describes new features in the .NET runtime for .NET 11. It was last updated for release candidate 1 (RC 1). ## Updated minimum hardware requirements @@ -239,7 +239,7 @@ These optimizations are most visible after inlining, where guards from different .NET 11 includes several new hardware intrinsics and code generation improvements: -- **F16C acceleration for `Half` ↔ `float` conversions on x64:** When the CPU supports F16C (most AVX2-capable hardware), conversions between and `float`/`double` now use the dedicated `vcvtph2ps`/`vcvtps2ph` instructions instead of helper calls. +- **Hardware FP16 instructions for `Half` arithmetic and conversions:** The JIT uses hardware FP16 instructions for arithmetic and conversions when the processor supports them. On x64, arithmetic uses AVX10.1, while conversions between `Half` and `float` can use F16C (available on most AVX2-capable hardware). On Arm64, arithmetic uses the optional FP16 instruction set, while conversions between `Half` and `float` or `double` use baseline Arm64 instructions. The optimization requires no application changes and preserves the existing ABI representation of `Half`. - **Better cost modeling for x86/x64 SIMD:** The JIT's floating-point execution and size costs previously reflected x87-era assumptions. Updated costs that reflect modern SSE/AVX hardware let the JIT make better decisions about hoisting and common subexpression elimination (CSE) around SIMD code. - **Faster `DotProduct` on AVX:** Lowering for `Vector128.Dot`-style operations now emits a `mul + permute + add` sequence instead of `vdpps`/`vdppd` when AVX is available, which is consistently faster. - **Faster `IndexOfAnyAsciiSearcher` on Arm64:** Arm64 versions of `Vector*.Count`, `IndexOf`, and `LastIndexOf` no longer route through `ExtractMostSignificantBits`, yielding a 5–50% improvement in workloads that use these APIs in their core loop. @@ -282,7 +282,7 @@ The .NET runtime can now initialize on machines with more than 1024 logical proc A new in-process crash reporting mechanism captures diagnostic information from within the crashing process before it terminates. Previously, crash diagnostics were collected by an out-of-process monitor. While the out-of-process approach is safe, it can miss information that's only available inside the dying process. The new in-process path logs the managed stack trace, module list, and key runtime state to a well-known path before the process exits. -This capability is specific to mobile platforms. +This capability originated on mobile platforms and is now also available on Linux and macOS. When `DOTNET_DbgEnableMiniDump` isn't enabled, set `DOTNET_EnableCrashReport=1` or `DOTNET_EnableCrashReportOnly=1` to select the in-process reporter. Existing `createdump` behavior remains in place when minidumps are enabled. ## NativeAOT: faster interface dispatch diff --git a/docs/core/whats-new/dotnet-11/sdk.md b/docs/core/whats-new/dotnet-11/sdk.md index 5348c3f697f88..365ecd8c645aa 100644 --- a/docs/core/whats-new/dotnet-11/sdk.md +++ b/docs/core/whats-new/dotnet-11/sdk.md @@ -2,14 +2,14 @@ title: What's new in the SDK and tooling for .NET 11 description: Learn about the new .NET SDK features introduced in .NET 11. titleSuffix: "" -ms.date: 08/12/2026 +ms.date: 09/08/2026 ai-usage: ai-assisted ms.update-cycle: 3650-days --- # What's new in the SDK and tooling for .NET 11 -This article describes new features and enhancements in the .NET SDK for .NET 11. It was last updated for Preview 7. You can [download .NET 11 here](https://dotnet.microsoft.com/download/dotnet/11.0). +This article describes new features and enhancements in the .NET SDK for .NET 11. It was last updated for release candidate 1 (RC 1). You can [download .NET 11 here](https://dotnet.microsoft.com/download/dotnet/11.0). ## SDK footprint @@ -91,12 +91,14 @@ The pack operation still proceeds with a warning to avoid breaking existing proj - [Solution filter CLI support](#solution-filter-cli-support) - [File-based apps split across files](#file-based-apps-split-across-files) +- [File-based apps reuse Native AOT build outputs](#file-based-apps-reuse-native-aot-build-outputs) - [Pass environment variables with dotnet run](#pass-environment-variables-with-dotnet-run) - [dotnet watch improvements](#dotnet-watch-improvements) - [Fish shell completions](#fish-shell-completions) - [dotnet reference falls back to current directory](#dotnet-reference-falls-back-to-current-directory) - [dotnet reference support for file-based apps](#dotnet-reference-support-for-file-based-apps) - [Launch settings notice moved to stderr](#launch-settings-notice-moved-to-stderr) +- [dotnet format limits configuration discovery to included files](#dotnet-format-limits-configuration-discovery-to-included-files) - [Other CLI improvements](#other-cli-improvements) ### Solution filter CLI support @@ -121,6 +123,18 @@ File-based apps now support an `#:include` directive, so you can move shared hel Console.WriteLine(Helpers.FormatOutput(new Customer())); ``` +### File-based apps reuse Native AOT build outputs + +The Native AOT command-line path can reuse existing build outputs when it runs an unchanged file-based app. Supported cached launches include `dotnet run --file app.cs`, `dotnet run app.cs`, and `dotnet app.cs`. If the cached output doesn't match the current command arguments, the CLI falls back to the managed path. + +`dotnet format` also accepts a file-based app: + +```console +dotnet format app.cs +``` + +When a repository enables the SDK artifacts layout, file-based app outputs are placed under that repository's artifacts directory instead of the default per-user cache. + ### Pass environment variables with dotnet run `dotnet run -e KEY=VALUE` passes environment variables to the launched app from the command line, without requiring you to export shell state or edit launch profiles: @@ -180,6 +194,16 @@ Previously, these commands failed with `Could not find project or directory ''` The "Using launch settings from..." informational message now writes to `stderr` instead of `stdout`. Scripts that capture the standard output of `dotnet run` no longer need to strip this line out. +### dotnet format limits configuration discovery to included files + +In folder mode, `dotnet format` now finds `.editorconfig` files by walking the ancestor directories of files that will actually be formatted. It no longer scans unrelated subtrees, such as large `node_modules` directories: + +```console +dotnet format whitespace . --folder --include src/App/Program.cs +``` + +In one monorepo benchmark, formatting one included file improved from 1.09 seconds to 0.55 seconds. Use `.globalconfig`, rather than an `is_global = true` `.editorconfig` in an unrelated subtree, for configuration that must apply globally. + ### Other CLI improvements - `dotnet format` now accepts `--framework` for multi-targeted projects. @@ -187,6 +211,10 @@ The "Using launch settings from..." informational message now writes to `stderr` - `dotnet tool exec` and `dnx` no longer prompt for an extra approval when running tools. - `dotnet nuget --help` now correctly forwards to the NuGet CLI's help output instead of falling back to generic help. - `dotnet publish` no longer removes native DLLs on subsequent runs of single-file publish. +- `dotnet new install --prerelease` selects the latest available version, including prerelease versions, when a template package version isn't specified explicitly. An explicit package version, such as `Contoso.Templates@2.0.0-preview.3`, continues to select that exact version. +- Workload operations and `global.json` now detect versions written in the internal NuGet package format and report the corrected user-facing format instead of a package-not-found error. +- The `Configuration` environment variable now supplies the default value for the shared `--configuration`/`-c` CLI options across commands. An explicit command-line option still takes precedence, and empty or whitespace-only environment values are ignored. +- File-based property directives no longer permit `:` in the property name. Replace syntax such as `#:property Foo:Bar=value` with a valid MSBuild property name. ## Web assets and telemetry @@ -235,6 +263,7 @@ A new MSBuild property lets upstack tooling (for example, `dotnet/macios` and `d ## Test improvements - [dotnet test improvements](#dotnet-test-improvements) +- [dotnet test support for mobile app testing](#dotnet-test-support-for-mobile-app-testing) - [dotnet test run-level policy options](#dotnet-test-run-level-policy-options) - [dotnet test support for traversal projects](#dotnet-test-support-for-traversal-projects) - [dotnet test reporter and artifacts improvements](#dotnet-test-reporter-and-artifacts-improvements) @@ -252,16 +281,63 @@ A new MSBuild property lets upstack tooling (for example, `dotnet/macios` and `d - **Terminal logger arguments**: `--tl`, `--terminallogger`, and `--tlp` are now forwarded to MSBuild instead of being passed as test application arguments. - **Live display of in-flight tests**: The progress area shows tests that are running, using a new `TestInProgressMessages` IPC event. The panel keeps per-assembly trimming for large parallel runs and is enabled only for interactive ANSI terminals. - **Two-stage Ctrl+C cancellation**: The first press stops scheduling new test apps and shows a hint; the second press force-kills all child test processes. -- **`--device` for MAUI**: Select a device per target framework when running tests for .NET MAUI projects. - **Protocol 1.1.0 output forwarding**: When the test host supports protocol 1.1.0, stdout/stderr and `IOutputDevice` messages are streamed live through the terminal reporter instead of being shown only on failure. +### dotnet test support for mobile app testing + +The Microsoft Testing Platform path for `dotnet test` supports test projects that target Android, iOS, macOS, and Mac Catalyst. For Android and iOS, it can select connected devices, emulators, or simulators. Use `--device` to select a device per target framework, or let `dotnet test` auto-select when only one is available. + +The workloads include test project templates for Android (`dotnet new androidtest`), iOS (`dotnet new iostest`), macOS (`dotnet new macostest`), and Mac Catalyst (`dotnet new maccatalysttest`). They use MSTest by default, but you can configure another framework supported by [Microsoft.Testing.Platform](../../testing/microsoft-testing-platform-intro.md#supported-test-frameworks). + +`dotnet test -bl` records device selection, deployment, and run-argument builds in one coherent binary log, and `dotnet test` reports the underlying MSBuild errors when deployment or run-argument discovery fails. + ### dotnet test run-level policy options -`dotnet test` now supports run-level `--timeout` and `--maximum-failed-tests` options in Microsoft Testing Platform mode. These options let you stop long or noisy runs consistently across multi-project executions. +The Microsoft Testing Platform path for `dotnet test` adds options that apply to the complete run rather than to each test application. Place these options before `--`; options after `--` continue to be forwarded to each application. + +```console +# Stop the complete run after 90 seconds. +dotnet test --timeout 90s + +# Stop after five failed, errored, timed-out, or cancelled results. +dotnet test --maximum-failed-tests 5 +``` + +`--timeout` accepts `ms`, `s`, and `m` suffixes and counts time only while at least one test application is running. A timeout returns exit code 3, while `--maximum-failed-tests` returns exit code 13 when its limit is reached. + +For solution and multi-targeted runs, the `--results-directory-layout per-module` option gives every test application a separate output directory, preventing reports with the same relative file name from overwriting one another. The default remains `flat`. + +```console +dotnet test --results-directory-layout per-module +``` + +```text +TestResults/ + MyTests/ + net11.0_x64/ + OtherTests/ + net11.0_x64/ +``` + +When the SDK's artifacts output layout is enabled, MTP test reports, coverage, and diagnostics default to `/test//`. An explicit `--results-directory` or `--results-directory-layout` still takes precedence. + +`dotnet test --nologo` maps to Microsoft.Testing.Platform's `--no-banner` option, and `--no-banner` appears in the command help. + +An experimental affected-test workflow is also available through a separately distributed Microsoft.Testing.Platform extension. It can collect a repository's test map and then run only the tests affected by a change. Collection and affected-test selection are mutually exclusive and can't be combined with device testing, parallel modules, or minimum-test policies. + +```powershell +$env:DOTNET_CLI_ENABLE_AFFECTED_TESTS = "1" +dotnet test --collect-test-map +dotnet test --affected-tests +``` ### dotnet test support for traversal projects -`dotnet test` now supports `Microsoft.Build.Traversal` projects. The SDK expands traversal graphs, deduplicates repeated references, and executes tests for the aggregated project set. +`dotnet test` now supports `Microsoft.Build.Traversal` projects. The SDK recursively expands nested traversal projects, deduplicates diamond references, and honors `Configuration` and `Platform` metadata on project references before executing tests for the aggregated project set. + +```console +dotnet test dirs.proj +``` ### dotnet test reporter and artifacts improvements @@ -288,6 +364,7 @@ Both options are available for C#, F#, and VB templates. - [Multi-arch container builds with Podman](#multi-arch-container-builds-with-podman) - [Platform-native local container runtime selection](#platform-native-local-container-runtime-selection) +- [Reproducible container publishing](#reproducible-container-publishing) - [TypeScript outputs integrate with Static Web Assets](#typescript-outputs-integrate-with-static-web-assets) - [MSBuild server and OpenTelemetry environment variables](#msbuild-server-and-opentelemetry-environment-variables) @@ -299,6 +376,18 @@ The SDK's built-in container publishing now supports building multi-architecture Container publishing now prefers platform-native local runtimes when available: `wslc` on Windows, and `container` on macOS. Docker and Podman remain fallbacks. To force a runtime, set `LocalRegistry` explicitly in your project or publish profile. +### Reproducible container publishing + +Publishing the same application more than once could previously produce different container image digests, because timestamps, archive headers, and directory enumeration order varied between builds. Set `SOURCE_DATE_EPOCH` to a stable Unix timestamp so independent publishes of the same inputs produce the same digest: + +```bash +dotnet publish /t:PublishContainer \ + -p:ContainerRegistry=registry.example.com \ + -p:SOURCE_DATE_EPOCH="$(git log -1 --pretty=%ct)" +``` + +Remote registry publishes also check whether the computed image manifest already exists in the destination repository. When it does, the SDK skips processing the layers and configuration while still applying every requested image tag. This optimization is enabled by default; set `ContainerPushNoCache=true` to bypass the manifest-level check. The SDK still checks each layer and configuration blob and doesn't upload blobs that are already present. + ### TypeScript outputs integrate with Static Web Assets Projects that use `Microsoft.TypeScript.MSBuild` in Razor Class Libraries now properly integrate TypeScript compilation outputs with ASP.NET Core Static Web Assets. The new integration hooks TypeScript outputs into the Static Web Assets pipeline after compilation, enabling compression, fingerprinting, and correct rebuild behavior. Previously, rebuild operations could fail because TypeScript outputs were discovered before compilation or stale references persisted after clean. diff --git a/docs/core/whats-new/dotnet-11/snippets/csharp/Libraries.cs b/docs/core/whats-new/dotnet-11/snippets/csharp/Libraries.cs index 11d085a401e68..43eef5796ec08 100644 --- a/docs/core/whats-new/dotnet-11/snippets/csharp/Libraries.cs +++ b/docs/core/whats-new/dotnet-11/snippets/csharp/Libraries.cs @@ -1,9 +1,12 @@ using System.Buffers; +using System.Collections; using System.Diagnostics; using System.Formats.Tar; using System.Globalization; using System.IO.Compression; using System.IO.Pipelines; +using System.Numerics; +using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Text; using System.Text.Json; @@ -27,6 +30,19 @@ static async Task ProcessRunAndCaptureExample() // } + static async Task ProcessSignalExample() + { + // + if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS()) + { + using Process process = Process.Start("sleep", "30")!; + process.Signal(PosixSignal.SIGTERM); + ProcessExitStatus status = await process.WaitForExitStatusAsync(); + Console.WriteLine(status); + } + // + } + static void ZLibEncoderSpanExample() { // @@ -220,6 +236,18 @@ public static void LinqJoinsExample() // } + static void BitArraySpanConstructorExample() + { + // + Span bytes = stackalloc byte[] { 0b_0000_0011, 0b_1000_0000 }; + var bits = new BitArray(bytes); + + Console.WriteLine(bits[0]); // True + Console.WriteLine(bits[1]); // True + Console.WriteLine(bits[15]); // True + // + } + static void EqualityComparerCreateExample() { // @@ -296,6 +324,29 @@ await JsonSerializer.SerializeAsyncEnumerable( // } + static void JsonNumericTypesExample() + { + // + var measurement = new Measurement((Decimal64)1.229m); + string json = JsonSerializer.Serialize(measurement); + Console.WriteLine(json); // {"Voltage":1.229} + + Measurement? roundTripped = JsonSerializer.Deserialize(json); + Console.WriteLine(roundTripped); // Measurement { Voltage = 1.229 } + // + } + + static void JsonUnionStructuralClassifierExample() + { + // + PetUnion? pet = JsonSerializer.Deserialize( + """{"Name":"Misty","Lives":9}""", + PetJsonContext.Default.PetUnion); + + Console.WriteLine(pet?.Value is Cat); // True + // + } + static void X25519KeyExchangeExample() { // @@ -312,6 +363,27 @@ static void X25519KeyExchangeExample() // } + static void AesKeyWrapExample() + { + // + using Aes aes = Aes.Create(); + aes.Key = RandomNumberGenerator.GetBytes(32); // AES-256 key-encryption key + + byte[] keyToWrap = RandomNumberGenerator.GetBytes(24); // Multiple of 8 bytes + + // Unpadded AES Key Wrap (RFC 3394) + byte[] wrapped = aes.EncryptKeyWrap(keyToWrap); + byte[] unwrapped = aes.DecryptKeyWrap(wrapped); + Console.WriteLine(keyToWrap.SequenceEqual(unwrapped)); // True + + // Padded AES-KWP (RFC 5649) accepts a plaintext of any length + byte[] arbitraryLengthKey = RandomNumberGenerator.GetBytes(19); + byte[] wrappedPadded = aes.EncryptKeyWrapPadded(arbitraryLengthKey); + byte[] unwrappedPadded = aes.DecryptKeyWrapPadded(wrappedPadded); + Console.WriteLine(arbitraryLengthKey.SequenceEqual(unwrappedPadded)); // True + // + } + static void NullableUnderlyingTypeExample() { // @@ -335,3 +407,15 @@ sealed class EventData public string? Notes { get; set; } } + +readonly record struct Measurement(Decimal64 Voltage); + +[JsonUnion(TypeClassifier = typeof(JsonUnionTypeStructuralClassifier))] +public union PetUnion(Dog, Cat); + +public sealed record Dog(string Name, string Breed); + +public sealed record Cat(string Name, int Lives); + +[JsonSerializable(typeof(PetUnion))] +internal partial class PetJsonContext : JsonSerializerContext; diff --git a/docs/core/whats-new/dotnet-11/snippets/csharp/snippets.csproj b/docs/core/whats-new/dotnet-11/snippets/csharp/snippets.csproj index 9a2f201832202..366f9210ff13d 100644 --- a/docs/core/whats-new/dotnet-11/snippets/csharp/snippets.csproj +++ b/docs/core/whats-new/dotnet-11/snippets/csharp/snippets.csproj @@ -4,6 +4,7 @@ net11.0 exe enable + preview enable false