From fc53059004c1ea48c0af7c744132dfe972c104be Mon Sep 17 00:00:00 2001
From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com>
Date: Mon, 1 Dec 2025 07:21:28 -0800
Subject: [PATCH 01/28] Update package index with latest published versions
(#50192)
---
docs/azure/includes/dotnet-all.md | 16 ++++++++--------
docs/azure/includes/dotnet-new.md | 12 ++++++------
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md
index 306ebf3a083c7..55a7f91d188fe 100644
--- a/docs/azure/includes/dotnet-all.md
+++ b/docs/azure/includes/dotnet-all.md
@@ -25,7 +25,7 @@
| Confidential Ledger | NuGet [1.3.0](https://www.nuget.org/packages/Azure.Security.ConfidentialLedger/1.3.0)
NuGet [1.4.1-beta.2](https://www.nuget.org/packages/Azure.Security.ConfidentialLedger/1.4.1-beta.2) | [docs](/dotnet/api/overview/azure/Security.ConfidentialLedger-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.ConfidentialLedger_1.3.0/sdk/confidentialledger/Azure.Security.ConfidentialLedger/)
GitHub [1.4.1-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.ConfidentialLedger_1.4.1-beta.2/sdk/confidentialledger/Azure.Security.ConfidentialLedger/) |
| Container Registry | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Containers.ContainerRegistry/1.2.0) | [docs](/dotnet/api/overview/azure/Containers.ContainerRegistry-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Containers.ContainerRegistry_1.2.0/sdk/containerregistry/Azure.Containers.ContainerRegistry/) |
| Content Safety | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.ContentSafety/1.0.0) | [docs](/dotnet/api/overview/azure/AI.ContentSafety-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.ContentSafety_1.0.0/sdk/contentsafety/Azure.AI.ContentSafety/) |
-| Conversational Language Understanding | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.Language.Conversations/1.1.0)
NuGet [2.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.Language.Conversations/2.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_1.1.0/sdk/cognitivelanguage/Azure.AI.Language.Conversations/)
GitHub [2.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_2.0.0-beta.4/sdk/cognitivelanguage/Azure.AI.Language.Conversations/) |
+| Conversational Language Understanding | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.Language.Conversations/1.1.0)
NuGet [2.0.0-beta.5](https://www.nuget.org/packages/Azure.AI.Language.Conversations/2.0.0-beta.5) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_1.1.0/sdk/cognitivelanguage/Azure.AI.Language.Conversations/)
GitHub [2.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_2.0.0-beta.5/sdk/cognitivelanguage/Azure.AI.Language.Conversations/) |
| Conversations Authoring | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Language.Conversations.Authoring/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations.Authoring-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations.Authoring_1.0.0-beta.2/sdk/cognitivelanguage/Azure.AI.Language.Conversations.Authoring/) |
| Core - Client - AMQP | NuGet [1.3.1](https://www.nuget.org/packages/Azure.Core.Amqp/1.3.1) | [docs](/dotnet/api/overview/azure/Core.Amqp-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core.Amqp_1.3.1/sdk/core/Azure.Core.Amqp/) |
| Core - Client - Core | NuGet [1.50.0](https://www.nuget.org/packages/Azure.Core/1.50.0) | [docs](/dotnet/api/overview/azure/Core-readme) | GitHub [1.50.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core_1.50.0/sdk/core/Azure.Core/) |
@@ -60,7 +60,7 @@
| Key Vault - Certificates | NuGet [4.8.0](https://www.nuget.org/packages/Azure.Security.KeyVault.Certificates/4.8.0) | [docs](/dotnet/api/overview/azure/Security.KeyVault.Certificates-readme) | GitHub [4.8.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.KeyVault.Certificates_4.8.0/sdk/keyvault/Azure.Security.KeyVault.Certificates/) |
| Key Vault - Keys | NuGet [4.8.0](https://www.nuget.org/packages/Azure.Security.KeyVault.Keys/4.8.0) | [docs](/dotnet/api/overview/azure/Security.KeyVault.Keys-readme) | GitHub [4.8.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.KeyVault.Keys_4.8.0/sdk/keyvault/Azure.Security.KeyVault.Keys/) |
| Key Vault - Secrets | NuGet [4.8.0](https://www.nuget.org/packages/Azure.Security.KeyVault.Secrets/4.8.0) | [docs](/dotnet/api/overview/azure/Security.KeyVault.Secrets-readme) | GitHub [4.8.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.KeyVault.Secrets_4.8.0/sdk/keyvault/Azure.Security.KeyVault.Secrets/) |
-| Language Text | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.AI.Language.Text/1.0.0-beta.3) | [docs](/dotnet/api/overview/azure/AI.Language.Text-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Text_1.0.0-beta.3/sdk/cognitivelanguage/Azure.AI.Language.Text/) |
+| Language Text | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.Language.Text/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.Language.Text-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Text_1.0.0-beta.4/sdk/cognitivelanguage/Azure.AI.Language.Text/) |
| Load Testing | NuGet [1.0.2](https://www.nuget.org/packages/Azure.Developer.LoadTesting/1.0.2)
NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.Developer.LoadTesting/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/Developer.LoadTesting-readme) | GitHub [1.0.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Developer.LoadTesting_1.0.2/sdk/loadtestservice/Azure.Developer.LoadTesting/)
GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Developer.LoadTesting_1.2.0-beta.1/sdk/loadtestservice/Azure.Developer.LoadTesting/) |
| Maps Common | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.Maps.Common/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/Maps.Common-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Maps.Common_1.0.0-beta.4/sdk/maps/Azure.Maps.Common/) |
| Maps Geolocation | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.Maps.Geolocation/1.0.0-beta.3) | [docs](/dotnet/api/overview/azure/Maps.Geolocation-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Maps.Geolocation_1.0.0-beta.3/sdk/maps/Azure.Maps.Geolocation/) |
@@ -77,7 +77,7 @@
| Monitor Ingestion | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Monitor.Ingestion/1.2.0) | [docs](/dotnet/api/overview/azure/Monitor.Ingestion-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.Ingestion_1.2.0/sdk/monitor/Azure.Monitor.Ingestion/) |
| Online Experimentation | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.OnlineExperimentation/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.OnlineExperimentation-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.OnlineExperimentation_1.0.0-beta.1/sdk/onlineexperimentation/Azure.Analytics.OnlineExperimentation/) |
| OpenAI Assistants | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.OpenAI.Assistants/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.OpenAI.Assistants-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI.Assistants_1.0.0-beta.4/sdk/openai/Azure.AI.OpenAI.Assistants/) |
-| OpenAI Inference | NuGet [2.1.0](https://www.nuget.org/packages/Azure.AI.OpenAI/2.1.0)
NuGet [2.5.0-beta.1](https://www.nuget.org/packages/Azure.AI.OpenAI/2.5.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.OpenAI-readme) | GitHub [2.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.1.0/sdk/openai/Azure.AI.OpenAI/)
GitHub [2.5.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.5.0-beta.1/sdk/openai/Azure.AI.OpenAI/) |
+| OpenAI Inference | NuGet [2.1.0](https://www.nuget.org/packages/Azure.AI.OpenAI/2.1.0)
NuGet [2.7.0-beta.1](https://www.nuget.org/packages/Azure.AI.OpenAI/2.7.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.OpenAI-readme) | GitHub [2.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.1.0/sdk/openai/Azure.AI.OpenAI/)
GitHub [2.7.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.7.0-beta.1/sdk/openai/Azure.AI.OpenAI/) |
| OpenTelemetry AspNetCore | NuGet [1.4.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.AspNetCore/1.4.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.AspNetCore-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.AspNetCore_1.4.0/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/) |
| OpenTelemetry Exporter | NuGet [1.5.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.Exporter/1.5.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.Exporter-readme) | GitHub [1.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.Exporter_1.5.0/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/) |
| Personalizer | NuGet [2.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Personalizer/2.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Personalizer-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [2.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Personalizer_2.0.0-beta.2/sdk/personalizer/Azure.AI.Personalizer/) |
@@ -250,7 +250,7 @@
| Resource Management - DNS | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Dns/1.1.1)
NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.Dns/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Dns-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Dns_1.1.1/sdk/dns/Azure.ResourceManager.Dns/)
GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Dns_1.2.0-beta.2/sdk/dns/Azure.ResourceManager.Dns/) |
| Resource Management - DNS Resolver | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.DnsResolver/1.2.0)
NuGet [1.3.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.DnsResolver/1.3.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.DnsResolver-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DnsResolver_1.2.0/sdk/dnsresolver/Azure.ResourceManager.DnsResolver/)
GitHub [1.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DnsResolver_1.3.0-beta.1/sdk/dnsresolver/Azure.ResourceManager.DnsResolver/) |
| Resource Management - Durabletask | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.DurableTask/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.DurableTask-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DurableTask_1.0.0/sdk/durabletask/Azure.ResourceManager.DurableTask/) |
-| Resource Management - Dynatrace | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Dynatrace/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Dynatrace-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Dynatrace_1.1.1/sdk/dynatrace/Azure.ResourceManager.Dynatrace/) |
+| Resource Management - Dynatrace | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.Dynatrace/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Dynatrace-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Dynatrace_1.2.0/sdk/dynatrace/Azure.ResourceManager.Dynatrace/) |
| Resource Management - Edge Order | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.EdgeOrder/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.EdgeOrder-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EdgeOrder_1.1.1/sdk/edgeorder/Azure.ResourceManager.EdgeOrder/) |
| Resource Management - Edge Zones | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.EdgeZones/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.EdgeZones-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EdgeZones_1.0.0-beta.2/sdk/edgezones/Azure.ResourceManager.EdgeZones/) |
| Resource Management - Elastic | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.Elastic/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Elastic-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Elastic_1.1.0/sdk/elastic/Azure.ResourceManager.Elastic/) |
@@ -311,7 +311,7 @@
| Resource Management - Monitor | NuGet [1.3.1](https://www.nuget.org/packages/Azure.ResourceManager.Monitor/1.3.1)
NuGet [1.4.0-beta.4](https://www.nuget.org/packages/Azure.ResourceManager.Monitor/1.4.0-beta.4) | [docs](/dotnet/api/overview/azure/ResourceManager.Monitor-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Monitor_1.3.1/sdk/monitor/Azure.ResourceManager.Monitor/)
GitHub [1.4.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Monitor_1.4.0-beta.4/sdk/monitor/Azure.ResourceManager.Monitor/) |
| Resource Management - MySQL | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.MySql/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.MySql-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.MySql_1.2.0/sdk/mysql/Azure.ResourceManager.MySql/) |
| Resource Management - Neon Postgres | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.NeonPostgres/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.NeonPostgres-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NeonPostgres_1.0.0/sdk/neonpostgres/Azure.ResourceManager.NeonPostgres/) |
-| Resource Management - NetApp Files | NuGet [1.12.0](https://www.nuget.org/packages/Azure.ResourceManager.NetApp/1.12.0)
NuGet [1.13.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.NetApp/1.13.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.NetApp-readme) | GitHub [1.12.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetApp_1.12.0/sdk/netapp/Azure.ResourceManager.NetApp/)
GitHub [1.13.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetApp_1.13.0-beta.1/sdk/netapp/Azure.ResourceManager.NetApp/) |
+| Resource Management - NetApp Files | NuGet [1.14.0](https://www.nuget.org/packages/Azure.ResourceManager.NetApp/1.14.0) | [docs](/dotnet/api/overview/azure/ResourceManager.NetApp-readme) | GitHub [1.14.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetApp_1.14.0/sdk/netapp/Azure.ResourceManager.NetApp/) |
| Resource Management - Network | NuGet [1.13.0](https://www.nuget.org/packages/Azure.ResourceManager.Network/1.13.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Network-readme) | GitHub [1.13.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Network_1.13.0/sdk/network/Azure.ResourceManager.Network/) |
| Resource Management - Network Cloud | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.NetworkCloud/1.2.0)
NuGet [1.3.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.NetworkCloud/1.3.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.NetworkCloud-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetworkCloud_1.2.0/sdk/networkcloud/Azure.ResourceManager.NetworkCloud/)
GitHub [1.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetworkCloud_1.3.0-beta.1/sdk/networkcloud/Azure.ResourceManager.NetworkCloud/) |
| Resource Management - Network Function | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.NetworkFunction/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.NetworkFunction-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.NetworkFunction_1.0.0-beta.5/sdk/networkfunction/Azure.ResourceManager.NetworkFunction/) |
@@ -351,7 +351,7 @@
| Resource Management - Resource Health | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.ResourceHealth/1.0.0)
NuGet [1.1.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.ResourceHealth/1.1.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.ResourceHealth-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceHealth_1.0.0/sdk/resourcehealth/Azure.ResourceManager.ResourceHealth/)
GitHub [1.1.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceHealth_1.1.0-beta.5/sdk/resourcehealth/Azure.ResourceManager.ResourceHealth/) |
| Resource Management - Resource Manager | NuGet [1.13.2](https://www.nuget.org/packages/Azure.ResourceManager/1.13.2)
NuGet [1.14.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager/1.14.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager-readme) | GitHub [1.13.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager_1.13.2/sdk/resourcemanager/Azure.ResourceManager/)
GitHub [1.14.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager_1.14.0-beta.1/sdk/resourcemanager/Azure.ResourceManager/) |
| Resource Management - Resource Mover | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ResourceMover/1.1.1)
NuGet [1.1.2-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.ResourceMover/1.1.2-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.ResourceMover-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceMover_1.1.1/sdk/resourcemover/Azure.ResourceManager.ResourceMover/)
GitHub [1.1.2-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceMover_1.1.2-beta.2/sdk/resourcemover/Azure.ResourceManager.ResourceMover/) |
-| Resource Management - Resources | NuGet [1.11.1](https://www.nuget.org/packages/Azure.ResourceManager.Resources/1.11.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Resources-readme) | GitHub [1.11.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Resources_1.11.1/sdk/resources/Azure.ResourceManager.Resources/) |
+| Resource Management - Resources | NuGet [1.11.2](https://www.nuget.org/packages/Azure.ResourceManager.Resources/1.11.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Resources-readme) | GitHub [1.11.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Resources_1.11.2/sdk/resources/Azure.ResourceManager.Resources/) |
| Resource Management - ScVmm | NuGet [1.0.0-beta.6](https://www.nuget.org/packages/Azure.ResourceManager.ScVmm/1.0.0-beta.6) | [docs](/dotnet/api/overview/azure/ResourceManager.ScVmm-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ScVmm_1.0.0-beta.6/sdk/arc-scvmm/Azure.ResourceManager.ScVmm/) |
| Resource Management - Secretsstoreextension | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.SecretsStoreExtension/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.SecretsStoreExtension-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.SecretsStoreExtension_1.0.0-beta.1/sdk/secretsstoreextension/Azure.ResourceManager.SecretsStoreExtension/) |
| Resource Management - Security | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.SecurityCenter/1.1.0)
NuGet [1.2.0-beta.6](https://www.nuget.org/packages/Azure.ResourceManager.SecurityCenter/1.2.0-beta.6) | [docs](/dotnet/api/overview/azure/ResourceManager.SecurityCenter-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SecurityCenter_1.1.0/sdk/securitycenter/Azure.ResourceManager.SecurityCenter/)
GitHub [1.2.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SecurityCenter_1.2.0-beta.6/sdk/securitycenter/Azure.ResourceManager.SecurityCenter/) |
@@ -515,7 +515,7 @@
| Mobile Server - Cross Domain | NuGet [2.0.3](https://www.nuget.org/packages/Microsoft.Azure.Mobile.Server.CrossDomain/2.0.3) | | |
| Notification Hubs | NuGet [4.2.0](https://www.nuget.org/packages/Microsoft.Azure.NotificationHubs/4.2.0) | | GitHub [4.2.0](https://github.com/Azure/azure-notificationhubs-dotnet) |
| Personalizer | NuGet [1.0.0](https://www.nuget.org/packages/Microsoft.Azure.CognitiveServices.Personalizer/1.0.0) | | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.CognitiveServices.Personalizer_1.0.0/sdk/cognitiveservices/Personalizer) |
-| Relay | NuGet [3.0.1](https://www.nuget.org/packages/Microsoft.Azure.Relay/3.0.1) | [docs](/dotnet/api/overview/azure/service-bus-relay) | GitHub [3.0.1](https://github.com/Azure/azure-relay-dotnet/tree/2.0.1) |
+| Relay | NuGet [3.1.0](https://www.nuget.org/packages/Microsoft.Azure.Relay/3.1.0) | [docs](/dotnet/api/overview/azure/service-bus-relay) | GitHub [3.1.0](https://github.com/Azure/azure-relay-dotnet/tree/3.1.0) |
| Schema Registry - Avro | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Microsoft.Azure.Kafka.SchemaRegistry.Avro/1.0.0-beta.1) | | |
| Schema Registry - JSON | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Microsoft.Azure.Kafka.SchemaRegistry.Json/1.0.0-beta.1) | | |
| Search - Common | NuGet [10.1.0](https://www.nuget.org/packages/Microsoft.Azure.Search.Common/10.1.0) | | GitHub [10.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.Search.Common_10.1.0/sdk/search/Microsoft.Azure.Search.Common/) |
@@ -546,7 +546,7 @@
| Functions extension for Cosmos DB | NuGet [4.11.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.CosmosDB/4.11.0)
NuGet [4.12.0-preview.1](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.CosmosDB/4.12.0-preview.1) | | GitHub [4.11.0](https://github.com/Azure/azure-webjobs-sdk-extensions/tree/cosmos-v3.0.7/src/WebJobs.Extensions.CosmosDB) |
| Functions extension for DocumentDB | NuGet [1.3.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.DocumentDB/1.3.0) | | GitHub [1.3.0](https://github.com/Azure/azure-webjobs-sdk-extensions) |
| Functions extension for Durable Task Framework | NuGet [3.8.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.DurableTask/3.8.0) | [docs](/dotnet/api/overview/azure/functions) | GitHub [3.8.0](https://github.com/Azure/azure-functions-durable-extension/tree/v2.2.2/src/WebJobs.Extensions.DurableTask) |
-| Functions extension for Durable Task Framework - isolated worker | NuGet [1.11.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.DurableTask/1.11.0) | | |
+| Functions extension for Durable Task Framework - isolated worker | NuGet [1.10.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.DurableTask/1.10.0) | | |
| Functions extension for HTTP | NuGet [3.2.1](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Http/3.2.1) | | GitHub [3.2.1](https://github.com/Azure/azure-webjobs-sdk-extensions/tree/v3.0.2/src/WebJobs.Extensions.Http) |
| Functions extension for IoT Edge | NuGet [1.0.7](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.EdgeHub/1.0.7) | | GitHub [1.0.7](https://github.com/Azure/iotedge/tree/1.0.7/edge-hub) |
| Functions extension for Kafka | NuGet [4.2.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Kafka/4.2.0) | | GitHub [4.2.0](https://github.com/Azure/azure-functions-kafka-extension/tree/3.0.0/src/Microsoft.Azure.WebJobs.Extensions.Kafka) |
diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md
index 9f6f9dc91074f..72c31fc334880 100644
--- a/docs/azure/includes/dotnet-new.md
+++ b/docs/azure/includes/dotnet-new.md
@@ -27,7 +27,7 @@
| Confidential Ledger | NuGet [1.3.0](https://www.nuget.org/packages/Azure.Security.ConfidentialLedger/1.3.0)
NuGet [1.4.1-beta.2](https://www.nuget.org/packages/Azure.Security.ConfidentialLedger/1.4.1-beta.2) | [docs](/dotnet/api/overview/azure/Security.ConfidentialLedger-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.ConfidentialLedger_1.3.0/sdk/confidentialledger/Azure.Security.ConfidentialLedger/)
GitHub [1.4.1-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.ConfidentialLedger_1.4.1-beta.2/sdk/confidentialledger/Azure.Security.ConfidentialLedger/) |
| Container Registry | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Containers.ContainerRegistry/1.2.0) | [docs](/dotnet/api/overview/azure/Containers.ContainerRegistry-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Containers.ContainerRegistry_1.2.0/sdk/containerregistry/Azure.Containers.ContainerRegistry/) |
| Content Safety | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.ContentSafety/1.0.0) | [docs](/dotnet/api/overview/azure/AI.ContentSafety-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.ContentSafety_1.0.0/sdk/contentsafety/Azure.AI.ContentSafety/) |
-| Conversational Language Understanding | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.Language.Conversations/1.1.0)
NuGet [2.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.Language.Conversations/2.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_1.1.0/sdk/cognitivelanguage/Azure.AI.Language.Conversations/)
GitHub [2.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_2.0.0-beta.4/sdk/cognitivelanguage/Azure.AI.Language.Conversations/) |
+| Conversational Language Understanding | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.Language.Conversations/1.1.0)
NuGet [2.0.0-beta.5](https://www.nuget.org/packages/Azure.AI.Language.Conversations/2.0.0-beta.5) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_1.1.0/sdk/cognitivelanguage/Azure.AI.Language.Conversations/)
GitHub [2.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_2.0.0-beta.5/sdk/cognitivelanguage/Azure.AI.Language.Conversations/) |
| Conversations Authoring | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Language.Conversations.Authoring/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations.Authoring-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations.Authoring_1.0.0-beta.2/sdk/cognitivelanguage/Azure.AI.Language.Conversations.Authoring/) |
| Core - Client - AMQP | NuGet [1.3.1](https://www.nuget.org/packages/Azure.Core.Amqp/1.3.1) | [docs](/dotnet/api/overview/azure/Core.Amqp-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core.Amqp_1.3.1/sdk/core/Azure.Core.Amqp/) |
| Core - Client - Core | NuGet [1.50.0](https://www.nuget.org/packages/Azure.Core/1.50.0) | [docs](/dotnet/api/overview/azure/Core-readme) | GitHub [1.50.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core_1.50.0/sdk/core/Azure.Core/) |
@@ -62,7 +62,7 @@
| Key Vault - Certificates | NuGet [4.8.0](https://www.nuget.org/packages/Azure.Security.KeyVault.Certificates/4.8.0) | [docs](/dotnet/api/overview/azure/Security.KeyVault.Certificates-readme) | GitHub [4.8.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.KeyVault.Certificates_4.8.0/sdk/keyvault/Azure.Security.KeyVault.Certificates/) |
| Key Vault - Keys | NuGet [4.8.0](https://www.nuget.org/packages/Azure.Security.KeyVault.Keys/4.8.0) | [docs](/dotnet/api/overview/azure/Security.KeyVault.Keys-readme) | GitHub [4.8.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.KeyVault.Keys_4.8.0/sdk/keyvault/Azure.Security.KeyVault.Keys/) |
| Key Vault - Secrets | NuGet [4.8.0](https://www.nuget.org/packages/Azure.Security.KeyVault.Secrets/4.8.0) | [docs](/dotnet/api/overview/azure/Security.KeyVault.Secrets-readme) | GitHub [4.8.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.KeyVault.Secrets_4.8.0/sdk/keyvault/Azure.Security.KeyVault.Secrets/) |
-| Language Text | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.AI.Language.Text/1.0.0-beta.3) | [docs](/dotnet/api/overview/azure/AI.Language.Text-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Text_1.0.0-beta.3/sdk/cognitivelanguage/Azure.AI.Language.Text/) |
+| Language Text | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.Language.Text/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.Language.Text-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Text_1.0.0-beta.4/sdk/cognitivelanguage/Azure.AI.Language.Text/) |
| Load Testing | NuGet [1.0.2](https://www.nuget.org/packages/Azure.Developer.LoadTesting/1.0.2)
NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.Developer.LoadTesting/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/Developer.LoadTesting-readme) | GitHub [1.0.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Developer.LoadTesting_1.0.2/sdk/loadtestservice/Azure.Developer.LoadTesting/)
GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Developer.LoadTesting_1.2.0-beta.1/sdk/loadtestservice/Azure.Developer.LoadTesting/) |
| Maps Common | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.Maps.Common/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/Maps.Common-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Maps.Common_1.0.0-beta.4/sdk/maps/Azure.Maps.Common/) |
| Maps Geolocation | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.Maps.Geolocation/1.0.0-beta.3) | [docs](/dotnet/api/overview/azure/Maps.Geolocation-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Maps.Geolocation_1.0.0-beta.3/sdk/maps/Azure.Maps.Geolocation/) |
@@ -82,7 +82,7 @@
| NUnit ? Microsoft Playwright Testing | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.Developer.MicrosoftPlaywrightTesting.NUnit/1.0.0-beta.4) | | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Developer.MicrosoftPlaywrightTesting.NUnit_1.0.0-beta.4/sdk/playwrighttesting/Azure.Developer.MicrosoftPlaywrightTesting.NUnit/) |
| Online Experimentation | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.OnlineExperimentation/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.OnlineExperimentation-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.OnlineExperimentation_1.0.0-beta.1/sdk/onlineexperimentation/Azure.Analytics.OnlineExperimentation/) |
| OpenAI Assistants | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.OpenAI.Assistants/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.OpenAI.Assistants-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI.Assistants_1.0.0-beta.4/sdk/openai/Azure.AI.OpenAI.Assistants/) |
-| OpenAI Inference | NuGet [2.1.0](https://www.nuget.org/packages/Azure.AI.OpenAI/2.1.0)
NuGet [2.5.0-beta.1](https://www.nuget.org/packages/Azure.AI.OpenAI/2.5.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.OpenAI-readme) | GitHub [2.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.1.0/sdk/openai/Azure.AI.OpenAI/)
GitHub [2.5.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.5.0-beta.1/sdk/openai/Azure.AI.OpenAI/) |
+| OpenAI Inference | NuGet [2.1.0](https://www.nuget.org/packages/Azure.AI.OpenAI/2.1.0)
NuGet [2.7.0-beta.1](https://www.nuget.org/packages/Azure.AI.OpenAI/2.7.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.OpenAI-readme) | GitHub [2.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.1.0/sdk/openai/Azure.AI.OpenAI/)
GitHub [2.7.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.7.0-beta.1/sdk/openai/Azure.AI.OpenAI/) |
| OpenTelemetry AspNetCore | NuGet [1.4.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.AspNetCore/1.4.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.AspNetCore-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.AspNetCore_1.4.0/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/) |
| OpenTelemetry Exporter | NuGet [1.5.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.Exporter/1.5.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.Exporter-readme) | GitHub [1.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.Exporter_1.5.0/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/) |
| OpenTelemetry LiveMetrics | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.LiveMetrics/1.0.0-beta.3) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.LiveMetrics-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.LiveMetrics_1.0.0-beta.3/sdk/monitor/Azure.Monitor.OpenTelemetry.LiveMetrics/) |
@@ -262,7 +262,7 @@
| Resource Management - DNS | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Dns/1.1.1)
NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.Dns/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Dns-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Dns_1.1.1/sdk/dns/Azure.ResourceManager.Dns/)
GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Dns_1.2.0-beta.2/sdk/dns/Azure.ResourceManager.Dns/) |
| Resource Management - DNS Resolver | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.DnsResolver/1.2.0)
NuGet [1.3.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.DnsResolver/1.3.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.DnsResolver-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DnsResolver_1.2.0/sdk/dnsresolver/Azure.ResourceManager.DnsResolver/)
GitHub [1.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DnsResolver_1.3.0-beta.1/sdk/dnsresolver/Azure.ResourceManager.DnsResolver/) |
| Resource Management - Durabletask | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.DurableTask/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.DurableTask-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DurableTask_1.0.0/sdk/durabletask/Azure.ResourceManager.DurableTask/) |
-| Resource Management - Dynatrace | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Dynatrace/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Dynatrace-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Dynatrace_1.1.1/sdk/dynatrace/Azure.ResourceManager.Dynatrace/) |
+| Resource Management - Dynatrace | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.Dynatrace/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Dynatrace-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Dynatrace_1.2.0/sdk/dynatrace/Azure.ResourceManager.Dynatrace/) |
| Resource Management - Edge Order | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.EdgeOrder/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.EdgeOrder-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EdgeOrder_1.1.1/sdk/edgeorder/Azure.ResourceManager.EdgeOrder/) |
| Resource Management - Edge Zones | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.EdgeZones/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.EdgeZones-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EdgeZones_1.0.0-beta.2/sdk/edgezones/Azure.ResourceManager.EdgeZones/) |
| Resource Management - Elastic | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.Elastic/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Elastic-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Elastic_1.1.0/sdk/elastic/Azure.ResourceManager.Elastic/) |
@@ -326,7 +326,7 @@
| Resource Management - Monitor | NuGet [1.3.1](https://www.nuget.org/packages/Azure.ResourceManager.Monitor/1.3.1)
NuGet [1.4.0-beta.4](https://www.nuget.org/packages/Azure.ResourceManager.Monitor/1.4.0-beta.4) | [docs](/dotnet/api/overview/azure/ResourceManager.Monitor-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Monitor_1.3.1/sdk/monitor/Azure.ResourceManager.Monitor/)
GitHub [1.4.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Monitor_1.4.0-beta.4/sdk/monitor/Azure.ResourceManager.Monitor/) |
| Resource Management - MySQL | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.MySql/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.MySql-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.MySql_1.2.0/sdk/mysql/Azure.ResourceManager.MySql/) |
| Resource Management - Neon Postgres | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.NeonPostgres/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.NeonPostgres-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NeonPostgres_1.0.0/sdk/neonpostgres/Azure.ResourceManager.NeonPostgres/) |
-| Resource Management - NetApp Files | NuGet [1.12.0](https://www.nuget.org/packages/Azure.ResourceManager.NetApp/1.12.0)
NuGet [1.13.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.NetApp/1.13.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.NetApp-readme) | GitHub [1.12.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetApp_1.12.0/sdk/netapp/Azure.ResourceManager.NetApp/)
GitHub [1.13.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetApp_1.13.0-beta.1/sdk/netapp/Azure.ResourceManager.NetApp/) |
+| Resource Management - NetApp Files | NuGet [1.14.0](https://www.nuget.org/packages/Azure.ResourceManager.NetApp/1.14.0) | [docs](/dotnet/api/overview/azure/ResourceManager.NetApp-readme) | GitHub [1.14.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetApp_1.14.0/sdk/netapp/Azure.ResourceManager.NetApp/) |
| Resource Management - Network | NuGet [1.13.0](https://www.nuget.org/packages/Azure.ResourceManager.Network/1.13.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Network-readme) | GitHub [1.13.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Network_1.13.0/sdk/network/Azure.ResourceManager.Network/) |
| Resource Management - Network Analytics | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.NetworkAnalytics/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.NetworkAnalytics-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetworkAnalytics_1.0.1/sdk/networkanalytics/Azure.ResourceManager.NetworkAnalytics/) |
| Resource Management - Network Cloud | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.NetworkCloud/1.2.0)
NuGet [1.3.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.NetworkCloud/1.3.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.NetworkCloud-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetworkCloud_1.2.0/sdk/networkcloud/Azure.ResourceManager.NetworkCloud/)
GitHub [1.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetworkCloud_1.3.0-beta.1/sdk/networkcloud/Azure.ResourceManager.NetworkCloud/) |
@@ -368,7 +368,7 @@
| Resource Management - Resource Health | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.ResourceHealth/1.0.0)
NuGet [1.1.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.ResourceHealth/1.1.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.ResourceHealth-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceHealth_1.0.0/sdk/resourcehealth/Azure.ResourceManager.ResourceHealth/)
GitHub [1.1.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceHealth_1.1.0-beta.5/sdk/resourcehealth/Azure.ResourceManager.ResourceHealth/) |
| Resource Management - Resource Manager | NuGet [1.13.2](https://www.nuget.org/packages/Azure.ResourceManager/1.13.2)
NuGet [1.14.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager/1.14.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager-readme) | GitHub [1.13.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager_1.13.2/sdk/resourcemanager/Azure.ResourceManager/)
GitHub [1.14.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager_1.14.0-beta.1/sdk/resourcemanager/Azure.ResourceManager/) |
| Resource Management - Resource Mover | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ResourceMover/1.1.1)
NuGet [1.1.2-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.ResourceMover/1.1.2-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.ResourceMover-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceMover_1.1.1/sdk/resourcemover/Azure.ResourceManager.ResourceMover/)
GitHub [1.1.2-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceMover_1.1.2-beta.2/sdk/resourcemover/Azure.ResourceManager.ResourceMover/) |
-| Resource Management - Resources | NuGet [1.11.1](https://www.nuget.org/packages/Azure.ResourceManager.Resources/1.11.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Resources-readme) | GitHub [1.11.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Resources_1.11.1/sdk/resources/Azure.ResourceManager.Resources/) |
+| Resource Management - Resources | NuGet [1.11.2](https://www.nuget.org/packages/Azure.ResourceManager.Resources/1.11.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Resources-readme) | GitHub [1.11.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Resources_1.11.2/sdk/resources/Azure.ResourceManager.Resources/) |
| Resource Management - ScVmm | NuGet [1.0.0-beta.6](https://www.nuget.org/packages/Azure.ResourceManager.ScVmm/1.0.0-beta.6) | [docs](/dotnet/api/overview/azure/ResourceManager.ScVmm-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ScVmm_1.0.0-beta.6/sdk/arc-scvmm/Azure.ResourceManager.ScVmm/) |
| Resource Management - Secretsstoreextension | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.SecretsStoreExtension/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.SecretsStoreExtension-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.SecretsStoreExtension_1.0.0-beta.1/sdk/secretsstoreextension/Azure.ResourceManager.SecretsStoreExtension/) |
| Resource Management - Security | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.SecurityCenter/1.1.0)
NuGet [1.2.0-beta.6](https://www.nuget.org/packages/Azure.ResourceManager.SecurityCenter/1.2.0-beta.6) | [docs](/dotnet/api/overview/azure/ResourceManager.SecurityCenter-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SecurityCenter_1.1.0/sdk/securitycenter/Azure.ResourceManager.SecurityCenter/)
GitHub [1.2.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SecurityCenter_1.2.0-beta.6/sdk/securitycenter/Azure.ResourceManager.SecurityCenter/) |
From ef3dee18a29d23054f82fa7c07d7108cb4323ba9 Mon Sep 17 00:00:00 2001
From: Bartosz Klonowski <70535775+BartoszKlonowski@users.noreply.github.com>
Date: Mon, 1 Dec 2025 17:00:32 +0100
Subject: [PATCH 02/28] Link operators `==` and `!=` overloading to the records
page (#50226)
* Link operators == and != overloading to the records page
* Include file extension in the links for equality operators
---
docs/csharp/language-reference/builtin-types/record.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/docs/csharp/language-reference/builtin-types/record.md b/docs/csharp/language-reference/builtin-types/record.md
index 35a98a1ab5c02..c5be9864c637e 100644
--- a/docs/csharp/language-reference/builtin-types/record.md
+++ b/docs/csharp/language-reference/builtin-types/record.md
@@ -124,7 +124,7 @@ To implement value equality, the compiler synthesizes several methods, including
* An override of . This method can be declared explicitly.
-* Overrides of operators `==` and `!=`. It's an error if the operators are declared explicitly.
+* Overrides of [operator `==`](../operators/equality-operators.md#equality-operator-) and [operator `!=`](../operators/equality-operators.md#inequality-operator-). It's an error if the operators are declared explicitly.
* If the record type is derived from a base record type, `protected override Type EqualityContract { get; };`. This property can be declared explicitly. For more information, see [Equality in inheritance hierarchies](#equality-in-inheritance-hierarchies).
@@ -263,4 +263,5 @@ For more information about these features, see the following feature proposal no
- [Design guidelines - Choosing between class and struct](../../../standard/design-guidelines/choosing-between-class-and-struct.md)
- [Design guidelines - Struct design](../../../standard/design-guidelines/struct.md)
- [The C# type system](../../fundamentals/types/index.md)
+- [Operator overloading](../operators/operator-overloading.md)
- [`with` expression](../operators/with-expression.md)
From 186d70a267324bfce97acf6bcbb5d54a3f737091 Mon Sep 17 00:00:00 2001
From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com>
Date: Mon, 1 Dec 2025 08:50:55 -0800
Subject: [PATCH 03/28] Update package index with latest published versions
(#50235)
* Update package index with latest published versions
* Update docs/azure/includes/dotnet-all.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Bill Wagner
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
From 445d3ca18c48d95eef07c82e55e7b70b8c2320b7 Mon Sep 17 00:00:00 2001
From: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
Date: Mon, 1 Dec 2025 10:12:40 -0800
Subject: [PATCH 04/28] Update PR action to use peter-evans version (#50237)
---
.github/workflows/cleanrepo-orphaned-articles.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/cleanrepo-orphaned-articles.yml b/.github/workflows/cleanrepo-orphaned-articles.yml
index 5660cbf3b0407..a0cedcc333d17 100644
--- a/.github/workflows/cleanrepo-orphaned-articles.yml
+++ b/.github/workflows/cleanrepo-orphaned-articles.yml
@@ -35,7 +35,7 @@ jobs:
# Create the PR for the work done by the "clean repo" tool
- name: create-pull-request
- uses: dotnet/actions-create-pull-request@v4
+ uses: peter-evans/actions-create-pull-request@v7
with:
branch: cleanrepo-orphaned-articles
title: "Monthly chores: Delete orphaned articles"
From de14809a5c4cbf02dfeaacf17f5636135a2c5d22 Mon Sep 17 00:00:00 2001
From: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
Date: Mon, 1 Dec 2025 10:22:18 -0800
Subject: [PATCH 05/28] Fix action name (#50238)
---
.github/workflows/cleanrepo-orphaned-articles.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/cleanrepo-orphaned-articles.yml b/.github/workflows/cleanrepo-orphaned-articles.yml
index a0cedcc333d17..88318c251aa3f 100644
--- a/.github/workflows/cleanrepo-orphaned-articles.yml
+++ b/.github/workflows/cleanrepo-orphaned-articles.yml
@@ -35,7 +35,7 @@ jobs:
# Create the PR for the work done by the "clean repo" tool
- name: create-pull-request
- uses: peter-evans/actions-create-pull-request@v7
+ uses: peter-evans/create-pull-request@v7
with:
branch: cleanrepo-orphaned-articles
title: "Monthly chores: Delete orphaned articles"
From f67b351552dca5cdd6f079fe2dc9e356d219664d Mon Sep 17 00:00:00 2001
From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com>
Date: Mon, 1 Dec 2025 10:36:52 -0800
Subject: [PATCH 06/28] Update package index with latest published versions
(#50240)
---
docs/azure/includes/dotnet-all.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md
index 55a7f91d188fe..2bbbd68c54499 100644
--- a/docs/azure/includes/dotnet-all.md
+++ b/docs/azure/includes/dotnet-all.md
@@ -515,7 +515,7 @@
| Mobile Server - Cross Domain | NuGet [2.0.3](https://www.nuget.org/packages/Microsoft.Azure.Mobile.Server.CrossDomain/2.0.3) | | |
| Notification Hubs | NuGet [4.2.0](https://www.nuget.org/packages/Microsoft.Azure.NotificationHubs/4.2.0) | | GitHub [4.2.0](https://github.com/Azure/azure-notificationhubs-dotnet) |
| Personalizer | NuGet [1.0.0](https://www.nuget.org/packages/Microsoft.Azure.CognitiveServices.Personalizer/1.0.0) | | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.CognitiveServices.Personalizer_1.0.0/sdk/cognitiveservices/Personalizer) |
-| Relay | NuGet [3.1.0](https://www.nuget.org/packages/Microsoft.Azure.Relay/3.1.0) | [docs](/dotnet/api/overview/azure/service-bus-relay) | GitHub [3.1.0](https://github.com/Azure/azure-relay-dotnet/tree/3.1.0) |
+| Relay | NuGet [3.1.0](https://www.nuget.org/packages/Microsoft.Azure.Relay/3.1.0) | [docs](/dotnet/api/overview/azure/service-bus-relay) | GitHub [3.1.0](https://github.com/Azure/azure-relay-dotnet/tree/2.0.1) |
| Schema Registry - Avro | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Microsoft.Azure.Kafka.SchemaRegistry.Avro/1.0.0-beta.1) | | |
| Schema Registry - JSON | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Microsoft.Azure.Kafka.SchemaRegistry.Json/1.0.0-beta.1) | | |
| Search - Common | NuGet [10.1.0](https://www.nuget.org/packages/Microsoft.Azure.Search.Common/10.1.0) | | GitHub [10.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.Search.Common_10.1.0/sdk/search/Microsoft.Azure.Search.Common/) |
From ea8ac6412d8ffc55d0d256dc30fb746256ae49c8 Mon Sep 17 00:00:00 2001
From: Bill Wagner
Date: Mon, 1 Dec 2025 13:48:00 -0500
Subject: [PATCH 07/28] Update tutorials and program guide for modern
extensions (#50132)
* Update sample for LINQ tutorial
Update the sample code and snippet tags for the LINQ tutorial
missed one edit.
fix build
* First pass edit
* Second proofread
* Finish edits in classes and structs
* Finish programming guide.
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* respond to reviews.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
...-create-a-new-method-for-an-enumeration.md | 2 +-
...iables-and-arrays-in-a-query-expression.md | 5 +-
.../Program.cs | 14 +-
...-and-call-a-custom-extension-method.csproj | 2 +-
.../constraints-on-type-parameters.md | 2 +-
.../snippets/GenericWhereConstraints.cs | 23 +-
.../generics/snippets/generics.csproj | 2 +-
docs/csharp/toc.yml | 4 +-
.../snippets/console-linq/InterimSteps.cs | 175 ++++++++++
.../console-linq/LInqFaroShuffle.csproj | 3 +-
.../snippets/console-linq/Program.cs | 83 +++++
.../snippets}/console-linq/README.md | 0
.../snippets}/console-linq/extensions.cs | 32 +-
.../snippets/console-linq/playingcard.cs | 5 +
docs/csharp/tutorials/working-with-linq.md | 317 ++++--------------
.../getting-started/console-linq/Program.cs | 100 ------
.../console-linq/playingcard.cs | 21 --
17 files changed, 375 insertions(+), 415 deletions(-)
create mode 100644 docs/csharp/tutorials/snippets/console-linq/InterimSteps.cs
rename samples/snippets/csharp/getting-started/console-linq/console-linq.csproj => docs/csharp/tutorials/snippets/console-linq/LInqFaroShuffle.csproj (62%)
create mode 100644 docs/csharp/tutorials/snippets/console-linq/Program.cs
rename {samples/snippets/csharp/getting-started => docs/csharp/tutorials/snippets}/console-linq/README.md (100%)
rename {samples/snippets/csharp/getting-started => docs/csharp/tutorials/snippets}/console-linq/extensions.cs (57%)
create mode 100644 docs/csharp/tutorials/snippets/console-linq/playingcard.cs
delete mode 100644 samples/snippets/csharp/getting-started/console-linq/Program.cs
delete mode 100644 samples/snippets/csharp/getting-started/console-linq/playingcard.cs
diff --git a/docs/csharp/programming-guide/classes-and-structs/how-to-create-a-new-method-for-an-enumeration.md b/docs/csharp/programming-guide/classes-and-structs/how-to-create-a-new-method-for-an-enumeration.md
index de3d6a49a61bd..1353e1451c036 100644
--- a/docs/csharp/programming-guide/classes-and-structs/how-to-create-a-new-method-for-an-enumeration.md
+++ b/docs/csharp/programming-guide/classes-and-structs/how-to-create-a-new-method-for-an-enumeration.md
@@ -1,7 +1,7 @@
---
title: "How to create a new method for an enumeration"
description: Learn how to use extension methods to add functionality to an enum in C#. This example shows an extension method called Passing for an enum called Grades.
-ms.date: 04/17/2025
+ms.date: 11/25/2025
helpviewer_keywords:
- "enumerations [C#]"
- "extension methods [C#], for enums"
diff --git a/docs/csharp/programming-guide/classes-and-structs/how-to-use-implicitly-typed-local-variables-and-arrays-in-a-query-expression.md b/docs/csharp/programming-guide/classes-and-structs/how-to-use-implicitly-typed-local-variables-and-arrays-in-a-query-expression.md
index c0d8aff8908d1..cc0917b88a140 100644
--- a/docs/csharp/programming-guide/classes-and-structs/how-to-use-implicitly-typed-local-variables-and-arrays-in-a-query-expression.md
+++ b/docs/csharp/programming-guide/classes-and-structs/how-to-use-implicitly-typed-local-variables-and-arrays-in-a-query-expression.md
@@ -1,11 +1,10 @@
---
title: "How to use implicitly typed local variables and arrays in a query expression"
description: Use implicitly typed local variables in C# to have the compiler determine the type of a local variable. You must use them to store anonymous types.
-ms.date: 07/20/2015
+ms.date: 11/25/2025
helpviewer_keywords:
- "implicitly-typed local variables [C#], how to use"
ms.topic: how-to
-ms.assetid: 6b7354d2-af79-427a-b6a8-f74eb8fd0b91
---
# How to use implicitly typed local variables and arrays in a query expression (C# Programming Guide)
@@ -25,6 +24,6 @@ You can use implicitly typed local variables whenever you want the compiler to d
## See also
-- [Extension Methods](./extension-methods.md)
+- [Extension members](./extension-methods.md)
- [LINQ (Language-Integrated Query)](../../linq/index.md)
- [LINQ in C#](../../linq/index.md)
diff --git a/docs/csharp/programming-guide/classes-and-structs/snippets/how-to-implement-and-call-a-custom-extension-method/Program.cs b/docs/csharp/programming-guide/classes-and-structs/snippets/how-to-implement-and-call-a-custom-extension-method/Program.cs
index 963b4e6c01aaa..5152ded74a133 100644
--- a/docs/csharp/programming-guide/classes-and-structs/snippets/how-to-implement-and-call-a-custom-extension-method/Program.cs
+++ b/docs/csharp/programming-guide/classes-and-structs/snippets/how-to-implement-and-call-a-custom-extension-method/Program.cs
@@ -1,4 +1,4 @@
-using CustomExtensions;
+using CustomExtensions;
string s = "The quick brown fox jumped over the lazy dog.";
// Call the method as if it were an
@@ -13,12 +13,14 @@ namespace CustomExtensions
// Extension methods must be defined in a static class.
public static class StringExtension
{
- // This is the extension method.
- // The first parameter takes the "this" modifier
- // and specifies the type for which the method is defined.
- public static int WordCount(this string str)
+ extension(string str)
{
- return str.Split(new char[] {' ', '.','?'}, StringSplitOptions.RemoveEmptyEntries).Length;
+ // This is the extension member.
+ // The `str` parameter is declared on the extension declaration.
+ public int WordCount()
+ {
+ return str.Split(new char[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length;
+ }
}
}
}
diff --git a/docs/csharp/programming-guide/classes-and-structs/snippets/how-to-implement-and-call-a-custom-extension-method/how-to-implement-and-call-a-custom-extension-method.csproj b/docs/csharp/programming-guide/classes-and-structs/snippets/how-to-implement-and-call-a-custom-extension-method/how-to-implement-and-call-a-custom-extension-method.csproj
index fd4bd08da2987..ed9781c223ab9 100644
--- a/docs/csharp/programming-guide/classes-and-structs/snippets/how-to-implement-and-call-a-custom-extension-method/how-to-implement-and-call-a-custom-extension-method.csproj
+++ b/docs/csharp/programming-guide/classes-and-structs/snippets/how-to-implement-and-call-a-custom-extension-method/how-to-implement-and-call-a-custom-extension-method.csproj
@@ -2,7 +2,7 @@
Exe
- net9.0
+ net10.0
enable
enable
diff --git a/docs/csharp/programming-guide/generics/constraints-on-type-parameters.md b/docs/csharp/programming-guide/generics/constraints-on-type-parameters.md
index 0adad6ba44ade..8b4dc2c3b56b7 100644
--- a/docs/csharp/programming-guide/generics/constraints-on-type-parameters.md
+++ b/docs/csharp/programming-guide/generics/constraints-on-type-parameters.md
@@ -1,7 +1,7 @@
---
title: "Constraints on type parameters"
description: Learn about constraints on type parameters. Constraints tell the compiler what capabilities a type argument must have.
-ms.date: 10/10/2025
+ms.date: 11/25/2025
f1_keywords:
- "defaultconstraint_CSharpKeyword"
- "notnull_CSharpKeyword"
diff --git a/docs/csharp/programming-guide/generics/snippets/GenericWhereConstraints.cs b/docs/csharp/programming-guide/generics/snippets/GenericWhereConstraints.cs
index 06d9d7ce50141..198d070e0b2d4 100644
--- a/docs/csharp/programming-guide/generics/snippets/GenericWhereConstraints.cs
+++ b/docs/csharp/programming-guide/generics/snippets/GenericWhereConstraints.cs
@@ -175,20 +175,25 @@ unsafe public static byte[] ToByteArray(this T argument) where T : unmanaged
//
//
- public static TDelegate? TypeSafeCombine(this TDelegate source, TDelegate target)
- where TDelegate : System.Delegate
- => Delegate.Combine(source, target) as TDelegate;
+ extension(TDelegate source) where TDelegate : System.Delegate
+ {
+ public TDelegate? TypeSafeCombine(TDelegate target)
+ => Delegate.Combine(source, target) as TDelegate;
+ }
//
//
- public static Dictionary EnumNamedValues() where T : System.Enum
+ extension(T) where T : System.Enum
{
- var result = new Dictionary();
- var values = Enum.GetValues(typeof(T));
+ public static Dictionary EnumNamedValues()
+ {
+ var result = new Dictionary();
+ var values = Enum.GetValues(typeof(T));
- foreach (int item in values)
- result.Add(item, Enum.GetName(typeof(T), item)!);
- return result;
+ foreach (int item in values)
+ result.Add(item, Enum.GetName(typeof(T), item)!);
+ return result;
+ }
}
//
}
diff --git a/docs/csharp/programming-guide/generics/snippets/generics.csproj b/docs/csharp/programming-guide/generics/snippets/generics.csproj
index 9d40194d4ea68..07fc2e7e62dcc 100644
--- a/docs/csharp/programming-guide/generics/snippets/generics.csproj
+++ b/docs/csharp/programming-guide/generics/snippets/generics.csproj
@@ -2,7 +2,7 @@
Exe
- net8.0
+ net10.0
enable
enable
true
diff --git a/docs/csharp/toc.yml b/docs/csharp/toc.yml
index 942cf95b66fcd..5324dd7a241eb 100644
--- a/docs/csharp/toc.yml
+++ b/docs/csharp/toc.yml
@@ -558,8 +558,6 @@ items:
href: programming-guide/classes-and-structs/implicitly-typed-local-variables.md
- name: "How to use implicitly typed local variables and arrays in a query expression"
href: programming-guide/classes-and-structs/how-to-use-implicitly-typed-local-variables-and-arrays-in-a-query-expression.md
- - name: Extension Methods
- href: programming-guide/classes-and-structs/extension-methods.md
- name: "How to implement and call a custom extension method"
href: programming-guide/classes-and-structs/how-to-implement-and-call-a-custom-extension-method.md
- name: "How to create a new method for an enumeration"
@@ -580,6 +578,8 @@ items:
href: programming-guide/classes-and-structs/static-constructors.md
- name: "How to write a copy constructor"
href: programming-guide/classes-and-structs/how-to-write-a-copy-constructor.md
+ - name: Extension members
+ href: programming-guide/classes-and-structs/extension-methods.md
- name: Finalizers
href: programming-guide/classes-and-structs/finalizers.md
- name: Object and Collection Initializers
diff --git a/docs/csharp/tutorials/snippets/console-linq/InterimSteps.cs b/docs/csharp/tutorials/snippets/console-linq/InterimSteps.cs
new file mode 100644
index 0000000000000..c307108c66e07
--- /dev/null
+++ b/docs/csharp/tutorials/snippets/console-linq/InterimSteps.cs
@@ -0,0 +1,175 @@
+namespace UnusedCode;
+
+using LinqFaroShuffle;
+internal class InterimSteps
+{
+ //
+ static IEnumerable Suits()
+ {
+ yield return "clubs";
+ yield return "diamonds";
+ yield return "hearts";
+ yield return "spades";
+ }
+
+ static IEnumerable Ranks()
+ {
+ yield return "two";
+ yield return "three";
+ yield return "four";
+ yield return "five";
+ yield return "six";
+ yield return "seven";
+ yield return "eight";
+ yield return "nine";
+ yield return "ten";
+ yield return "jack";
+ yield return "queen";
+ yield return "king";
+ yield return "ace";
+ }
+ //
+
+ private static void InitialMain()
+ {
+ //
+ var startingDeck = from s in Suits()
+ from r in Ranks()
+ select (Suit: s, Rank: r);
+
+ // Display each card that's generated and placed in startingDeck
+ foreach (var card in startingDeck)
+ {
+ Console.WriteLine(card);
+ }
+ //
+
+ //
+ var top = startingDeck.Take(26);
+ var bottom = startingDeck.Skip(26);
+ //
+
+ }
+
+ private void StartShuffling()
+ {
+ var startingDeck = from s in Suits()
+ from r in Ranks()
+ select (Suit: s, Rank: r);
+
+ // Display each card that's generated and placed in startingDeck
+ foreach (var card in startingDeck)
+ {
+ Console.WriteLine(card);
+ }
+
+ var top = startingDeck.Take(26);
+ var bottom = startingDeck.Skip(26);
+
+ //
+ var shuffledDeck = top.InterleaveSequenceWith(bottom);
+
+ foreach (var c in shuffledDeck)
+ {
+ Console.WriteLine(c);
+ }
+ //
+ }
+
+ private void CompareSequences()
+ {
+ //
+ var startingDeck = from s in Suits()
+ from r in Ranks()
+ select (Suit: s, Rank: r);
+
+ // Display each card generated and placed in startingDeck in the console
+ foreach (var card in startingDeck)
+ {
+ Console.WriteLine(card);
+ }
+
+ var top = startingDeck.Take(26);
+ var bottom = startingDeck.Skip(26);
+
+ var shuffledDeck = top.InterleaveSequenceWith(bottom);
+
+ var times = 0;
+ // Re-use the shuffle variable from earlier, or you can make a new one
+ shuffledDeck = startingDeck;
+ do
+ {
+ shuffledDeck = shuffledDeck.Take(26).InterleaveSequenceWith(shuffledDeck.Skip(26));
+
+ foreach (var card in shuffledDeck)
+ {
+ Console.WriteLine(card);
+ }
+ Console.WriteLine();
+ times++;
+
+ } while (!startingDeck.SequenceEquals(shuffledDeck));
+
+ Console.WriteLine(times);
+ //
+ }
+
+ private void AddLogging()
+ {
+ //
+ var startingDeck = (from s in Suits().LogQuery("Suit Generation")
+ from r in Ranks().LogQuery("Rank Generation")
+ select (Suit: s, Rank: r)).LogQuery("Starting Deck");
+
+ foreach (var c in startingDeck)
+ {
+ Console.WriteLine(c);
+ }
+
+ Console.WriteLine();
+ var times = 0;
+ var shuffle = startingDeck;
+
+ do
+ {
+ // Out shuffle
+ /*
+ shuffle = shuffle.Take(26)
+ .LogQuery("Top Half")
+ .InterleaveSequenceWith(shuffle.Skip(26)
+ .LogQuery("Bottom Half"))
+ .LogQuery("Shuffle");
+ */
+
+ // In shuffle
+ shuffle = shuffle.Skip(26).LogQuery("Bottom Half")
+ .InterleaveSequenceWith(shuffle.Take(26).LogQuery("Top Half"))
+ .LogQuery("Shuffle");
+
+ foreach (var c in shuffle)
+ {
+ Console.WriteLine(c);
+ }
+
+ times++;
+ Console.WriteLine(times);
+ } while (!startingDeck.SequenceEquals(shuffle));
+
+ Console.WriteLine(times);
+ //
+ }
+}
+
+//
+public static class CardExtensions
+{
+ extension(IEnumerable sequence)
+ {
+ public IEnumerable InterleaveSequenceWith(IEnumerable second)
+ {
+ // Your implementation goes here
+ return default;
+ }
+ }
+}
+//
diff --git a/samples/snippets/csharp/getting-started/console-linq/console-linq.csproj b/docs/csharp/tutorials/snippets/console-linq/LInqFaroShuffle.csproj
similarity index 62%
rename from samples/snippets/csharp/getting-started/console-linq/console-linq.csproj
rename to docs/csharp/tutorials/snippets/console-linq/LInqFaroShuffle.csproj
index af31fefa23aa5..0ece068f6df1a 100644
--- a/samples/snippets/csharp/getting-started/console-linq/console-linq.csproj
+++ b/docs/csharp/tutorials/snippets/console-linq/LInqFaroShuffle.csproj
@@ -2,8 +2,9 @@
Exe
- net8.0
+ net10.0
enable
+ enable
diff --git a/docs/csharp/tutorials/snippets/console-linq/Program.cs b/docs/csharp/tutorials/snippets/console-linq/Program.cs
new file mode 100644
index 0000000000000..fb1527fc5552f
--- /dev/null
+++ b/docs/csharp/tutorials/snippets/console-linq/Program.cs
@@ -0,0 +1,83 @@
+using LinqFaroShuffle;
+
+//
+IEnumerable suits() => (Enum.GetValues(typeof(Suit)) as IEnumerable)!;
+//
+
+//
+IEnumerable ranks() => (Enum.GetValues(typeof(Rank)) as IEnumerable)!;
+//
+
+//
+var startingDeck = (from s in suits().LogQuery("Suit Generation")
+ from r in ranks().LogQuery("Value Generation")
+ select new { Suit = s, Rank = r })
+ .LogQuery("Starting Deck")
+ .ToArray();
+
+foreach (var c in startingDeck)
+{
+ Console.WriteLine(c);
+}
+
+Console.WriteLine();
+
+var times = 0;
+var shuffle = startingDeck;
+
+do
+{
+ /*
+ shuffle = shuffle.Take(26)
+ .LogQuery("Top Half")
+ .InterleaveSequenceWith(shuffle.Skip(26).LogQuery("Bottom Half"))
+ .LogQuery("Shuffle")
+ .ToArray();
+ */
+
+ shuffle = shuffle.Skip(26)
+ .LogQuery("Bottom Half")
+ .InterleaveSequenceWith(shuffle.Take(26).LogQuery("Top Half"))
+ .LogQuery("Shuffle")
+ .ToArray();
+
+ foreach (var c in shuffle)
+ {
+ Console.WriteLine(c);
+ }
+
+ times++;
+ Console.WriteLine(times);
+} while (!startingDeck.SequenceEquals(shuffle));
+
+Console.WriteLine(times);
+//
+
+//
+public enum Suit
+{
+ Clubs,
+ Diamonds,
+ Hearts,
+ Spades
+}
+//
+
+//
+public enum Rank
+{
+ Two,
+ Three,
+ Four,
+ Five,
+ Six,
+ Seven,
+ Eight,
+ Nine,
+ Ten,
+ Jack,
+ Queen,
+ King,
+ Ace
+}
+//
diff --git a/samples/snippets/csharp/getting-started/console-linq/README.md b/docs/csharp/tutorials/snippets/console-linq/README.md
similarity index 100%
rename from samples/snippets/csharp/getting-started/console-linq/README.md
rename to docs/csharp/tutorials/snippets/console-linq/README.md
diff --git a/samples/snippets/csharp/getting-started/console-linq/extensions.cs b/docs/csharp/tutorials/snippets/console-linq/extensions.cs
similarity index 57%
rename from samples/snippets/csharp/getting-started/console-linq/extensions.cs
rename to docs/csharp/tutorials/snippets/console-linq/extensions.cs
index 432a05c691e71..88a2c025125ec 100644
--- a/samples/snippets/csharp/getting-started/console-linq/extensions.cs
+++ b/docs/csharp/tutorials/snippets/console-linq/extensions.cs
@@ -1,15 +1,13 @@
-using System.Collections.Generic;
-using System.IO;
+namespace LinqFaroShuffle;
-namespace LinqFaroShuffle
+public static class CardExtensions
{
- public static class Extensions
+ extension(IEnumerable sequence)
{
- #region snippet1
- public static IEnumerable InterleaveSequenceWith
- (this IEnumerable first, IEnumerable second)
+ //
+ public IEnumerable InterleaveSequenceWith(IEnumerable second)
{
- var firstIter = first.GetEnumerator();
+ var firstIter = sequence.GetEnumerator();
var secondIter = second.GetEnumerator();
while (firstIter.MoveNext() && secondIter.MoveNext())
@@ -18,13 +16,12 @@ public static IEnumerable InterleaveSequenceWith
yield return secondIter.Current;
}
}
- #endregion
+ //
- #region snippet2
- public static bool SequenceEquals
- (this IEnumerable first, IEnumerable second)
+ //
+ public bool SequenceEquals(IEnumerable second)
{
- var firstIter = first.GetEnumerator();
+ var firstIter = sequence.GetEnumerator();
var secondIter = second.GetEnumerator();
while ((firstIter?.MoveNext() == true) && secondIter.MoveNext())
@@ -37,11 +34,10 @@ public static bool SequenceEquals
return true;
}
- #endregion
+ //
- #region snippet3
- public static IEnumerable LogQuery
- (this IEnumerable sequence, string tag)
+ //
+ public IEnumerable LogQuery(string tag)
{
// File.AppendText creates a new file if the file doesn't exist.
using (var writer = File.AppendText("debug.log"))
@@ -51,6 +47,6 @@ public static IEnumerable LogQuery
return sequence;
}
- #endregion
+ //
}
}
diff --git a/docs/csharp/tutorials/snippets/console-linq/playingcard.cs b/docs/csharp/tutorials/snippets/console-linq/playingcard.cs
new file mode 100644
index 0000000000000..1096d7db4bca3
--- /dev/null
+++ b/docs/csharp/tutorials/snippets/console-linq/playingcard.cs
@@ -0,0 +1,5 @@
+namespace LinqFaroShuffle;
+
+//
+public sealed record PlayingCard(Suit CardSuit, Rank CardRank);
+//
diff --git a/docs/csharp/tutorials/working-with-linq.md b/docs/csharp/tutorials/working-with-linq.md
index c8ffb58e4f5fa..91162bbbca7e6 100644
--- a/docs/csharp/tutorials/working-with-linq.md
+++ b/docs/csharp/tutorials/working-with-linq.md
@@ -1,26 +1,25 @@
---
title: Working with LINQ
description: This tutorial teaches you how to generate sequences with LINQ, write methods for use in LINQ queries, and distinguish between eager and lazy evaluation.
-ms.date: 10/29/2018
+ms.date: 11/25/2025
ms.subservice: csharp-linq
-ms.assetid: 0db12548-82cb-4903-ac88-13103d70aa77
+ai-usage: ai-assisted
---
-
# Work with Language-Integrated Query (LINQ)
## Introduction
-This tutorial teaches you features in .NET Core and the C# language. You’ll learn how to:
+This tutorial teaches you features in .NET and the C# language. You learn how to:
- Generate sequences with LINQ.
-- Write methods that can be easily used in LINQ queries.
+- Write methods that you can easily use in LINQ queries.
- Distinguish between eager and lazy evaluation.
-You'll learn these techniques by building an application that demonstrates one of the basic skills of any magician: the [faro shuffle](https://en.wikipedia.org/wiki/Faro_shuffle). Briefly, a faro shuffle is a technique where you split a card deck exactly in half, then the shuffle interleaves each one card from each half to rebuild the original deck.
+You learn these techniques by building an application that demonstrates one of the basic skills of any magician: the [faro shuffle](https://en.wikipedia.org/wiki/Faro_shuffle). A faro shuffle is a technique where you split a card deck exactly in half, and then the shuffle interleaves each card from each half to rebuild the original deck.
Magicians use this technique because every card is in a known location after each shuffle, and the order is a repeating pattern.
-For your purposes, it is a light hearted look at manipulating sequences of data. The application you'll build constructs a card deck and then performs a sequence of shuffles, writing the sequence out each time. You'll also compare the updated order to the original order.
+This tutorial offers a lighthearted look at manipulating sequences of data. The application constructs a card deck, performs a sequence of shuffles, and writes the sequence out each time. It also compares the updated order to the original order.
This tutorial has multiple steps. After each step, you can run the application and see the progress. You can also see the [completed sample](https://github.com/dotnet/samples/blob/main/csharp/getting-started/console-linq) in the dotnet/samples GitHub repository. For download instructions, see [Samples and Tutorials](../../samples-and-tutorials/index.md#view-and-download-samples).
@@ -28,331 +27,147 @@ This tutorial has multiple steps. After each step, you can run the application a
[!INCLUDE [Prerequisites](../../../includes/prerequisites-basic.md)]
-## Create the Application
+## Create the application
-The first step is to create a new application. Open a command prompt and create a new directory for your application. Make that the current directory. Type the command `dotnet new console` at the command prompt. This creates the starter files for a basic "Hello World" application.
+Create a new application. Open a command prompt and create a new directory for your application. Make that the current directory. Type the command `dotnet new console -o LinqFaroShuffle` at the command prompt. This command creates the starter files for a basic "Hello World" application.
If you've never used C# before, [this tutorial](console-teleprompter.md) explains the structure of a C# program. You can read that and then return here to learn more about LINQ.
-## Create the Data Set
-
-Before you begin, make sure that the following lines are at the top of the `Program.cs` file generated by `dotnet new console`:
-
-```csharp
-// Program.cs
-using System;
-using System.Collections.Generic;
-using System.Linq;
-```
-
-If these three lines (`using` directives) aren't at the top of the file, your program might not compile.
+## Create the data set
> [!TIP]
> For this tutorial, you can organize your code in a namespace called `LinqFaroShuffle` to match the sample code, or you can use the default global namespace. If you choose to use a namespace, make sure all your classes and methods are consistently within the same namespace, or add appropriate `using` statements as needed.
-Now that you have all of the references that you'll need, consider what constitutes a deck of cards. Commonly, a deck of playing cards has four suits, and each suit has thirteen values. Normally, you might consider creating a `Card` class right off the bat and populating a collection of `Card` objects by hand. With LINQ, you can be more concise than the usual way of dealing with creating a deck of cards. Instead of creating a `Card` class, you can create two sequences to represent suits and ranks, respectively. You'll create a really simple pair of [*iterator methods*](../iterators.md#enumeration-sources-with-iterator-methods) that will generate the ranks and suits as s of strings:
+Consider what constitutes a deck of cards. A deck of playing cards has four suits, and each suit has 13 values. Normally, you might consider creating a `Card` class right away and populating a collection of `Card` objects by hand. With LINQ, you can be more concise than the usual way of creating a deck of cards. Instead of creating a `Card` class, create two sequences to represent suits and ranks. Create a pair of [*iterator methods*](../iterators.md#enumeration-sources-with-iterator-methods) that generate the ranks and suits as s of strings:
-```csharp
-// Program.cs
-// The Main() method
-
-static IEnumerable Suits()
-{
- yield return "clubs";
- yield return "diamonds";
- yield return "hearts";
- yield return "spades";
-}
-
-static IEnumerable Ranks()
-{
- yield return "two";
- yield return "three";
- yield return "four";
- yield return "five";
- yield return "six";
- yield return "seven";
- yield return "eight";
- yield return "nine";
- yield return "ten";
- yield return "jack";
- yield return "queen";
- yield return "king";
- yield return "ace";
-}
-```
+:::code source="snippets/console-linq/InterimSteps.cs" id="StepOne":::
-Place these underneath the `Main` method in your `Program.cs` file. These two methods both utilize the `yield return` syntax to produce a sequence as they run. The compiler builds an object that implements and generates the sequence of strings as they are requested.
+Place these methods under the `Console.WriteLine` statement in your `Program.cs` file. These two methods both use the `yield return` syntax to produce a sequence as they run. The compiler builds an object that implements and generates the sequence of strings as they're requested.
-Now, use these iterator methods to create the deck of cards. You'll place the LINQ query in our `Main` method. Here's a look at it:
+Now, use these iterator methods to create the deck of cards. Place the LINQ query at the top of the `Program.cs` file. Here's what it looks like:
-```csharp
-// Program.cs
-static void Main(string[] args)
-{
- var startingDeck = from s in Suits()
- from r in Ranks()
- select new { Suit = s, Rank = r };
-
- // Display each card that we've generated and placed in startingDeck in the console
- foreach (var card in startingDeck)
- {
- Console.WriteLine(card);
- }
-}
-```
+:::code source="snippets/console-linq/InterimSteps.cs" id="StepTwo":::
-The multiple `from` clauses produce a , which creates a single sequence from combining each element in the first sequence with each element in the second sequence. The order is important for our purposes. The first element in the first source sequence (Suits) is combined with every element in the second sequence (Ranks). This produces all thirteen cards of first suit. That process is repeated with each element in the first sequence (Suits). The end result is a deck of cards ordered by suits, followed by values.
+The multiple `from` clauses produce a , which creates a single sequence from combining each element in the first sequence with each element in the second sequence. The order is important for this example. The first element in the first source sequence (Suits) is combined with every element in the second sequence (Ranks). This process produces all 13 cards of first suit. That process is repeated with each element in the first sequence (Suits). The end result is a deck of cards ordered by suits, followed by values.
-It's important to keep in mind that whether you choose to write your LINQ in the query syntax used above or use method syntax instead, it's always possible to go from one form of syntax to the other. The above query written in query syntax can be written in method syntax as:
+Keep in mind that whether you write your LINQ in the query syntax used in the preceding sample or use method syntax instead, it's always possible to go from one form of syntax to the other. The preceding query written in query syntax can be written in method syntax as:
```csharp
-var startingDeck = Suits().SelectMany(suit => Ranks().Select(rank => new { Suit = suit, Rank = rank }));
+var startingDeck = Suits().SelectMany(suit => Ranks().Select(rank => (Suit: suit, Rank: rank )));
```
-The compiler translates LINQ statements written with query syntax into the equivalent method call syntax. Therefore, regardless of your syntax choice, the two versions of the query produce the same result. Choose which syntax works best for your situation: for instance, if you're working in a team where some of the members have difficulty with method syntax, try to prefer using query syntax.
+The compiler translates LINQ statements written with query syntax into the equivalent method call syntax. Therefore, regardless of your syntax choice, the two versions of the query produce the same result. Choose the syntax that works best for your situation. For instance, if you're working in a team where some members have difficulty with method syntax, try to prefer using query syntax.
-Go ahead and run the sample you've built at this point. It will display all 52 cards in the deck. You may find it very helpful to run this sample under a debugger to observe how the `Suits()` and `Ranks()` methods execute. You can clearly see that each string in each sequence is generated only as it is needed.
+Run the sample you built at this point. It displays all 52 cards in the deck. You might find it helpful to run this sample under a debugger to observe how the `Suits()` and `Ranks()` methods execute. You can clearly see that each string in each sequence is generated only as needed.

-## Manipulate the Order
+## Manipulate the order
-Next, focus on how you're going to shuffle the cards in the deck. The first step in any good shuffle is to split the deck in two. The and methods that are part of the LINQ APIs provide that feature for you. Place them underneath the `foreach` loop:
+Next, focus on how you shuffle the cards in the deck. The first step in any good shuffle is to split the deck in two. The and methods that are part of the LINQ APIs provide that feature. Place them following the `foreach` loop:
-```csharp
-// Program.cs
-public static void Main(string[] args)
-{
- var startingDeck = from s in Suits()
- from r in Ranks()
- select new { Suit = s, Rank = r };
-
- foreach (var c in startingDeck)
- {
- Console.WriteLine(c);
- }
-
- // 52 cards in a deck, so 52 / 2 = 26
- var top = startingDeck.Take(26);
- var bottom = startingDeck.Skip(26);
-}
-```
+:::code source="snippets/console-linq/InterimSteps.cs" id="StepThree":::
-However, there's no shuffle method to take advantage of in the standard library, so you'll have to write your own. The shuffle method you'll be creating illustrates several techniques that you'll use with LINQ-based programs, so each part of this process will be explained in steps.
+However, there's no shuffle method to take advantage of in the standard library, so you need to write your own. The shuffle method you create illustrates several techniques that you use with LINQ-based programs, so each part of this process is explained in steps.
-In order to add some functionality to how you interact with the you'll get back from LINQ queries, you'll need to write some special kinds of methods called [extension methods](../programming-guide/classes-and-structs/extension-methods.md). Briefly, an extension method is a special purpose *static method* that adds new functionality to an already-existing type without having to modify the original type you want to add functionality to.
+To add functionality to how you interact with the results of LINQ queries, you write some special kinds of methods called [extension methods](../programming-guide/classes-and-structs/extension-methods.md). An extension method is a special purpose *static method* that adds new functionality to an already-existing type without having to modify the original type you want to add functionality to.
Give your extension methods a new home by adding a new *static* class file to your program called `Extensions.cs`, and then start building out the first extension method:
-```csharp
-// Extensions.cs
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace LinqFaroShuffle
-{
- public static class Extensions
- {
- public static IEnumerable InterleaveSequenceWith(this IEnumerable first, IEnumerable second)
- {
- // Your implementation will go here soon enough
- }
- }
-}
-```
+:::code source="snippets/console-linq/InterimSteps.cs" id="StepFour":::
> [!NOTE]
> If you're using an editor other than Visual Studio (such as Visual Studio Code), you might need to add `using LinqFaroShuffle;` to the top of your _Program.cs_ file for the extension methods to be accessible. Visual Studio automatically adds this using statement, but other editors might not.
-Look at the method signature for a moment, specifically the parameters:
+The `extension` container specifies the type being extended. The `extension` node declares the type and name of the *receiver parameter* for all members inside the `extension` container. In this example, you're extending `IEnumerable`, and the parameter is named `sequence`.
+
+Extension member declarations appear as though they're members of the receiver type:
```csharp
-public static IEnumerable InterleaveSequenceWith (this IEnumerable first, IEnumerable second)
+public IEnumerable InterleaveSequenceWith(IEnumerable second)
```
-You can see the addition of the `this` modifier on the first argument to the method. That means you call the method as though it were a member method of the type of the first argument. This method declaration also follows a standard idiom where the input and output types are `IEnumerable`. That practice enables LINQ methods to be chained together to perform more complex queries.
+You call the method as though it were a member method of the extended type. This method declaration also follows a standard idiom where the input and output types are `IEnumerable`. That practice enables LINQ methods to be chained together to perform more complex queries.
-Naturally, since you split the deck into halves, you'll need to join those halves together. In code, this means you'll be enumerating both of the sequences you acquired through and at once, *`interleaving`* the elements, and creating one sequence: your now-shuffled deck of cards. Writing a LINQ method that works with two sequences requires that you understand how works.
+Since you split the deck into halves, you need to join those halves together. In code, this means you enumerate both of the sequences you acquired through and at once, *interleaving* the elements, and creating one sequence: your now-shuffled deck of cards. Writing a LINQ method that works with two sequences requires that you understand how works.
-The interface has one method: . The object returned by has a method to move to the next element, and a property that retrieves the current element in the sequence. You will use those two members to enumerate the collection and return the elements. This Interleave method will be an iterator method, so instead of building a collection and returning the collection, you'll use the `yield return` syntax shown above.
+The interface has one method: . The object returned by has a method to move to the next element and a property that retrieves the current element in the sequence. You use those two members to enumerate the collection and return the elements. This Interleave method is an iterator method, so instead of building a collection and returning the collection, you use the `yield return` syntax shown in the preceding code.
Here's the implementation of that method:
-[!CODE-csharp[InterleaveSequenceWith](../../../samples/snippets/csharp/getting-started/console-linq/extensions.cs?name=snippet1)]
+:::code source="snippets/console-linq/extensions.cs" id="snippet1":::
-Now that you've written this method, go back to the `Main` method and shuffle the deck once:
+Now that you wrote this method, go back to the `Main` method and shuffle the deck once:
-```csharp
-// Program.cs
-public static void Main(string[] args)
-{
- var startingDeck = from s in Suits()
- from r in Ranks()
- select new { Suit = s, Rank = r };
-
- foreach (var c in startingDeck)
- {
- Console.WriteLine(c);
- }
-
- var top = startingDeck.Take(26);
- var bottom = startingDeck.Skip(26);
- var shuffle = top.InterleaveSequenceWith(bottom);
-
- foreach (var c in shuffle)
- {
- Console.WriteLine(c);
- }
-}
-```
+:::code source="snippets/console-linq/InterimSteps.cs" id="StepFive":::
## Comparisons
-How many shuffles it takes to set the deck back to its original order? To find out, you'll need to write a method that determines if two sequences are equal. After you have that method, you'll need to place the code that shuffles the deck in a loop, and check to see when the deck is back in order.
+Determine how many shuffles it takes to set the deck back to its original order. To find out, write a method that determines if two sequences are equal. After you have that method, place the code that shuffles the deck in a loop, and check to see when the deck is back in order.
-Writing a method to determine if the two sequences are equal should be straightforward. It's a similar structure to the method you wrote to shuffle the deck. Only this time, instead of `yield return`ing each element, you'll compare the matching elements of each sequence. When the entire sequence has been enumerated, if every element matches, the sequences are the same:
+Writing a method to determine if the two sequences are equal should be straightforward. It's a similar structure to the method you wrote to shuffle the deck. However, this time, instead of using `yield return` for each element, you compare the matching elements of each sequence. When the entire sequence is enumerated, if every element matches, the sequences are the same:
-[!CODE-csharp[SequenceEquals](../../../samples/snippets/csharp/getting-started/console-linq/extensions.cs?name=snippet2)]
+:::code source="snippets/console-linq/extensions.cs" id="snippet2":::
-This shows a second LINQ idiom: terminal methods. They take a sequence as input (or in this case, two sequences), and return a single scalar value. When using terminal methods, they are always the final method in a chain of methods for a LINQ query, hence the name "terminal".
+This method shows a second LINQ idiom: terminal methods. They take a sequence as input (or in this case, two sequences) and return a single scalar value. When you use terminal methods, they're always the final method in a chain of methods for a LINQ query.
-You can see this in action when you use it to determine when the deck is back in its original order. Put the shuffle code inside a loop, and stop when the sequence is back in its original order by applying the `SequenceEquals()` method. You can see it would always be the final method in any query, because it returns a single value instead of a sequence:
+You can see this in action when you use it to determine when the deck is back in its original order. Put the shuffle code inside a loop, and stop when the sequence is back in its original order by applying the `SequenceEquals()` method. You can see it would always be the final method in any query because it returns a single value instead of a sequence:
-```csharp
-// Program.cs
-static void Main(string[] args)
-{
- // Query for building the deck
-
- // Shuffling using InterleaveSequenceWith();
-
- var times = 0;
- // We can re-use the shuffle variable from earlier, or you can make a new one
- shuffle = startingDeck;
- do
- {
- shuffle = shuffle.Take(26).InterleaveSequenceWith(shuffle.Skip(26));
-
- foreach (var card in shuffle)
- {
- Console.WriteLine(card);
- }
- Console.WriteLine();
- times++;
-
- } while (!startingDeck.SequenceEquals(shuffle));
-
- Console.WriteLine(times);
-}
-```
+:::code source="snippets/console-linq/InterimSteps.cs" id="StepSix":::
-Run the code you've got so far and take note of how the deck rearranges on each shuffle. After 8 shuffles (iterations of the do-while loop), the deck returns to the original configuration it was in when you first created it from the starting LINQ query.
+Run the code you built so far and notice how the deck rearranges on each shuffle. After 8 shuffles (iterations of the do-while loop), the deck returns to the original configuration it was in when you first created it from the starting LINQ query.
## Optimizations
-The sample you've built so far executes an *out shuffle*, where the top and bottom cards stay the same on each run. Let's make one change: we'll use an *in shuffle* instead, where all 52 cards change position. For an in shuffle, you interleave the deck so that the first card in the bottom half becomes the first card in the deck. That means the last card in the top half becomes the bottom card. This is a simple change to a singular line of code. Update the current shuffle query by switching the positions of and . This will change the order of the top and bottom halves of the deck:
+The sample you built so far executes an *out shuffle*, where the top and bottom cards stay the same on each run. Let's make one change: use an *in shuffle* instead, where all 52 cards change position. For an in shuffle, you interleave the deck so that the first card in the bottom half becomes the first card in the deck. That means the last card in the top half becomes the bottom card. This change requires one line of code. Update the current shuffle query by switching the positions of and . This change switches the order of the top and bottom halves of the deck:
```csharp
-shuffle = shuffle.Skip(26).InterleaveSequenceWith(shuffle.Take(26));
+shuffledDeck = shuffledDeck.Skip(26).InterleaveSequenceWith(shuffledDeck.Take(26));
```
-Run the program again, and you'll see that it takes 52 iterations for the deck to reorder itself. You'll also start to notice some serious performance degradations as the program continues to run.
-
-There are a number of reasons for this. You can tackle one of the major causes of this performance drop: inefficient use of [*lazy evaluation*](../../standard/linq/deferred-execution-lazy-evaluation.md).
+Run the program again, and you see that it takes 52 iterations for the deck to reorder itself. You also notice some serious performance degradation as the program continues to run.
-Briefly, lazy evaluation states that the evaluation of a statement is not performed until its value is needed. LINQ queries are statements that are evaluated lazily. The sequences are generated only as the elements are requested. Usually, that's a major benefit of LINQ. However, in a use such as this program, this causes exponential growth in execution time.
+There are several reasons for this performance drop. You can tackle one of the major causes: inefficient use of [*lazy evaluation*](../../standard/linq/deferred-execution-lazy-evaluation.md).
-Remember that we generated the original deck using a LINQ query. Each shuffle is generated by performing three LINQ queries on the previous deck. All these are performed lazily. That also means they are performed again each time the sequence is requested. By the time you get to the 52nd iteration, you're regenerating the original deck many, many times. Let's write a log to demonstrate this behavior. Then, you'll fix it.
+Lazy evaluation states that the evaluation of a statement isn't performed until its value is needed. LINQ queries are statements that are evaluated lazily. The sequences are generated only as the elements are requested. Usually, that's a major benefit of LINQ. However, in a program like this one, lazy evaluation causes exponential growth in execution time.
-In your `Extensions.cs` file, type in or copy the method below. This extension method creates a new file called `debug.log` within your project directory and records what query is currently being executed to the log file. This extension method can be appended to any query to mark that the query executed.
+Remember that you generated the original deck using a LINQ query. Each shuffle is generated by performing three LINQ queries on the previous deck. All these queries are performed lazily. That also means they're performed again each time the sequence is requested. By the time you get to the 52nd iteration, you're regenerating the original deck many times. Write a log to demonstrate this behavior. Once you gather data, you can improve performance.
-[!CODE-csharp[LogQuery](../../../samples/snippets/csharp/getting-started/console-linq/extensions.cs?name=snippet3)]
+In your `Extensions.cs` file, type in or copy the method in the following code sample. This extension method creates a new file called `debug.log` within your project directory and records what query is currently being executed to the log file. Append this extension method to any query to mark that the query executed.
-You will see a red squiggle under `File`, meaning it doesn't exist. It won't compile, since the compiler doesn't know what `File` is. To solve this problem, make sure to add the following line of code under the very first line in `Extensions.cs`:
-
-```csharp
-using System.IO;
-```
-
-This should solve the issue and the red error disappears.
+:::code source="snippets/console-linq/extensions.cs" id="snippet3":::
Next, instrument the definition of each query with a log message:
-```csharp
-// Program.cs
-public static void Main(string[] args)
-{
- var startingDeck = (from s in Suits().LogQuery("Suit Generation")
- from r in Ranks().LogQuery("Rank Generation")
- select new { Suit = s, Rank = r }).LogQuery("Starting Deck");
-
- foreach (var c in startingDeck)
- {
- Console.WriteLine(c);
- }
-
- Console.WriteLine();
- var times = 0;
- var shuffle = startingDeck;
-
- do
- {
- // Out shuffle
- /*
- shuffle = shuffle.Take(26)
- .LogQuery("Top Half")
- .InterleaveSequenceWith(shuffle.Skip(26)
- .LogQuery("Bottom Half"))
- .LogQuery("Shuffle");
- */
-
- // In shuffle
- shuffle = shuffle.Skip(26).LogQuery("Bottom Half")
- .InterleaveSequenceWith(shuffle.Take(26).LogQuery("Top Half"))
- .LogQuery("Shuffle");
-
- foreach (var c in shuffle)
- {
- Console.WriteLine(c);
- }
-
- times++;
- Console.WriteLine(times);
- } while (!startingDeck.SequenceEquals(shuffle));
-
- Console.WriteLine(times);
-}
-```
+:::code source="snippets/console-linq/InterimSteps.cs" id="StepSeven":::
-Notice that you don't log every time you access a query. You log only when you create the original query. The program still takes a long time to run, but now you can see why. If you run out of patience running the in shuffle with logging turned on, switch back to the out shuffle. You'll still see the lazy evaluation effects. In one run, it executes 2592 queries, including all the value and suit generation.
+Notice that you don't log every time you access a query. You log only when you create the original query. The program still takes a long time to run, but now you can see why. If you run out of patience running the in shuffle with logging turned on, switch back to the out shuffle. You still see the lazy evaluation effects. In one run, it executes 2,592 queries, including the value and suit generation.
-You can improve the performance of the code here to reduce the number of executions you make. A simple fix you can make is to *cache* the results of the original LINQ query that constructs the deck of cards. Currently, you're executing the queries again and again every time the do-while loop goes through an iteration, re-constructing the deck of cards and reshuffling it every time. To cache the deck of cards, you can leverage the LINQ methods and ; when you append them to the queries, they'll perform the same actions you've told them to, but now they'll store the results in an array or a list, depending on which method you choose to call. Append the LINQ method to both queries and run the program again:
+You can improve the performance of the code to reduce the number of executions you make. A simple fix is to *cache* the results of the original LINQ query that constructs the deck of cards. Currently, you're executing the queries again and again every time the do-while loop goes through an iteration, reconstructing the deck of cards and reshuffling it every time. To cache the deck of cards, apply the LINQ methods and . When you append them to the queries, they perform the same actions you told them to, but now they store the results in an array or a list, depending on which method you choose to call. Append the LINQ method to both queries and run the program again:
-[!CODE-csharp[Main](../../../samples/snippets/csharp/getting-started/console-linq/Program.cs?name=snippet1)]
+:::code source="snippets/console-linq/Program.cs" id="snippet1":::
-Now the out shuffle is down to 30 queries. Run again with the in shuffle and you'll see similar improvements: it now executes 162 queries.
+Now the out shuffle is down to 30 queries. Run again with the in shuffle and you see similar improvements: it now executes 162 queries.
-Please note that this example is **designed** to highlight the use cases where lazy evaluation can cause performance difficulties. While it's important to see where lazy evaluation can impact code performance, it's equally important to understand that not all queries should run eagerly. The performance hit you incur without using is because each new arrangement of the deck of cards is built from the previous arrangement. Using lazy evaluation means each new deck configuration is built from the original deck, even executing the code that built the `startingDeck`. That causes a large amount of extra work.
+This example is **designed** to highlight the use cases where lazy evaluation can cause performance difficulties. While it's important to see where lazy evaluation can impact code performance, it's equally important to understand that not all queries should run eagerly. The performance hit you incur without using is because each new arrangement of the deck of cards is built from the previous arrangement. Using lazy evaluation means each new deck configuration is built from the original deck, even executing the code that built the `startingDeck`. That causes a large amount of extra work.
-In practice, some algorithms run well using eager evaluation, and others run well using lazy evaluation. For daily usage, lazy evaluation is usually a better choice when the data source is a separate process, like a database engine. For databases, lazy evaluation allows more complex queries to execute only one round trip to the database process and back to the rest of your code. LINQ is flexible whether you choose to utilize lazy or eager evaluation, so measure your processes and pick whichever kind of evaluation gives you the best performance.
+In practice, some algorithms run well using eager evaluation, and others run well using lazy evaluation. For daily usage, lazy evaluation is usually a better choice when the data source is a separate process, like a database engine. For databases, lazy evaluation allows more complex queries to execute only one round trip to the database process and back to the rest of your code. LINQ is flexible whether you choose to use lazy or eager evaluation, so measure your processes and pick whichever evaluation gives you the best performance.
## Conclusion
In this project, you covered:
-- using LINQ queries to aggregate data into a meaningful sequence
-- writing Extension methods to add our own custom functionality to LINQ queries
-- locating areas in our code where our LINQ queries might run into performance issues like degraded speed
-- lazy and eager evaluation in regards to LINQ queries and the implications they might have on query performance
+- Using LINQ queries to aggregate data into a meaningful sequence.
+- Writing extension methods to add custom functionality to LINQ queries.
+- Locating areas in code where LINQ queries might run into performance issues like degraded speed.
+- Lazy and eager evaluation in LINQ queries and the implications they might have on query performance.
-Aside from LINQ, you learned a bit about a technique magicians use for card tricks. Magicians use the Faro shuffle because they can control where every card moves in the deck. Now that you know, don't spoil it for everyone else!
+Aside from LINQ, you learned about a technique magicians use for card tricks. Magicians use the faro shuffle because they can control where every card moves in the deck. Now that you know, don't spoil it for everyone else!
For more information on LINQ, see:
- [Introduction to LINQ](../linq/index.md)
-- [Basic LINQ Query Operations (C#)](../linq/standard-query-operators/index.md)
-- [Data Transformations With LINQ (C#)](../linq/standard-query-operators/index.md)
-- [Query Syntax and Method Syntax in LINQ (C#)](../linq/get-started/write-linq-queries.md)
-- [C# Features That Support LINQ](../linq/get-started/features-that-support-linq.md)
+- [Basic LINQ query operations (C#)](../linq/standard-query-operators/index.md)
+- [Data transformations with LINQ (C#)](../linq/standard-query-operators/index.md)
+- [Query syntax and method syntax in LINQ (C#)](../linq/get-started/write-linq-queries.md)
+- [C# features that support LINQ](../linq/get-started/features-that-support-linq.md)
diff --git a/samples/snippets/csharp/getting-started/console-linq/Program.cs b/samples/snippets/csharp/getting-started/console-linq/Program.cs
deleted file mode 100644
index 5898f400b8b84..0000000000000
--- a/samples/snippets/csharp/getting-started/console-linq/Program.cs
+++ /dev/null
@@ -1,100 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace LinqFaroShuffle
-{
- #region snippet2
- public enum Suit
- {
- Clubs,
- Diamonds,
- Hearts,
- Spades
- }
- #endregion
-
- #region snippet3
- public enum Rank
- {
- Two,
- Three,
- Four,
- Five,
- Six,
- Seven,
- Eight,
- Nine,
- Ten,
- Jack,
- Queen,
- King,
- Ace
- }
- #endregion
-
- public class Program
- {
- #region snippet4
- static IEnumerable Suits() => (Enum.GetValues(typeof(Suit)) as IEnumerable)!;
- #endregion
-
- #region snippet5
- static IEnumerable Ranks() => (Enum.GetValues(typeof(Rank)) as IEnumerable)!;
- #endregion
-
- #region snippet1
- public static void Main(string[] args)
- {
- IEnumerable? suits = Suits();
- IEnumerable? ranks = Ranks();
-
- if ((suits is null) || (ranks is null))
- return;
-
- var startingDeck = (from s in suits.LogQuery("Suit Generation")
- from r in ranks.LogQuery("Value Generation")
- select new { Suit = s, Rank = r })
- .LogQuery("Starting Deck")
- .ToArray();
-
- foreach (var c in startingDeck)
- {
- Console.WriteLine(c);
- }
-
- Console.WriteLine();
-
- var times = 0;
- var shuffle = startingDeck;
-
- do
- {
- /*
- shuffle = shuffle.Take(26)
- .LogQuery("Top Half")
- .InterleaveSequenceWith(shuffle.Skip(26).LogQuery("Bottom Half"))
- .LogQuery("Shuffle")
- .ToArray();
- */
-
- shuffle = shuffle.Skip(26)
- .LogQuery("Bottom Half")
- .InterleaveSequenceWith(shuffle.Take(26).LogQuery("Top Half"))
- .LogQuery("Shuffle")
- .ToArray();
-
- foreach (var c in shuffle)
- {
- Console.WriteLine(c);
- }
-
- times++;
- Console.WriteLine(times);
- } while (!startingDeck.SequenceEquals(shuffle));
-
- Console.WriteLine(times);
- }
- #endregion
- }
-}
diff --git a/samples/snippets/csharp/getting-started/console-linq/playingcard.cs b/samples/snippets/csharp/getting-started/console-linq/playingcard.cs
deleted file mode 100644
index 033c0259ac39b..0000000000000
--- a/samples/snippets/csharp/getting-started/console-linq/playingcard.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-namespace LinqFaroShuffle
-{
- #region snippet1
- public class PlayingCard
- {
- public Suit CardSuit { get; }
- public Rank CardRank { get; }
-
- public PlayingCard(Suit s, Rank r)
- {
- CardSuit = s;
- CardRank = r;
- }
-
- public override string ToString()
- {
- return $"{CardRank} of {CardSuit}";
- }
- }
- #endregion
-}
\ No newline at end of file
From 105cb8d102396786d88db4fc2dd56f8351ba1ce7 Mon Sep 17 00:00:00 2001
From: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
Date: Mon, 1 Dec 2025 10:48:50 -0800
Subject: [PATCH 08/28] use peter-evans action (#50241)
---
.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 +-
7 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/.github/workflows/cleanrepo-orphaned-images.yml b/.github/workflows/cleanrepo-orphaned-images.yml
index fbc34d2bd75f5..46a9fc4bfd5e6 100644
--- a/.github/workflows/cleanrepo-orphaned-images.yml
+++ b/.github/workflows/cleanrepo-orphaned-images.yml
@@ -35,7 +35,7 @@ jobs:
# Create the PR for the work done by the "clean repo" tool
- name: create-pull-request
- uses: dotnet/actions-create-pull-request@v4
+ uses: peter-evans/create-pull-request@v7
with:
branch: cleanrepo-orphaned-images
title: "Monthly chores: Delete orphaned images"
diff --git a/.github/workflows/cleanrepo-orphaned-includes.yml b/.github/workflows/cleanrepo-orphaned-includes.yml
index dbeb16a5a0abb..7e21ec58afe4c 100644
--- a/.github/workflows/cleanrepo-orphaned-includes.yml
+++ b/.github/workflows/cleanrepo-orphaned-includes.yml
@@ -35,7 +35,7 @@ jobs:
# Create the PR for the work done by the "clean repo" tool
- name: create-pull-request
- uses: dotnet/actions-create-pull-request@v4
+ uses: peter-evans/create-pull-request@v7
with:
branch: cleanrepo-orphaned-includes
title: "Monthly chores: Delete orphaned include files"
diff --git a/.github/workflows/cleanrepo-orphaned-snippets.yml b/.github/workflows/cleanrepo-orphaned-snippets.yml
index 86ecb90f64c69..7d31980ec1a4e 100644
--- a/.github/workflows/cleanrepo-orphaned-snippets.yml
+++ b/.github/workflows/cleanrepo-orphaned-snippets.yml
@@ -35,7 +35,7 @@ jobs:
# Create the PR for the work done by the "clean repo" tool
- name: create-pull-request
- uses: dotnet/actions-create-pull-request@v4
+ uses: peter-evans/create-pull-request@v7
with:
branch: cleanrepo-orphaned-snippets
title: "Monthly chores: Delete orphaned snippets"
diff --git a/.github/workflows/cleanrepo-redirect-hops.yml b/.github/workflows/cleanrepo-redirect-hops.yml
index 45e89676f97a0..aa71d5ffa2612 100644
--- a/.github/workflows/cleanrepo-redirect-hops.yml
+++ b/.github/workflows/cleanrepo-redirect-hops.yml
@@ -35,7 +35,7 @@ jobs:
# Create the PR for the work done by the "clean repo" tool
- name: create-pull-request
- uses: dotnet/actions-create-pull-request@v4
+ uses: peter-evans/create-pull-request@v7
with:
branch: cleanrepo-remove-hops
title: "Monthly chores: Remove redirect hops"
diff --git a/.github/workflows/cleanrepo-relative-links.yml b/.github/workflows/cleanrepo-relative-links.yml
index be3e48d1db003..54db1f46fe089 100644
--- a/.github/workflows/cleanrepo-relative-links.yml
+++ b/.github/workflows/cleanrepo-relative-links.yml
@@ -35,7 +35,7 @@ jobs:
# Create the PR for the work done by the "clean repo" tool
- name: create-pull-request
- uses: dotnet/actions-create-pull-request@v4
+ uses: peter-evans/create-pull-request@v7
with:
branch: cleanrepo-relative-links
title: "Monthly chores: Use relative links"
diff --git a/.github/workflows/cleanrepo-replace-redirects.yml b/.github/workflows/cleanrepo-replace-redirects.yml
index 39e85d4621659..9b4341241694d 100644
--- a/.github/workflows/cleanrepo-replace-redirects.yml
+++ b/.github/workflows/cleanrepo-replace-redirects.yml
@@ -35,7 +35,7 @@ jobs:
# Create the PR for the work done by the "clean repo" tool
- name: create-pull-request
- uses: dotnet/actions-create-pull-request@v4
+ uses: peter-evans/create-pull-request@v7
with:
branch: cleanrepo-replace-redirects
title: "Monthly chores: Replace redirect targets"
diff --git a/.github/workflows/dependabot-bot.yml b/.github/workflows/dependabot-bot.yml
index 160569e0f8620..0379eab8ace36 100644
--- a/.github/workflows/dependabot-bot.yml
+++ b/.github/workflows/dependabot-bot.yml
@@ -54,7 +54,7 @@ jobs:
dependabot-yml-path: ".github/dependabot.yml"
- name: Create pull request
if: github.event_name == 'workflow_dispatch' || github.repository_owner == 'dotnet'
- uses: dotnet/actions-create-pull-request@v4
+ uses: peter-evans/create-pull-request@v7
with:
branch: create-dependabotconfig-pull-request/patch
title: "Update dependabot.yml - automatically."
From 58be11e912d3b9f0dbe1cbbe1f5b937a22821f1e Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 1 Dec 2025 19:32:59 +0000
Subject: [PATCH 09/28] Monthly chores: Replace redirect targets (#50243)
---
docs/csharp/language-reference/toc.yml | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/docs/csharp/language-reference/toc.yml b/docs/csharp/language-reference/toc.yml
index 800bc43316d71..c6e7591069a41 100644
--- a/docs/csharp/language-reference/toc.yml
+++ b/docs/csharp/language-reference/toc.yml
@@ -1041,7 +1041,7 @@ items:
- name: CS0468
href: ../misc/cs0468.md
- name: CS0470
- href: ../misc/cs0470.md
+ href: ./compiler-messages/interface-implementation-errors.md
- name: CS0471
href: ../misc/cs0471.md
- name: CS0500
@@ -1087,11 +1087,11 @@ items:
- name: CS0537
href: ../misc/cs0537.md
- name: CS0538
- href: ../misc/cs0538.md
+ href: ./compiler-messages/interface-implementation-errors.md
- name: CS0539
- href: ../misc/cs0539.md
+ href: ./compiler-messages/interface-implementation-errors.md
- name: CS0541
- href: ../misc/cs0541.md
+ href: ./compiler-messages/interface-implementation-errors.md
- name: CS0542
href: ../misc/cs0542.md
- name: CS0543
@@ -1109,7 +1109,7 @@ items:
- name: CS0549
href: ../misc/cs0549.md
- name: CS0551
- href: ../misc/cs0551.md
+ href: ./compiler-messages/interface-implementation-errors.md
- name: CS0569
href: ../misc/cs0569.md
- name: CS0570
@@ -1205,11 +1205,11 @@ items:
- name: CS0692
href: ../misc/cs0692.md
- name: CS0694
- href: ../misc/cs0694.md
+ href: ./compiler-messages/generic-type-parameters-errors.md
- name: CS0695
- href: ../misc/cs0695.md
+ href: ./compiler-messages/generic-type-parameters-errors.md
- name: CS0698
- href: ../misc/cs0698.md
+ href: ./compiler-messages/generic-type-parameters-errors.md
- name: CS0699
href: ../misc/cs0699.md
- name: CS0701
From 509e8936a997e28542b6e7941838edf4b83c5c21 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 1 Dec 2025 19:36:40 +0000
Subject: [PATCH 10/28] =?UTF-8?q?Bot=20=F0=9F=A4=96=20generated=20CleanRep?=
=?UTF-8?q?o=20tool=20run=20(#50242)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
---
.../install/includes/linux-install-60-apt.md | 35 -------------------
.../install/includes/linux-ubuntu-80-ms.md | 9 -----
.../includes/linux-ubuntu-not-supported.md | 12 -------
.../includes/linux-ubuntu-package-feed-ms.md | 9 -----
4 files changed, 65 deletions(-)
delete mode 100644 docs/core/install/includes/linux-install-60-apt.md
delete mode 100644 docs/core/install/includes/linux-ubuntu-80-ms.md
delete mode 100644 docs/core/install/includes/linux-ubuntu-not-supported.md
delete mode 100644 docs/core/install/includes/linux-ubuntu-package-feed-ms.md
diff --git a/docs/core/install/includes/linux-install-60-apt.md b/docs/core/install/includes/linux-install-60-apt.md
deleted file mode 100644
index 78b4190bea65f..0000000000000
--- a/docs/core/install/includes/linux-install-60-apt.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-author: adegeo
-ms.author: adegeo
-ms.date: 10/26/2021
-ms.topic: include
-ms.custom: linux-related-content
----
-
-### Install the SDK
-
-The .NET SDK allows you to develop apps with .NET. If you install the .NET SDK, you don't need to install the corresponding runtime. To install the .NET SDK, run the following commands:
-
-```bash
-sudo apt-get update && \
- sudo apt-get install -y dotnet-sdk-6.0
-```
-
-To learn how to use the .NET CLI, see [.NET CLI overview](../../tools/index.md).
-
-### Install the Runtime
-
-The ASP.NET Core Runtime allows you to run apps that were made with .NET that didn't provide the runtime. The following command installs the ASP.NET Core Runtime, which is the most compatible runtime for .NET. In your terminal, run the following commands:
-
-```bash
-sudo apt-get update && \
- sudo apt-get install -y aspnetcore-runtime-6.0
-```
-
-As an alternative to the ASP.NET Core Runtime, you can install the .NET Runtime, which doesn't include ASP.NET Core support: replace `aspnetcore-runtime-6.0` in the previous command with `dotnet-runtime-6.0`:
-
-```bash
-sudo apt-get install -y dotnet-runtime-6.0
-```
-
-To learn how to use the .NET CLI, see [.NET CLI overview](../../tools/index.md).
diff --git a/docs/core/install/includes/linux-ubuntu-80-ms.md b/docs/core/install/includes/linux-ubuntu-80-ms.md
deleted file mode 100644
index 5705f1d711e52..0000000000000
--- a/docs/core/install/includes/linux-ubuntu-80-ms.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-author: adegeo
-ms.author: adegeo
-ms.date: 03/19/2024
-ms.topic: include
-ms.custom: linux-related-content
----
-
-.NET 8.0 isn't available in the Ubuntu package repository. [Register the Microsoft package repository](../linux-ubuntu-decision.md#register-the-microsoft-package-repository) and use that feed to install .NET through APT. If you use the Microsoft package repository to install .NET, you should deprioritize .NET packages from the Ubuntu repository. For more information, see [I need a version of .NET that isn't provided by my Linux distribution](../linux-package-mixup.md?pivots=os-linux-ubuntu#i-need-a-version-of-net-that-isnt-provided-by-my-linux-distribution).
diff --git a/docs/core/install/includes/linux-ubuntu-not-supported.md b/docs/core/install/includes/linux-ubuntu-not-supported.md
deleted file mode 100644
index 4ecf995fb2011..0000000000000
--- a/docs/core/install/includes/linux-ubuntu-not-supported.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-author: adegeo
-ms.author: adegeo
-ms.date: 11/01/2024
-ms.topic: include
-ms.custom: linux-related-content
----
-
-> [!WARNING]
-> This version of Ubuntu is no longer supported.
->
-> Running .NET on this version of Ubuntu is no longer supported.
diff --git a/docs/core/install/includes/linux-ubuntu-package-feed-ms.md b/docs/core/install/includes/linux-ubuntu-package-feed-ms.md
deleted file mode 100644
index 00281277c6ec2..0000000000000
--- a/docs/core/install/includes/linux-ubuntu-package-feed-ms.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-author: adegeo
-ms.author: adegeo
-ms.date: 03/18/2024
-ms.topic: include
-ms.custom: linux-related-content
----
-
-The default Ubuntu package repository doesn't contain this version of .NET. Use the [Microsoft package repository instead](../linux-ubuntu-decision.md#register-the-microsoft-package-repository).
From ddf3ea41d6948fd93b5a89e3be6d96a47913e0f1 Mon Sep 17 00:00:00 2001
From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com>
Date: Mon, 1 Dec 2025 12:39:08 -0800
Subject: [PATCH 11/28] Update package index with latest published versions
(#50245)
---
docs/azure/includes/dotnet-all.md | 2 +-
docs/azure/includes/dotnet-new.md | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md
index 2bbbd68c54499..6f5ff3c96eaf1 100644
--- a/docs/azure/includes/dotnet-all.md
+++ b/docs/azure/includes/dotnet-all.md
@@ -77,7 +77,7 @@
| Monitor Ingestion | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Monitor.Ingestion/1.2.0) | [docs](/dotnet/api/overview/azure/Monitor.Ingestion-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.Ingestion_1.2.0/sdk/monitor/Azure.Monitor.Ingestion/) |
| Online Experimentation | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.OnlineExperimentation/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.OnlineExperimentation-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.OnlineExperimentation_1.0.0-beta.1/sdk/onlineexperimentation/Azure.Analytics.OnlineExperimentation/) |
| OpenAI Assistants | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.OpenAI.Assistants/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.OpenAI.Assistants-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI.Assistants_1.0.0-beta.4/sdk/openai/Azure.AI.OpenAI.Assistants/) |
-| OpenAI Inference | NuGet [2.1.0](https://www.nuget.org/packages/Azure.AI.OpenAI/2.1.0)
NuGet [2.7.0-beta.1](https://www.nuget.org/packages/Azure.AI.OpenAI/2.7.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.OpenAI-readme) | GitHub [2.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.1.0/sdk/openai/Azure.AI.OpenAI/)
GitHub [2.7.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.7.0-beta.1/sdk/openai/Azure.AI.OpenAI/) |
+| OpenAI Inference | NuGet [2.1.0](https://www.nuget.org/packages/Azure.AI.OpenAI/2.1.0)
NuGet [2.7.0-beta.2](https://www.nuget.org/packages/Azure.AI.OpenAI/2.7.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.OpenAI-readme) | GitHub [2.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.1.0/sdk/openai/Azure.AI.OpenAI/)
GitHub [2.7.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.7.0-beta.2/sdk/openai/Azure.AI.OpenAI/) |
| OpenTelemetry AspNetCore | NuGet [1.4.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.AspNetCore/1.4.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.AspNetCore-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.AspNetCore_1.4.0/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/) |
| OpenTelemetry Exporter | NuGet [1.5.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.Exporter/1.5.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.Exporter-readme) | GitHub [1.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.Exporter_1.5.0/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/) |
| Personalizer | NuGet [2.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Personalizer/2.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Personalizer-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [2.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Personalizer_2.0.0-beta.2/sdk/personalizer/Azure.AI.Personalizer/) |
diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md
index 72c31fc334880..a1ba3a3eb6ed6 100644
--- a/docs/azure/includes/dotnet-new.md
+++ b/docs/azure/includes/dotnet-new.md
@@ -82,7 +82,7 @@
| NUnit ? Microsoft Playwright Testing | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.Developer.MicrosoftPlaywrightTesting.NUnit/1.0.0-beta.4) | | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Developer.MicrosoftPlaywrightTesting.NUnit_1.0.0-beta.4/sdk/playwrighttesting/Azure.Developer.MicrosoftPlaywrightTesting.NUnit/) |
| Online Experimentation | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.OnlineExperimentation/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.OnlineExperimentation-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.OnlineExperimentation_1.0.0-beta.1/sdk/onlineexperimentation/Azure.Analytics.OnlineExperimentation/) |
| OpenAI Assistants | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.OpenAI.Assistants/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.OpenAI.Assistants-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI.Assistants_1.0.0-beta.4/sdk/openai/Azure.AI.OpenAI.Assistants/) |
-| OpenAI Inference | NuGet [2.1.0](https://www.nuget.org/packages/Azure.AI.OpenAI/2.1.0)
NuGet [2.7.0-beta.1](https://www.nuget.org/packages/Azure.AI.OpenAI/2.7.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.OpenAI-readme) | GitHub [2.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.1.0/sdk/openai/Azure.AI.OpenAI/)
GitHub [2.7.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.7.0-beta.1/sdk/openai/Azure.AI.OpenAI/) |
+| OpenAI Inference | NuGet [2.1.0](https://www.nuget.org/packages/Azure.AI.OpenAI/2.1.0)
NuGet [2.7.0-beta.2](https://www.nuget.org/packages/Azure.AI.OpenAI/2.7.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.OpenAI-readme) | GitHub [2.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.1.0/sdk/openai/Azure.AI.OpenAI/)
GitHub [2.7.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.7.0-beta.2/sdk/openai/Azure.AI.OpenAI/) |
| OpenTelemetry AspNetCore | NuGet [1.4.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.AspNetCore/1.4.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.AspNetCore-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.AspNetCore_1.4.0/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/) |
| OpenTelemetry Exporter | NuGet [1.5.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.Exporter/1.5.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.Exporter-readme) | GitHub [1.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.Exporter_1.5.0/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/) |
| OpenTelemetry LiveMetrics | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.LiveMetrics/1.0.0-beta.3) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.LiveMetrics-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.LiveMetrics_1.0.0-beta.3/sdk/monitor/Azure.Monitor.OpenTelemetry.LiveMetrics/) |
From 224280a3e71e3688cce67e92398f3ba449016b67 Mon Sep 17 00:00:00 2001
From: Youssef Victor
Date: Mon, 1 Dec 2025 21:55:51 +0100
Subject: [PATCH 12/28] Update MSTest v1 to v3 migration guide (#50206)
* Update MSTest v1 to v3 migration guide
* Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
...-testing-mstest-migration-from-v1-to-v3.md | 23 +++++++++++--------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md b/docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
index e2a59a4980bfc..a6f7e6791cfa3 100644
--- a/docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
+++ b/docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
@@ -3,7 +3,7 @@ title: MSTest migration to v3
description: Learn about migrating from legacy MSTest (MSTest v1) to latest MSTest (MSTest v3).
author: engyebrahim
ms.author: enjieid
-ms.date: 11/06/2024
+ms.date: 11/28/2025
---
# MSTest v3 migration guide
@@ -21,9 +21,9 @@ If your project relies on MSTest for unit testing and includes the above referen
### Why migrate to MSTest v3?
-Even if you’re satisfied with your current MSTest setup, upgrading to MSTest v3 unlocks substantial advantages that improve both the quality and future-readiness of your tests. Here’s why making the switch now can be a valuable step forward:
+Even if you're satisfied with your current MSTest setup, upgrading to MSTest v3 unlocks substantial advantages that improve both the quality and future-readiness of your tests. Here's why making the switch now can be a valuable step forward:
-- **Enhanced security**: MSTest v1 has known security vulnerabilities. With MSTest v3, we’ve implemented extensive security improvements to safeguard your testing environment.
+- **Enhanced security**: MSTest v1 has known security vulnerabilities. With MSTest v3, we've implemented extensive security improvements to safeguard your testing environment.
- **Immediate Performance Boosts**: MSTest v3 significantly reduces test execution time and optimizes resource usage. This is particularly beneficial in CI/CD pipelines, where faster tests can shorten deployment cycles and cut infrastructure costs.
- **Future-Proofing Your Tests**: MSTest v3 offers robust support for modern .NET versions, including .NET 8, and future iterations, along with cross-platform compatibility. This means your tests will be more adaptable and ready for upgrades, avoiding the technical debt of outdated testing frameworks.
@@ -36,7 +36,10 @@ Even if you’re satisfied with your current MSTest setup, upgrading to MSTest v
- **Greater Flexibility and Extensibility**: MSTest v3 supports advanced testing scenarios, including dynamic data sources and in-assembly parallel execution. This flexibility enables more sophisticated testing approaches and speeds up test suites without complex configurations.
-By upgrading, you’re setting up your tests to be faster, more reliable, and adaptable to future .NET developments, positioning your project for long-term success and easier maintenance.
+By upgrading, you're setting up your tests to be faster, more reliable, and adaptable to future .NET developments, positioning your project for long-term success and easier maintenance.
+
+> [!TIP]
+> After migrating to MSTest v3, consider taking a further step and migrate to MSTest v4. For more information, see [Migrate from MSTest v3 to v4](./unit-testing-mstest-migration-v3-v4.md).
## Migration steps
@@ -54,7 +57,7 @@ In non-SDK style projects, these references are often added through Visual Studi
4. Inside the **References** folder, **find and select** the MSTest DLL references, `Microsoft.VisualStudio.QualityTools.UnitTestFramework`
5. **Right-click** the selected reference(s) and choose **Remove** from the context menu.
- 
+ 
6. **Save the project** to apply changes.
@@ -65,20 +68,20 @@ You can update your project to MSTest v3 in one of two ways:
- **Update Packages**: If you have NuGet package references to the [MSTest.TestFramework](https://www.nuget.org/packages/MSTest.TestFramework) and the [MSTest.TestAdapter](https://www.nuget.org/packages/MSTest.TestAdapter/), update them using the NuGet Package Manager in Visual Studio or by running the following command in the NuGet Package Manager Console:
```shell
- Update-Package MSTest.TestFramework -Version 3.6.2
- Update-Package MSTest.TestAdapter -Version 3.6.2
+ Update-Package MSTest.TestFramework -Version 3.11.1
+ Update-Package MSTest.TestAdapter -Version 3.11.1
```
- **Or Install MSTest Package**: Install the latest [MSTest](https://www.nuget.org/packages/MSTest) package using the NuGet Package Manager in Visual Studio or by running the following command in the NuGet Package Manager Console:
```shell
- Install-Package MSTest -Version 3.6.2
+ Install-Package MSTest -Version 3.11.1
```
- **Or update the project file directly** (for SDK-style projects): Update your `.csproj` file to specify the MSTest SDK version.
```xml
-
+
net8.0
@@ -140,7 +143,7 @@ The DataRowAttribute constructors in MSTest v3 have been simplified to enforce t
public void MyTestMethod(int number, string text) { ... }
```
-In cases where types don’t match exactly, MSTest v3 will now raise an error rather than attempting a conversion.
+In cases where types don't match exactly, MSTest v3 will now raise an error rather than attempting a conversion.
### Timeout settings
From aecc12536f4e71cd54bd6bba7951f3692914b790 Mon Sep 17 00:00:00 2001
From: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
Date: Mon, 1 Dec 2025 15:48:27 -0800
Subject: [PATCH 13/28] Prevent tags from loc (#50222)
---
...onfigsections-element-for-configuration.md | 8 +-
.../file-schema/configuration-element.md | 22 +--
.../configuration-sections-schema.md | 6 +-
.../cryptography/cryptoclass-element.md | 114 +++++++--------
.../cryptography/cryptoclasses-element.md | 132 ++++++++---------
.../cryptographysettings-element.md | 120 ++++++++--------
.../cryptography/cryptonamemapping-element.md | 114 +++++++--------
.../file-schema/cryptography/index.md | 28 ++--
...orlib-element-for-cryptography-settings.md | 116 +++++++--------
.../cryptography/nameentry-element.md | 134 +++++++++---------
.../cryptography/oidentry-element.md | 124 ++++++++--------
.../cryptography/oidmap-element.md | 112 +++++++--------
.../file-schema/custom-element-1.md | 10 +-
.../file-schema/custom-element-2.md | 4 +-
.../linkedconfiguration-element.md | 22 +--
.../remove-element-for-custom-2.md | 16 +--
16 files changed, 541 insertions(+), 541 deletions(-)
diff --git a/docs/framework/configure-apps/file-schema/configsections-element-for-configuration.md b/docs/framework/configure-apps/file-schema/configsections-element-for-configuration.md
index 01ccbf457c0b4..0eaff26de8861 100644
--- a/docs/framework/configure-apps/file-schema/configsections-element-for-configuration.md
+++ b/docs/framework/configure-apps/file-schema/configsections-element-for-configuration.md
@@ -2,14 +2,14 @@
description: "Learn more about: element for "
title: " element for "
ms.date: "05/01/2017"
-f1_keywords:
+f1_keywords:
- "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/configSections"
-helpviewer_keywords:
+helpviewer_keywords:
- "configSections Element"
- " Element"
ms.assetid: 9f963c1b-dc3f-4220-a8b6-2dd7a5a8e039
---
-# \ element for \
+# `` element for ``
Contains configuration section and namespace declarations.
@@ -35,7 +35,7 @@ None
## Remarks
-If this element is in a configuration file, it must be the first child element of the **\** element.
+If this element is in a configuration file, it must be the first child element of the `` element.
## Example
diff --git a/docs/framework/configure-apps/file-schema/configuration-element.md b/docs/framework/configure-apps/file-schema/configuration-element.md
index fcb8121a9d40a..eea6f30ca77a8 100644
--- a/docs/framework/configure-apps/file-schema/configuration-element.md
+++ b/docs/framework/configure-apps/file-schema/configuration-element.md
@@ -2,16 +2,16 @@
description: "Learn more about: element"
title: " element"
ms.date: "03/30/2017"
-f1_keywords:
+f1_keywords:
- "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration"
-helpviewer_keywords:
+helpviewer_keywords:
- " element"
- "configuration element"
- "container tags, element"
ms.assetid: 2ec1c9dc-2e5c-4ef0-9958-81670ab88449
---
-# \ element
+# `` element
The root element in every configuration file used by the common language runtime and .NET Framework applications.
@@ -38,20 +38,20 @@ None
| Element | Description |
| --- | ----------- |
| [**\**](assemblybinding-element-for-configuration.md) | Specifies assembly binding policy at the configuration level.|
-| [**\** Settings Schema](./startup/index.md) | All elements in the startup settings schema. |
-| [**\** Settings Schema](./runtime/index.md) | All elements in the runtime settings schema. |
-| [**\** Settings Schema](/previous-versions/dotnet/netframework-4.0/z415cf9a(v=vs.100)) | All elements in the remoting settings schema. |
-| [**\** Settings Schema](./network/index.md) | All elements in the network settings schema. |
-| [**\** Settings Schema](./cryptography/index.md) | All elements in the crypto settings schema. |
-| [**\** Sections Schema](configuration-sections-schema.md) | All elements in the configuration section settings schema. |
+| [`` Settings Schema](./startup/index.md) | All elements in the startup settings schema. |
+| [`` Settings Schema](./runtime/index.md) | All elements in the runtime settings schema. |
+| [`` Settings Schema](/previous-versions/dotnet/netframework-4.0/z415cf9a(v=vs.100)) | All elements in the remoting settings schema. |
+| [`` Settings Schema](./network/index.md) | All elements in the network settings schema. |
+| [`` Settings Schema](./cryptography/index.md) | All elements in the crypto settings schema. |
+| [`` Sections Schema](configuration-sections-schema.md) | All elements in the configuration section settings schema. |
| [Trace and Debug Settings Schema](./trace-debug/index.md) | All elements in the trace and debug settings schema. |
| [ASP.NET Configuration Settings Schema](/previous-versions/dotnet/netframework-4.0/b5ysx397(v=vs.100)) | All elements in the ASP.NET configuration schema, which includes elements for configuring ASP.NET Web sites and applications. Used in *Web.config* files. |
-| [**\** Settings Schema](/previous-versions/dotnet/netframework-4.0/cctwteet(v=vs.100)) | All elements in the Web services settings schema. |
+| [`` Settings Schema](/previous-versions/dotnet/netframework-4.0/cctwteet(v=vs.100)) | All elements in the Web services settings schema. |
| [Web Settings Schema](./web/index.md) | All elements in the Web settings schema, which includes elements for configuring how ASP.NET works with a host application such as IIS. Used in *aspnet.config* files. |
## Remarks
-Each configuration file must contain exactly one **\** element.
+Each configuration file must contain exactly one `` element.
## See also
diff --git a/docs/framework/configure-apps/file-schema/configuration-sections-schema.md b/docs/framework/configure-apps/file-schema/configuration-sections-schema.md
index 510b7eaf1091f..d3973fee0340a 100644
--- a/docs/framework/configure-apps/file-schema/configuration-sections-schema.md
+++ b/docs/framework/configure-apps/file-schema/configuration-sections-schema.md
@@ -2,7 +2,7 @@
description: "Learn more about: Configuration sections schema"
title: "Configuration sections schema"
ms.date: "05/02/2017"
-helpviewer_keywords:
+helpviewer_keywords:
- "configuration settings [.NET Framework], custom"
- "schema configuration settings"
- "configuration sections [.NET Framework]"
@@ -23,8 +23,8 @@ The configuration sections schema contains elements that define custom settings
| | Description |
| --- | ----------- |
| [**\**](configsections-element-for-configuration.md) | Contains configuration section and namespace declarations. |
-| [**\** for **\** and **\**](section-element.md) | Contains a configuration section declaration. |
-| [**\** for **\**](sectiongroup-element-for-configsections.md) | Defines a namespace for configuration sections. |
+| [`` for `` and ``](section-element.md) | Contains a configuration section declaration. |
+| [`` for ``](sectiongroup-element-for-configsections.md) | Defines a namespace for configuration sections. |
diff --git a/docs/framework/configure-apps/file-schema/cryptography/cryptoclass-element.md b/docs/framework/configure-apps/file-schema/cryptography/cryptoclass-element.md
index 157ee1936f1a1..1ff74090509ab 100644
--- a/docs/framework/configure-apps/file-schema/cryptography/cryptoclass-element.md
+++ b/docs/framework/configure-apps/file-schema/cryptography/cryptoclass-element.md
@@ -2,17 +2,17 @@
description: "Learn more about: Element"
title: " Element"
ms.date: "03/30/2017"
-f1_keywords:
+f1_keywords:
- "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/mscorlib/cryptographySettings/cryptoNameMapping/cryptoClasses/cryptoClass"
- "http://schemas.microsoft.com/.NetConfiguration/v2.0#cryptoClass"
-helpviewer_keywords:
+helpviewer_keywords:
- "cryptoClass element"
- " element"
ms.assetid: 03db52ef-010e-44ea-b6fd-b9c900ecad50
---
-# \ Element
+# `` Element
-Contains a cryptography class that has a mapping to a friendly name in the [\](nameentry-element.md) element.
+Contains a cryptography class that has a mapping to a friendly name in the [\](nameentry-element.md) element.
[**\**](../configuration-element.md)\
[**\**](mscorlib-element-for-cryptography-settings.md)\
@@ -21,59 +21,59 @@ Contains a cryptography class that has a mapping to a friendly name in the [\**](cryptoclasses-element.md)\
**\**
-## Syntax
-
-```xml
-
-```
-
-## Attributes and Elements
-
- The following sections describe attributes, child elements, and parent elements.
-
-### Attributes
-
-|Attribute|Description|
-|---------------|-----------------|
-|`customClassName`|Required attribute.
Contains the information for the cryptography class. Use this attribute to provide a short name for your class. You must specify a string that meets the requirements specified in [Specifying Fully Qualified Type Names](../../../../fundamentals/reflection/specifying-fully-qualified-type-names.md).|
-
-### Child Elements
-
- None.
-
-### Parent Elements
-
-|Element|Description|
-|-------------|-----------------|
-|`configuration`|The root element in every configuration file used by the common language runtime and .NET Framework applications.|
-|`cryptoClasses`|Contains a list of cryptography classes that have a mapping to a friendly name in the [\](nameentry-element.md) element.|
-|`cryptographySettings`|Contains cryptography settings.|
-|`cryptoNameMapping`|Contains mappings of classes to friendly names.|
-|`mscorlib`|Contains the [\](cryptographysettings-element.md) element.|
-
-## Example
-
- The following example shows how use the **\** element to reference a cryptography class and to configure the runtime. You can then pass the string "RSA" to the method and use the method to return a `MyCryptoRSAClass` object.
-
-```xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
+## Syntax
+
+```xml
+
+```
+
+## Attributes and Elements
+
+ The following sections describe attributes, child elements, and parent elements.
+
+### Attributes
+
+|Attribute|Description|
+|---------------|-----------------|
+|`customClassName`|Required attribute.
Contains the information for the cryptography class. Use this attribute to provide a short name for your class. You must specify a string that meets the requirements specified in [Specifying Fully Qualified Type Names](../../../../fundamentals/reflection/specifying-fully-qualified-type-names.md).|
+
+### Child Elements
+
+ None.
+
+### Parent Elements
+
+|Element|Description|
+|-------------|-----------------|
+|`configuration`|The root element in every configuration file used by the common language runtime and .NET Framework applications.|
+|`cryptoClasses`|Contains a list of cryptography classes that have a mapping to a friendly name in the [\](nameentry-element.md) element.|
+|`cryptographySettings`|Contains cryptography settings.|
+|`cryptoNameMapping`|Contains mappings of classes to friendly names.|
+|`mscorlib`|Contains the [\](cryptographysettings-element.md) element.|
+
+## Example
+
+ The following example shows how use the `` element to reference a cryptography class and to configure the runtime. You can then pass the string "RSA" to the method and use the method to return a `MyCryptoRSAClass` object.
+
+```xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
## See also
- [Configuration File Schema](../index.md)
diff --git a/docs/framework/configure-apps/file-schema/cryptography/cryptoclasses-element.md b/docs/framework/configure-apps/file-schema/cryptography/cryptoclasses-element.md
index 2f1a36972bba8..014c3167d6d55 100644
--- a/docs/framework/configure-apps/file-schema/cryptography/cryptoclasses-element.md
+++ b/docs/framework/configure-apps/file-schema/cryptography/cryptoclasses-element.md
@@ -2,79 +2,79 @@
description: "Learn more about: Element"
title: " Element"
ms.date: "03/30/2017"
-f1_keywords:
+f1_keywords:
- "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/mscorlib/cryptographySettings/cryptoNameMapping/cryptoClasses"
- "http://schemas.microsoft.com/.NetConfiguration/v2.0#cryptoClasses"
-helpviewer_keywords:
+helpviewer_keywords:
- " element"
- "cryptoClasses element"
ms.assetid: 290d5f96-946d-4f02-babb-1d31ec0b8295
---
-# \ Element
-
-Contains a list of cryptography classes that have a mapping to a friendly name in the [\](nameentry-element.md) element.
-
-[**\**](../configuration-element.md)
- [**\**](mscorlib-element-for-cryptography-settings.md)
- [**\**](cryptographysettings-element.md)
- [**\**](cryptonamemapping-element.md)
- **\**
-
-## Syntax
-
-```xml
+# `` Element
+
+Contains a list of cryptography classes that have a mapping to a friendly name in the [\](nameentry-element.md) element.
+
+[**\**](../configuration-element.md)
+ [**\**](mscorlib-element-for-cryptography-settings.md)
+ [**\**](cryptographysettings-element.md)
+ [**\**](cryptonamemapping-element.md)
+ **\**
+
+## Syntax
+
+```xml
-
-```
-
-## Attributes and Elements
-
- The following sections describe attributes, child elements, and parent elements.
-
-### Attributes
-
- None.
-
-### Child Elements
-
-|Element|Description|
-|-------------|-----------------|
-|[\](cryptoclass-element.md)|Contains a cryptography class that has a mapping to a friendly name in the **\** element.|
-
-### Parent Elements
-
-|Element|Description|
-|-------------|-----------------|
-|`configuration`|The root element in every configuration file used by the common language runtime and .NET Framework applications.|
-|`cryptographySettings`|Contains cryptography settings.|
-|`cryptoNameMapping`|Contains mappings of classes to friendly names.|
-|`mscorlib`|Contains the `cryptographySettings` element.|
-
-## Example
-
- The following example shows how use the **\** element to reference a cryptography class and to configure the runtime. You can then pass the string "RSA" to the method and use the method to return a `MyCryptoRSAClass` object.
-
-```xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
+
+```
+
+## Attributes and Elements
+
+ The following sections describe attributes, child elements, and parent elements.
+
+### Attributes
+
+ None.
+
+### Child Elements
+
+|Element|Description|
+|-------------|-----------------|
+|[\](cryptoclass-element.md)|Contains a cryptography class that has a mapping to a friendly name in the `` element.|
+
+### Parent Elements
+
+|Element|Description|
+|-------------|-----------------|
+|`configuration`|The root element in every configuration file used by the common language runtime and .NET Framework applications.|
+|`cryptographySettings`|Contains cryptography settings.|
+|`cryptoNameMapping`|Contains mappings of classes to friendly names.|
+|`mscorlib`|Contains the `cryptographySettings` element.|
+
+## Example
+
+ The following example shows how use the `` element to reference a cryptography class and to configure the runtime. You can then pass the string "RSA" to the method and use the method to return a `MyCryptoRSAClass` object.
+
+```xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
## See also
-
diff --git a/docs/framework/configure-apps/file-schema/cryptography/cryptographysettings-element.md b/docs/framework/configure-apps/file-schema/cryptography/cryptographysettings-element.md
index fc7fdfc95a8b2..c82bd46a05212 100644
--- a/docs/framework/configure-apps/file-schema/cryptography/cryptographysettings-element.md
+++ b/docs/framework/configure-apps/file-schema/cryptography/cryptographysettings-element.md
@@ -2,79 +2,79 @@
description: "Learn more about: Element"
title: " Element"
ms.date: "03/30/2017"
-f1_keywords:
+f1_keywords:
- "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/mscorlib/cryptographySettings"
- "http://schemas.microsoft.com/.NetConfiguration/v2.0#cryptographySettings"
-helpviewer_keywords:
+helpviewer_keywords:
- "cryptographySettings element"
- " element"
ms.assetid: 6201b7da-bcb7-49f7-b9f5-ba1fe05573b9
---
-# \ Element
+# `` Element
-Contains cryptography settings.
+Contains cryptography settings.
[**\**](../configuration-element.md)\
[**\**](mscorlib-element-for-cryptography-settings.md)\
**\**
-## Syntax
-
-```xml
+## Syntax
+
+```xml
+
+
+```
+
+## Attributes and Elements
+
+ The following sections describe attributes, child elements, and parent elements.
+
+### Attributes
+
+ None.
+
+### Child Elements
+
+|Element|Description|
+|-------------|-----------------|
+|[\](cryptonamemapping-element.md)|Contains mappings of classes to friendly names.|
+|[\](oidmap-element.md)|Contains ASN.1 object identifier (OID) mappings to classes.|
+
+### Parent Elements
+
+|Element|Description|
+|-------------|-----------------|
+|`configuration`|The root element in every configuration file used by the common language runtime and .NET Framework applications.|
+|`mscorlib`|Contains the `cryptographySettings` element.|
+
+## Example
+
+ The following example shows how use the `` element to contain cryptography name mappings and OID mappings. This example configures the runtime so that returns a `MyHashClass` object and the `MyCryptoClass` class maps to the object identifier 1.3.36.2.1.
+
+```xml
+
+
-
-```
-
-## Attributes and Elements
-
- The following sections describe attributes, child elements, and parent elements.
-
-### Attributes
-
- None.
-
-### Child Elements
-
-|Element|Description|
-|-------------|-----------------|
-|[\](cryptonamemapping-element.md)|Contains mappings of classes to friendly names.|
-|[\](oidmap-element.md)|Contains ASN.1 object identifier (OID) mappings to classes.|
-
-### Parent Elements
-
-|Element|Description|
-|-------------|-----------------|
-|`configuration`|The root element in every configuration file used by the common language runtime and .NET Framework applications.|
-|`mscorlib`|Contains the `cryptographySettings` element.|
-
-## Example
-
- The following example shows how use the **\** element to contain cryptography name mappings and OID mappings. This example configures the runtime so that returns a `MyHashClass` object and the `MyCryptoClass` class maps to the object identifier 1.3.36.2.1.
-
-```xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
## See also
- [Configuration File Schema](../index.md)
diff --git a/docs/framework/configure-apps/file-schema/cryptography/cryptonamemapping-element.md b/docs/framework/configure-apps/file-schema/cryptography/cryptonamemapping-element.md
index 3eb23c8aabad4..c359d3eea65f0 100644
--- a/docs/framework/configure-apps/file-schema/cryptography/cryptonamemapping-element.md
+++ b/docs/framework/configure-apps/file-schema/cryptography/cryptonamemapping-element.md
@@ -2,77 +2,77 @@
description: "Learn more about: Element"
title: " Element"
ms.date: "03/30/2017"
-f1_keywords:
+f1_keywords:
- "http://schemas.microsoft.com/.NetConfiguration/v2.0#cryptoNameMapping"
- "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/mscorlib/cryptographySettings/cryptoNameMapping"
-helpviewer_keywords:
+helpviewer_keywords:
- " element"
- "cryptoNameMapping element"
ms.assetid: c59c9494-149b-4ce6-b38d-371f896ae85c
---
-# \ Element
+# `` Element
-Contains mappings of classes to friendly names.
+Contains mappings of classes to friendly names.
[**\**](../configuration-element.md)\
[**\**](mscorlib-element-for-cryptography-settings.md)\
[**\**](cryptographysettings-element.md)\
**\**
-## Syntax
-
-```xml
+## Syntax
+
+```xml
-
-```
-
-## Attributes and Elements
-
- The following sections describe attributes, child elements, and parent elements.
-
-### Attributes
-
- None.
-
-### Child Elements
-
-|Element|Description|
-|-------------|-----------------|
-|`cryptoClasses`|Contains a list of cryptography classes that have a mapping to a friendly name in the **\** element.|
-|`nameEntry`|Maps a class name to a friendly algorithm name, which allows one class to have many friendly names.|
-
-### Parent Elements
-
-|Element|Description|
-|-------------|-----------------|
-|`configuration`|The root element in every configuration file used by the common language runtime and .NET Framework applications.|
-|`cryptographySettings`|Contains cryptography settings.|
-|`cryptoNameMapping`|Contains mappings of classes to friendly names.|
-|`mscorlib`|Contains the \ element.|
-
-## Example
-
- The following example shows how to use the **\** element to reference a cryptography class and to configure the runtime. You can then pass the string "RSA" to the method and use the method to return a `MyCryptoRSAClass` object.
-
-```xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
+
+```
+
+## Attributes and Elements
+
+ The following sections describe attributes, child elements, and parent elements.
+
+### Attributes
+
+ None.
+
+### Child Elements
+
+|Element|Description|
+|-------------|-----------------|
+|`cryptoClasses`|Contains a list of cryptography classes that have a mapping to a friendly name in the `` element.|
+|`nameEntry`|Maps a class name to a friendly algorithm name, which allows one class to have many friendly names.|
+
+### Parent Elements
+
+|Element|Description|
+|-------------|-----------------|
+|`configuration`|The root element in every configuration file used by the common language runtime and .NET Framework applications.|
+|`cryptographySettings`|Contains cryptography settings.|
+|`cryptoNameMapping`|Contains mappings of classes to friendly names.|
+|`mscorlib`|Contains the `` element.|
+
+## Example
+
+ The following example shows how to use the `` element to reference a cryptography class and to configure the runtime. You can then pass the string "RSA" to the method and use the method to return a `MyCryptoRSAClass` object.
+
+```xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
## See also
- [Configuration File Schema](../index.md)
diff --git a/docs/framework/configure-apps/file-schema/cryptography/index.md b/docs/framework/configure-apps/file-schema/cryptography/index.md
index 7a125eac3d22a..7730fc8667b7d 100644
--- a/docs/framework/configure-apps/file-schema/cryptography/index.md
+++ b/docs/framework/configure-apps/file-schema/cryptography/index.md
@@ -2,7 +2,7 @@
description: "Learn more about: Cryptography Settings Schema"
title: "Cryptography Settings Schema"
ms.date: "03/30/2017"
-helpviewer_keywords:
+helpviewer_keywords:
- "configuration schema [.NET Framework], cryptography"
- "elements [.NET Framework], cryptography"
- "schema configuration settings"
@@ -14,8 +14,8 @@ ms.assetid: 1f55050a-b2a3-4868-a3c0-da20826150f3
---
# Cryptography Settings Schema
-The cryptography settings schema contains elements that specify how to map friendly algorithm names to classes that implement cryptography algorithms.
-
+The cryptography settings schema contains elements that specify how to map friendly algorithm names to classes that implement cryptography algorithms.
+
[**\**](../configuration-element.md)\
[**\**](mscorlib-element-for-cryptography-settings.md)\
[**\**](cryptographysettings-element.md)\
@@ -26,17 +26,17 @@ The cryptography settings schema contains elements that specify how to map frien
[**\**](oidmap-element.md)\
[**\**](oidentry-element.md)
-|Element|Description|
-|-------------|-----------------|
-|[**\](cryptoclasses-element.md)|Contains a list of cryptography classes that have a mapping to a friendly name in the **\** element.|
-|[**\](cryptoclass-element.md)|Contains a cryptography class that has a mapping to a friendly name in the **\** element.|
-|[**\](cryptographysettings-element.md)|Contains cryptography settings.|
-|[**\](cryptonamemapping-element.md)|Contains mappings of classes to friendly names.|
-|[**\** element for cryptography settings](mscorlib-element-for-cryptography-settings.md)|Contains the **\** element.|
-|[**\**](nameentry-element.md)|Maps a class name to a friendly algorithm name, which allows one class to have many friendly names.|
-|[**\**](oidentry-element.md)|Maps an ASN.1 object identifier (OID) to a friendly name.|
-|[**\**](oidmap-element.md)|Contains ASN.1 OID mappings to classes.|
-
+|Element|Description|
+|-------------|-----------------|
+|[**\](cryptoclasses-element.md)|Contains a list of cryptography classes that have a mapping to a friendly name in the `` element.|
+|[**\](cryptoclass-element.md)|Contains a cryptography class that has a mapping to a friendly name in the `` element.|
+|[**\](cryptographysettings-element.md)|Contains cryptography settings.|
+|[**\](cryptonamemapping-element.md)|Contains mappings of classes to friendly names.|
+|[**\** element for cryptography settings](mscorlib-element-for-cryptography-settings.md)|Contains the `` element.|
+|[**\**](nameentry-element.md)|Maps a class name to a friendly algorithm name, which allows one class to have many friendly names.|
+|[**\**](oidentry-element.md)|Maps an ASN.1 object identifier (OID) to a friendly name.|
+|[**\**](oidmap-element.md)|Contains ASN.1 OID mappings to classes.|
+
## See also
- [Configuration File Schema](../index.md)
diff --git a/docs/framework/configure-apps/file-schema/cryptography/mscorlib-element-for-cryptography-settings.md b/docs/framework/configure-apps/file-schema/cryptography/mscorlib-element-for-cryptography-settings.md
index 5a15a6e48544c..4263450605859 100644
--- a/docs/framework/configure-apps/file-schema/cryptography/mscorlib-element-for-cryptography-settings.md
+++ b/docs/framework/configure-apps/file-schema/cryptography/mscorlib-element-for-cryptography-settings.md
@@ -2,71 +2,71 @@
description: "Learn more about: Element for Cryptography Settings"
title: " Element for Cryptography Settings"
ms.date: "03/30/2017"
-f1_keywords:
+f1_keywords:
- "http://schemas.microsoft.com/.NetConfiguration/v2.0#mscorlib"
- "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/mscorlib"
-helpviewer_keywords:
+helpviewer_keywords:
- "mscorlib element"
- " element"
ms.assetid: d549668f-31f1-4b92-8021-a9135c09ca3c
---
-# \ Element for Cryptography Settings
-
-Contains the [\ element](cryptographysettings-element.md).
-
-[**\**](../configuration-element.md)
- **\**
-
-## Syntax
-
-```xml
+# `` Element for Cryptography Settings
+
+Contains the [`` element](cryptographysettings-element.md).
+
+[**\**](../configuration-element.md)
+ **\**
+
+## Syntax
+
+```xml
-
-```
-
-## Attributes and Elements
-
- The following sections describe attributes, child elements, and parent elements.
-
-### Attributes
-
- None.
-
-### Child Elements
-
-|Element|Description|
-|-------------|-----------------|
-|`cryptographySettings`|Contains cryptography settings.|
-
-### Parent Elements
-
-|Element|Description|
-|-------------|-----------------|
-|`configuration`|The root element in every configuration file used by the common language runtime and .NET Framework applications.|
-
-## Example
-
- The following example shows how to use the **\** element to reference a cryptography class and to configure the runtime. You can then pass the string "RSA" to the method and use the method to return a `MyCryptoRSAClass` object.
-
-```xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
+
+```
+
+## Attributes and Elements
+
+ The following sections describe attributes, child elements, and parent elements.
+
+### Attributes
+
+ None.
+
+### Child Elements
+
+|Element|Description|
+|-------------|-----------------|
+|`cryptographySettings`|Contains cryptography settings.|
+
+### Parent Elements
+
+|Element|Description|
+|-------------|-----------------|
+|`configuration`|The root element in every configuration file used by the common language runtime and .NET Framework applications.|
+
+## Example
+
+ The following example shows how to use the `` element to reference a cryptography class and to configure the runtime. You can then pass the string "RSA" to the method and use the method to return a `MyCryptoRSAClass` object.
+
+```xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
## See also
-
diff --git a/docs/framework/configure-apps/file-schema/cryptography/nameentry-element.md b/docs/framework/configure-apps/file-schema/cryptography/nameentry-element.md
index d55790338fdc5..e7a9049805138 100644
--- a/docs/framework/configure-apps/file-schema/cryptography/nameentry-element.md
+++ b/docs/framework/configure-apps/file-schema/cryptography/nameentry-element.md
@@ -2,79 +2,79 @@
description: "Learn more about: Element"
title: " Element"
ms.date: "03/30/2017"
-f1_keywords:
+f1_keywords:
- "http://schemas.microsoft.com/.NetConfiguration/v2.0#nameEntry"
- "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/mscorlib/cryptographySettings/cryptoNameMapping/nameEntry"
-helpviewer_keywords:
+helpviewer_keywords:
- " element"
- "nameEntry element"
ms.assetid: 7d7535e9-4b4a-4b8c-82e2-e40dff5a7821
---
-# \ Element
-
-Maps a class name to a friendly algorithm name, which allows one class to have many friendly names.
-
-[**\**](../configuration-element.md)
- [**\**](mscorlib-element-for-cryptography-settings.md)
- [**\**](cryptographysettings-element.md)
- [**\**](cryptonamemapping-element.md)
- **\**
-
-## Syntax
-
-```xml
-
-```
-
-## Attributes and Elements
-
- The following sections describe attributes, child elements, and parent elements.
-
-### Attributes
-
-|Attribute|Description|
-|---------------|-----------------|
-|**name**|Required attribute.
Specifies the friendly name of the algorithm that the cryptography class implements.|
-|**class**|Required attribute.
Specifies the value for the **name** attribute in the [\](cryptoclass-element.md) element.|
-
-### Child Elements
-
- None.
-
-### Parent Elements
-
-|Element|Description|
-|-------------|-----------------|
-|`configuration`|The root element in every configuration file used by the common language runtime and .NET Framework applications.|
-|`system.web`|Specifies the root element for the ASP.NET configuration section.|
-
-## Remarks
-
- The **name** attribute can be the name of one of the abstract classes found in the namespace. When you call the **Create** method on an abstract cryptography class, the abstract class name is passed to the method. **CreateFromName** returns an instance of the type indicated by the **class** attribute. If the **name** attribute is a short name, such as RSA, you can use that name when calling the **CreateFromName** method.
-
-## Example
-
- The following example shows how to use the **\** element to reference a cryptography class and to configure the runtime. You can then pass the string "RSA" to the method and use the method to return a `MyCryptoRSAClass` object.
-
-```xml
-
-
-
-