diff --git a/.github/workflows/cleanrepo-orphaned-articles.yml b/.github/workflows/cleanrepo-orphaned-articles.yml
index 5660cbf3b0407..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: dotnet/actions-create-pull-request@v4
+ uses: peter-evans/create-pull-request@v7
with:
branch: cleanrepo-orphaned-articles
title: "Monthly chores: Delete orphaned articles"
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."
diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md
index 306ebf3a083c7..6f5ff3c96eaf1 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.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/) |
@@ -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/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/) |
@@ -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..a1ba3a3eb6ed6 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.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/) |
@@ -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/) |
diff --git a/docs/core/compatibility/serialization/7.0/binaryformatter-apis-produce-errors.md b/docs/core/compatibility/serialization/7.0/binaryformatter-apis-produce-errors.md
index c5a6d84451bae..7e6f23ef3d374 100644
--- a/docs/core/compatibility/serialization/7.0/binaryformatter-apis-produce-errors.md
+++ b/docs/core/compatibility/serialization/7.0/binaryformatter-apis-produce-errors.md
@@ -49,7 +49,7 @@ The best course of action is to migrate away from `BinaryFormatter` due to its s
If you must suppress the errors, you can do so by following the guidelines in the [original obsoletion article](../5.0/binaryformatter-serialization-obsolete.md#recommended-action). You can also disable the error project-wide by setting a project property that converts the error back to a warning (to match the .NET 5/6 behavior).
> [!WARNING]
-> Setting this property might change host behavior. See [\ property](#enableunsafebinaryformatterserialization-property).
+> Setting this property might change host behavior. See [`` property](#enableunsafebinaryformatterserialization-property).
```csharp
@@ -61,7 +61,7 @@ If you must suppress the errors, you can do so by following the guidelines in th
> [!NOTE]
> If your project compiles with "warnings as errors" enabled, compilation will still fail. (This matches the behavior that shipped in the .NET 5 and .NET 6 SDKs.) If that's the case, you'll still need to suppress the `SYSLIB0011` warning in source or in your project file's `` element.
-### \ property
+### `` property
The `** tag.
+An alternative to specifying target manifests with the [`dotnet publish`](../tools/dotnet-publish.md) command is to specify them in the project file as a semicolon-separated list of paths under a `` tag.
```xml
@@ -126,7 +126,7 @@ For .NET Core 2.0, the runtime package store feature is used implicitly by an AS
The runtime package store is installed on the host when the .NET SDK is installed. Other installers may provide the runtime package store, including Zip/tarball installations of the .NET SDK, `apt-get`, Red Hat Yum, the .NET Core Windows Server Hosting bundle, and manual runtime package store installations.
-When deploying a [framework-dependent deployment](index.md#framework-dependent-deployment) app, make sure that the target environment has the .NET SDK installed. If the app is deployed to an environment that doesn't include ASP.NET Core, you can opt out of the implicit store by specifying **\** set to `false` in the project file as in the following example:
+When deploying a [framework-dependent deployment](index.md#framework-dependent-deployment) app, make sure that the target environment has the .NET SDK installed. If the app is deployed to an environment that doesn't include ASP.NET Core, you can opt out of the implicit store by specifying `` set to `false` in the project file as in the following example:
```xml
@@ -135,7 +135,7 @@ When deploying a [framework-dependent deployment](index.md#framework-dependent-d
```
> [!NOTE]
-> For [self-contained deployment](index.md#self-contained-deployment) apps, it's assumed that the target system doesn't necessarily contain the required manifest packages. Therefore, **\** cannot be set to `true` for an self-contained app.
+> For [self-contained deployment](index.md#self-contained-deployment) apps, it's assumed that the target system doesn't necessarily contain the required manifest packages. Therefore, `` cannot be set to `true` for an self-contained app.
## See also
diff --git a/docs/core/extensions/best-practices-for-developing-world-ready-apps.md b/docs/core/extensions/best-practices-for-developing-world-ready-apps.md
index 3123691ed1ff7..ef9988e8c963b 100644
--- a/docs/core/extensions/best-practices-for-developing-world-ready-apps.md
+++ b/docs/core/extensions/best-practices-for-developing-world-ready-apps.md
@@ -88,7 +88,7 @@ This section describes the best practices to follow when developing world-ready
1. Specify the values for the `requestEncoding`, `responseEncoding`, `fileEncoding`, `culture`, and `uiCulture` attributes in the following three places in an ASP.NET application:
- - In the globalization section of a _Web.config_ file. This file is external to the ASP.NET application. For more information, see [\ element](/previous-versions/dotnet/netframework-4.0/hy4kkhe0(v=vs.100)).
+ - In the globalization section of a _Web.config_ file. This file is external to the ASP.NET application. For more information, see [`` element](/previous-versions/dotnet/netframework-4.0/hy4kkhe0(v=vs.100)).
- In a page directive. Note that, when an application is in a page, the file has already been read. Therefore, it is too late to specify fileEncoding and requestEncoding. Only `uiCulture`, `culture`, and `responseEncoding` can be specified in a page directive.
- Programmatically in application code. This setting can vary per request. As with a page directive, by the time the application's code is reached, it is too late to specify `fileEncoding` and `requestEncoding`. Only `uiCulture`, `culture`, and `responseEncoding` can be specified in the application code.
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).
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
diff --git a/docs/core/tools/dependencies.md b/docs/core/tools/dependencies.md
index ef89001b70290..aebb8f40383cd 100644
--- a/docs/core/tools/dependencies.md
+++ b/docs/core/tools/dependencies.md
@@ -9,7 +9,7 @@ ms.date: 01/28/2021
This article explains how to add and remove package dependencies by editing the project file or by using the CLI.
-## The \ element
+## The `` element
The `` project file element has the following structure:
diff --git a/docs/core/tools/dotnet-test.md b/docs/core/tools/dotnet-test.md
index 7ca8c9ffe3e6e..afc075defa5e5 100644
--- a/docs/core/tools/dotnet-test.md
+++ b/docs/core/tools/dotnet-test.md
@@ -490,7 +490,7 @@ With Microsoft Testing Platform, `dotnet test` operates faster than with VSTest.
- **`--max-parallel-test-modules `**
- Specifies the maximum number of test modules that can run in parallel.
+ Specifies the maximum number of test modules that can run in parallel. The default is .
- [!INCLUDE [arch](../../../includes/cli-arch.md)]
diff --git a/docs/core/tutorials/library-with-visual-studio-code.md b/docs/core/tutorials/library-with-visual-studio-code.md
index 8a33d0def7113..27956ba613de4 100644
--- a/docs/core/tutorials/library-with-visual-studio-code.md
+++ b/docs/core/tutorials/library-with-visual-studio-code.md
@@ -33,7 +33,7 @@ Start by creating a .NET class library project named "StringLibrary" and an asso
1. Name the project **StringLibrary** and select **Create Project**.
-1. Press Enter at the prompt **Project will be created in \**.
+1. Press Enter at the prompt **Project will be created in \**.
1. Check to make sure that the library targets .NET 9. In **Explorer**, open *StringLibrary/StringLibrary.csproj*.
diff --git a/docs/core/unmanaged-api/debugging/icordebug/icordebugprocess6-enablevirtualmodulesplitting-method.md b/docs/core/unmanaged-api/debugging/icordebug/icordebugprocess6-enablevirtualmodulesplitting-method.md
index cb56952e6ecee..be749ba2748d8 100644
--- a/docs/core/unmanaged-api/debugging/icordebug/icordebugprocess6-enablevirtualmodulesplitting-method.md
+++ b/docs/core/unmanaged-api/debugging/icordebug/icordebugprocess6-enablevirtualmodulesplitting-method.md
@@ -42,11 +42,11 @@ The modules found in a container.
regular modules
Modules that were not merged at build time. They are neither container modules nor sub-modules.
-Both container modules and sub-modules are represented by ICorDebugModule interface objects. However, the behavior of the interface is slightly different in each case, as the \ section describes.
+Both container modules and sub-modules are represented by `ICorDebugModule` interface objects. However, the behavior of the interface is slightly different in each case.
## Modules and assemblies
-Multi-module assemblies are not supported for assembly merging scenarios, so there is a one-to-one relationship between a module and an assembly. Each ICorDebugModule object, regardless of whether it represents a container module or a sub-module, has a corresponding ICorDebugAssembly object. The [ICorDebugModule::GetAssembly](icordebugmodule-getassembly-method.md) method converts from the module to the assembly. To map in the other direction, the [ICorDebugAssembly::EnumerateModules](icordebugassembly-enumeratemodules-method.md) method enumerates only 1 module. Because assembly and module form a tightly coupled pair in this case, the terms assembly and module become largely interchangeable.
+Multi-module assemblies are not supported for assembly merging scenarios, so there is a one-to-one relationship between a module and an assembly. Each `ICorDebugModule` object, regardless of whether it represents a container module or a sub-module, has a corresponding ICorDebugAssembly object. The [ICorDebugModule::GetAssembly](icordebugmodule-getassembly-method.md) method converts from the module to the assembly. To map in the other direction, the [ICorDebugAssembly::EnumerateModules](icordebugassembly-enumeratemodules-method.md) method enumerates only 1 module. Because assembly and module form a tightly coupled pair in this case, the terms assembly and module become largely interchangeable.
## Behavioral differences
@@ -102,7 +102,7 @@ The following table shows how virtual module splitting affects the behavior of o
|[ICorDebugClass::GetModule](icordebugclass-getmodule-method.md)|Returns the sub-module this class was originally defined in.|Returns the container module this class was merged into.|
|ICorDebugModuleDebugEvent::GetModule|Returns the container module that was loaded. Sub-modules are not given load events regardless of this setting.|Returns the container module that was loaded.|
|[ICorDebugAppDomain::EnumerateAssemblies](icordebugappdomain-enumerateassemblies-method.md)|Returns a list of sub-assemblies and regular assemblies; no container assemblies are included. **Note:** If any container assembly is missing symbols, none of its sub-assemblies will be enumerated. If any regular assembly is missing symbols, it may or may not be enumerated.|Returns a list of container assemblies and regular assemblies; no sub-assemblies are included. **Note:** If any regular assembly is missing symbols, it may or may not be enumerated.|
-|[ICorDebugCode::GetCode](icordebugcode-getcode-method.md) (when referring to IL code only)|Returns IL that would be valid in a pre-merge assembly image. Specifically, any inline metadata tokens will correctly be TypeRef or MemberRef tokens when the types being referred to are not defined in the virtual module containing the IL. These TypeRef or MemberRef tokens can be looked up in the [IMetaDataImport](../../metadata/interfaces/imetadataimport-interface.md) object for the corresponding virtual ICorDebugModule object.|Returns the IL in the post-merge assembly image.|
+|[ICorDebugCode::GetCode](icordebugcode-getcode-method.md) (when referring to IL code only)|Returns IL that would be valid in a pre-merge assembly image. Specifically, any inline metadata tokens will correctly be TypeRef or MemberRef tokens when the types being referred to are not defined in the virtual module containing the IL. These TypeRef or MemberRef tokens can be looked up in the [IMetaDataImport](../../metadata/interfaces/imetadataimport-interface.md) object for the corresponding virtual `ICorDebugModule` object.|Returns the IL in the post-merge assembly image.|
## Requirements
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)
diff --git a/docs/csharp/language-reference/compiler-messages/cs1705.md b/docs/csharp/language-reference/compiler-messages/cs1705.md
index 08ecec77e32eb..087b8520b9359 100644
--- a/docs/csharp/language-reference/compiler-messages/cs1705.md
+++ b/docs/csharp/language-reference/compiler-messages/cs1705.md
@@ -2,141 +2,138 @@
description: "Compiler Error CS1705"
title: "Compiler Error CS1705"
ms.date: 07/20/2015
-f1_keywords:
+f1_keywords:
- "CS1705"
-helpviewer_keywords:
+helpviewer_keywords:
- "CS1705"
ms.assetid: 3612a542-0256-4fed-b020-41691ef5a052
---
# Compiler Error CS1705
-Assembly 'AssemblyName1' uses 'TypeName' which has a higher version than referenced assembly 'AssemblyName2'
-
- You are accessing a type that has a higher version number than the version number in a referenced assembly. Typically, this error is caused by the accidental use of two versions of the same assembly.
-
- For example, suppose that you have two assemblies, Asmb1 and Asmb2. Assembly Asmb1 references version 1.0 of assembly Asmb2. Assembly Asmb1 also uses a class `MyClass` that was added to assembly Asmb2 in version 2.0. The compiler has unification rules for binding references, and a reference to `MyClass` in version 2.0 cannot be satisfied by version 1.0.
-
-## Examples
-
- The following more detailed example consists of four code modules:
-
-- Two DLLs that are identical except for a version attribute.
-
-- A third DLL that references the first two.
-
-- A client that references only version 1.0 of the identical DLLs, but accesses a class from version 2.0.
-
- The following code creates the first of the identical DLLs. For information about how to generate a key file, see [**KeyFile** (C# Compiler Options)](../compiler-options/security.md#keyfile).
-
-```csharp
-// CS1705a.cs
-
+Assembly 'AssemblyName1' uses 'TypeName' which has a higher version than referenced assembly 'AssemblyName2'.
+
+ You are accessing a type that has a higher version number than the version number in a referenced assembly. Typically, this error is caused by the accidental use of two versions of the same assembly.
+
+ For example, suppose that you have two assemblies, Asmb1 and Asmb2. Assembly Asmb1 references version 1.0 of assembly Asmb2. Assembly Asmb1 also uses a class `MyClass` that was added to assembly Asmb2 in version 2.0. The compiler has unification rules for binding references, and a reference to `MyClass` in version 2.0 cannot be satisfied by version 1.0.
+
+## Examples
+
+ The following more detailed example consists of four code modules:
+
+- Two DLLs that are identical except for a version attribute.
+- A third DLL that references the first two.
+- A client that references only version 1.0 of the identical DLLs, but accesses a class from version 2.0.
+
+ The following code creates the first of the identical DLLs. For information about how to generate a key file, see [**KeyFile** (C# Compiler Options)](../compiler-options/security.md#keyfile).
+
+```csharp
+// CS1705a.cs
+
// Compile by using the following command:
-// csc /target:library /out:C:\\CS1705.dll /keyfile:mykey.snk CS1705a.cs
-
-// The DLL is created in the C:\ directory.
-
-// The AssemblyVersion attribute specifies version 1.0 for this DLL.
-
-[assembly:System.Reflection.AssemblyVersion("1.0")]
+// csc /target:library /out:C:\\CS1705.dll /keyfile:mykey.snk CS1705a.cs
+
+// The DLL is created in the C:\ directory.
+
+// The AssemblyVersion attribute specifies version 1.0 for this DLL.
+
+[assembly:System.Reflection.AssemblyVersion("1.0")]
public class Class1
-{
- public void Method1() {}
-}
-```
-
- The following code defines version 2.0 of the assembly, as specified by the attribute.
-
-```csharp
-// CS1705b.cs
-
+{
+ public void Method1() {}
+}
+```
+
+ The following code defines version 2.0 of the assembly, as specified by the attribute.
+
+```csharp
+// CS1705b.cs
+
// Compile by using the following command:
-// csc /target:library /out:CS1705.dll /keyfile:mykey.snk CS1705b.cs
-
-// The DLL is created in the current directory.
-
-// The AssemblyVersion attribute specifies version 2.0 for this DLL.
-
-[assembly:System.Reflection.AssemblyVersion("2.0")]
-public class Class1
-{
- public void Method1() { }
-}
-```
-
- The following code references the two DLL versions that are defined in the preceding code. `AssemblyA` refers to the DLL created by CS1705a.cs (version 1.0). `AssemblyB` refers to the DLL created by CS1705b.cs (version 2.0). In `ClassC`, two methods are defined. The first, `Return1A`, returns an object of type `Class1A`, which is an alias for `Class1` from version 1.0 of the DLL. The second, `Return1B`, returns an object of type `Class1B`, which is an alias for `Class1` from version 2.0 of the DLL. The definition of `Return1A` creates a dependency on version 1.0; the definition of `Return1B` creates a dependency on version 2.0.
-
-```csharp
-// CS1705c.cs
-
-// Compile by using the following command. AssemblyA refers to the DLL created by
-// CS1705a.cs (version 1.0). AssemblyB refers to the DLL created by CS1705b.cs
-// (version 2.0).
-// csc /target:library /r:AssemblyA=C:\\CS1705.dll /r:AssemblyB=CS1705.dll CS1705c.cs
-
-extern alias AssemblyA;
-extern alias AssemblyB;
-
+// csc /target:library /out:CS1705.dll /keyfile:mykey.snk CS1705b.cs
+
+// The DLL is created in the current directory.
+
+// The AssemblyVersion attribute specifies version 2.0 for this DLL.
+
+[assembly:System.Reflection.AssemblyVersion("2.0")]
+public class Class1
+{
+ public void Method1() { }
+}
+```
+
+ The following code references the two DLL versions that are defined in the preceding code. `AssemblyA` refers to the DLL created by CS1705a.cs (version 1.0). `AssemblyB` refers to the DLL created by CS1705b.cs (version 2.0). In `ClassC`, two methods are defined. The first, `Return1A`, returns an object of type `Class1A`, which is an alias for `Class1` from version 1.0 of the DLL. The second, `Return1B`, returns an object of type `Class1B`, which is an alias for `Class1` from version 2.0 of the DLL. The definition of `Return1A` creates a dependency on version 1.0; the definition of `Return1B` creates a dependency on version 2.0.
+
+```csharp
+// CS1705c.cs
+
+// Compile by using the following command. AssemblyA refers to the DLL created by
+// CS1705a.cs (version 1.0). AssemblyB refers to the DLL created by CS1705b.cs
+// (version 2.0).
+// csc /target:library /r:AssemblyA=C:\\CS1705.dll /r:AssemblyB=CS1705.dll CS1705c.cs
+
+extern alias AssemblyA;
+extern alias AssemblyB;
+
// Class1A is an alias for type Class1 from VS1705a.cs, which is in version 1.0
-// of the assembly. Class1B is an alias for type Class1 from CS1705b.cs, which
-// is in version 2.0 of the assembly.
-
-using Class1A = AssemblyA::Class1;
-using Class1B = AssemblyB::Class1;
-
-// Method Return1A in ClassC returns an object of type Class1A, which is
-// Class1 from version 1.0 of the DLL. Method Return1B returns an object
-// of type Class1B, which is Class1 from version 2.0 of the DLL.
-
-public class ClassC
-{
- // The following line creates a dependency on version 1.0 of CS1705.dll.
- // This is not the source of the problem when ClassC is accessed from
+// of the assembly. Class1B is an alias for type Class1 from CS1705b.cs, which
+// is in version 2.0 of the assembly.
+
+using Class1A = AssemblyA::Class1;
+using Class1B = AssemblyB::Class1;
+
+// Method Return1A in ClassC returns an object of type Class1A, which is
+// Class1 from version 1.0 of the DLL. Method Return1B returns an object
+// of type Class1B, which is Class1 from version 2.0 of the DLL.
+
+public class ClassC
+{
+ // The following line creates a dependency on version 1.0 of CS1705.dll.
+ // This is not the source of the problem when ClassC is accessed from
// CS1705d.cs because CS1705d.cs references version 1.0 of the DLL.
- // Therefore, type Class1A and the assembly have the same version.
- public static Class1A Return1A() { return new Class1A(); }
-
- // The following line creates a dependency on version 2.0 of CS1705.dll.
+ // Therefore, type Class1A and the assembly have the same version.
+ public static Class1A Return1A() { return new Class1A(); }
+
+ // The following line creates a dependency on version 2.0 of CS1705.dll.
// This causes compiler error CS1705 when ClassC is accessed from
// CS1705d.cs, because CS1705d.cs does not reference version 2.0 of the
// DLL. Class1B is the alias for Class1 in version 2.0, and CS1705d.cs
- // references version 1.0.
- public static Class1B Return1B() { return new Class1B(); }
-}
-```
-
- The following code generates compiler error CS1705. It references the DLL created by CS1705a.cs (version 1.0). However, in the `Main` method, the code accesses `ClassC` from CS1705c.cs. `ClassC` uses a type that is defined in CS1705b.cs (version 2.0). This causes compiler error CS1705 because the type has a version number for CS1705.dll that is higher than the referenced version of CS1705.dll.
-
-```csharp
-// CS1705d.cs
-
-// Compile by using the following command:
-// csc /reference:C:\\CS1705.dll /reference:CS1705c.dll CS1705d.cs
-
-// C:\\CS1705.dll is version 1.0 of the assembly.
-
+ // references version 1.0.
+ public static Class1B Return1B() { return new Class1B(); }
+}
+```
+
+ The following code generates compiler error CS1705. It references the DLL created by CS1705a.cs (version 1.0). However, in the `Main` method, the code accesses `ClassC` from CS1705c.cs. `ClassC` uses a type that is defined in CS1705b.cs (version 2.0). This causes compiler error CS1705 because the type has a version number for CS1705.dll that is higher than the referenced version of CS1705.dll.
+
+```csharp
+// CS1705d.cs
+
+// Compile by using the following command:
+// csc /reference:C:\\CS1705.dll /reference:CS1705c.dll CS1705d.cs
+
+// C:\\CS1705.dll is version 1.0 of the assembly.
+
class Tester
-{
- static void Main()
- {
- // Return1A returns a type defined in version 1.0.
- ClassC.Return1A().Method1();
- // Return1B returns a type defined in version 2.0.
- ClassC.Return1B().Method1();
- }
-}
-```
-
- You can resolve the error in one of the following ways:
-
-- Update the code so that all files use the same version of the DLL.
-
-- Add a reference to version 2.0 of the DLL to CS1705d.cs by using the following command to compile:
-
- `csc /reference:C:\\CS1705.dll /reference:CS1705.dll /reference:CS1705c.dll CS1705d.cs`
-
- Although the program compiles when you use this command, it still does not run. To enable the program to run, you can provide an application configuration file that includes a [\ element](../../../framework/configure-apps/file-schema/runtime/dependentassembly-element.md) that uses [\](../../../framework/configure-apps/file-schema/runtime/assemblyidentity-element-for-runtime.md) and [\](../../../framework/configure-apps/file-schema/runtime/codebase-element.md) child elements to specify the location of version 1.0 of the DLL. For more information about configuration files, see [Configuring Apps](../../../framework/configure-apps/index.md).
-
+{
+ static void Main()
+ {
+ // Return1A returns a type defined in version 1.0.
+ ClassC.Return1A().Method1();
+ // Return1B returns a type defined in version 2.0.
+ ClassC.Return1B().Method1();
+ }
+}
+```
+
+ You can resolve the error in one of the following ways:
+
+- Update the code so that all files use the same version of the DLL.
+- Add a reference to version 2.0 of the DLL to CS1705d.cs by using the following command to compile:
+
+ `csc /reference:C:\\CS1705.dll /reference:CS1705.dll /reference:CS1705c.dll CS1705d.cs`
+
+ Although the program compiles when you use this command, it still does not run. To enable the program to run, you can provide an application configuration file that includes a [`` element](../../../framework/configure-apps/file-schema/runtime/dependentassembly-element.md) that uses [``](../../../framework/configure-apps/file-schema/runtime/assemblyidentity-element-for-runtime.md) and [``](../../../framework/configure-apps/file-schema/runtime/codebase-element.md) child elements to specify the location of version 1.0 of the DLL. For more information about configuration files, see [Configuring Apps](../../../framework/configure-apps/index.md).
+
## See also
- [extern alias](../keywords/extern-alias.md)
diff --git a/docs/csharp/language-reference/compiler-options/index.md b/docs/csharp/language-reference/compiler-options/index.md
index 52001f1618464..8f323555e86ae 100644
--- a/docs/csharp/language-reference/compiler-options/index.md
+++ b/docs/csharp/language-reference/compiler-options/index.md
@@ -2,9 +2,9 @@
description: "C# Compiler Options. Learn the options that control the behavior of the C# compiler."
title: "Compiler Options"
ms.date: 09/01/2021
-f1_keywords:
+f1_keywords:
- "cs.build.options"
-helpviewer_keywords:
+helpviewer_keywords:
- "compiler options [C#]"
- "csc.exe"
- "cl.exe compiler, C# options"
@@ -54,7 +54,7 @@ The word for some compiler options changed from *csc.exe* and .NET Framework pro
You can invoke the C# compiler by typing the name of its executable file (*csc.exe*) at a command prompt.
-For .NET Framework projects, you can also run *csc.exe* from the command line. Every compiler option is available in two forms: **-option** and **/option**. In .NET Framework web projects, you specify options for compiling code-behind in the *web.config* file. For more information, see [\ Element](../../../framework/configure-apps/file-schema/compiler/compiler-element.md).
+For .NET Framework projects, you can also run *csc.exe* from the command line. Every compiler option is available in two forms: **-option** and **/option**. In .NET Framework web projects, you specify options for compiling code-behind in the *web.config* file. For more information, see [`` Element](../../../framework/configure-apps/file-schema/compiler/compiler-element.md).
If you use the **Developer Command Prompt for Visual Studio** window, all the necessary environment variables are set for you. For information on how to access this tool, see [Developer Command Prompt for Visual Studio](/visualstudio/ide/reference/command-prompt-powershell).
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
diff --git a/docs/csharp/language-reference/xmldoc/recommended-tags.md b/docs/csharp/language-reference/xmldoc/recommended-tags.md
index 4c8659e90178b..0111e873bb450 100644
--- a/docs/csharp/language-reference/xmldoc/recommended-tags.md
+++ b/docs/csharp/language-reference/xmldoc/recommended-tags.md
@@ -166,15 +166,15 @@ If you want angle brackets to appear in the text of a documentation comment, use
## General tags
-### \
+### ``
```xml
description
```
-The `` tag should be used to describe a type or a type member. Use [\](#remarks) to add supplemental information to a type description. Use the [cref attribute](#cref-attribute) to enable documentation tools such as [DocFX](https://dotnet.github.io/docfx/) and [Sandcastle](https://github.com/EWSoftware/SHFB) to create internal hyperlinks to documentation pages for code elements. The text for the `` tag is displayed in IntelliSense and in the Object Browser window.
+The `` tag should be used to describe a type or a type member. Use [``](#remarks) to add supplemental information to a type description. Use the [cref attribute](#cref-attribute) to enable documentation tools such as [DocFX](https://dotnet.github.io/docfx/) and [Sandcastle](https://github.com/EWSoftware/SHFB) to create internal hyperlinks to documentation pages for code elements. The text for the `` tag is displayed in IntelliSense and in the Object Browser window.
-### \
+### ``
```xml
@@ -182,11 +182,11 @@ description
```
-The `` tag is used to add information about a type or a type member, supplementing the information specified with [\](#summary). This information is displayed in the Object Browser window. This tag can include more lengthy explanations. You might find that using `CDATA` sections for markdown make writing it more convenient. Tools such as [docfx](https://dotnet.github.io/docfx/) process the markdown text in `CDATA` sections.
+The `` tag is used to add information about a type or a type member, supplementing the information specified with [``](#summary). This information is displayed in the Object Browser window. This tag can include more lengthy explanations. You might find that using `CDATA` sections for markdown make writing it more convenient. Tools such as [docfx](https://dotnet.github.io/docfx/) process the markdown text in `CDATA` sections.
## Document members
-### \
+### ``
```xml
description
@@ -194,7 +194,7 @@ The `` tag is used to add information about a type or a type member, su
The `` tag should be used in the comment for a method declaration to describe the return value.
-### \
+### ``
```xml
description
@@ -204,7 +204,7 @@ The `` tag should be used in the comment for a method declaration to de
The `` tag should be used in the comment for a method declaration to describe one of the parameters for the method. To document multiple parameters, use multiple `` tags. The text for the `` tag is displayed in IntelliSense, the Object Browser, and the Code Comment Web Report.
-### \
+### ``
```xml
@@ -214,7 +214,7 @@ The `` tag should be used in the comment for a method declaration to desc
The `` tag gives you a way to indicate that a word in the code comments, for example in a `` or `` block refers to a parameter. The XML file can be processed to format this word in some distinct way, such as with a bold or italic font.
-### \
+### ``
```xml
description
@@ -224,17 +224,17 @@ The `` tag gives you a way to indicate that a word in the code comment
The `` tag lets you specify which exceptions can be thrown. This tag can be applied to definitions for methods, properties, events, and indexers.
-### \
+### ``
```xml
property-description
```
-The `` tag lets you describe the value that a property represents. When you add a property via code wizard in the Visual Studio .NET development environment, it adds a [\](#summary) tag for the new property. You manually add a `` tag to describe the value that the property represents.
+The `` tag lets you describe the value that a property represents. When you add a property via code wizard in the Visual Studio .NET development environment, it adds a [``](#summary) tag for the new property. You manually add a `` tag to describe the value that the property represents.
## Format documentation output
-### \
+### ``
```xml
@@ -247,13 +247,13 @@ The `` tag lets you describe the value that a property represents. When y
```
-The `` tag is for use inside a tag, such as [\](#summary), [\](#remarks), or [\](#returns), and lets you add structure to the text. The `` tag creates a double spaced paragraph. Use the `
` tag if you want a single spaced paragraph.
+The `` tag is for use inside a tag, such as [``](#summary), [``](#remarks), or [``](#returns), and lets you add structure to the text. The `` tag creates a double spaced paragraph. Use the `
` tag if you want a single spaced paragraph.
Here's an example showing the difference between `` and `
`:
:::code language="csharp" source="./snippets/xmldoc/HrefAndBrExamples.cs" id="FormattingExample":::
-### \
+### ``
```xml
@@ -282,15 +282,15 @@ When creating a definition list:
A list or table can have as many `- ` blocks as needed.
-### \
+### ``
```xml
text
```
-The `` tag gives you a way to indicate that text within a description should be marked as code. Use [\
](#code) to indicate multiple lines as code.
+The `` tag gives you a way to indicate that text within a description should be marked as code. Use [``](#code) to indicate multiple lines as code.
-### \
+### ``
```xml
@@ -299,9 +299,9 @@ The `` tag gives you a way to indicate that text within a description should
```
-The `` tag is used to indicate multiple lines of code. Use [\](#c) to indicate that single-line text within a description should be marked as code.
+The `` tag is used to indicate multiple lines of code. Use [``](#c) to indicate that single-line text within a description should be marked as code.
-### \
+### ``
```xml
@@ -313,9 +313,9 @@ This shows how to increment an integer.
```
-The `` tag lets you specify an example of how to use a method or other library member. An example commonly involves using the [\](#code) tag.
+The `` tag lets you specify an example of how to use a method or other library member. An example commonly involves using the [``](#code) tag.
-### \
+### ``
```xml
text
@@ -323,7 +323,7 @@ The `` tag lets you specify an example of how to use a method or other
The `` tag is used to make text bold within documentation comments. This HTML formatting tag is validated by the compiler and Visual Studio, and the formatted text appears in IntelliSense and generated documentation.
-### \
+### ``
```xml
text
@@ -331,7 +331,7 @@ The `` tag is used to make text bold within documentation comments. This HTML
The `` tag is used to make text italic within documentation comments. This HTML formatting tag is validated by the compiler and Visual Studio, and the formatted text appears in IntelliSense and generated documentation.
-### \
+### ``
```xml
text
@@ -339,7 +339,7 @@ The `` tag is used to make text italic within documentation comments. This HT
The `` tag is used to underline text within documentation comments. This HTML formatting tag is validated by the compiler and Visual Studio, and the formatted text appears in IntelliSense and generated documentation.
-### \
+### `
`
```xml
Line one
Line two
@@ -347,7 +347,7 @@ Line one
Line two
The `
` tag is used to insert a line break within documentation comments. Use this tag when you want a single spaced paragraph, as opposed to the `` tag which creates double spaced paragraphs.
-### \
+### ``
```xml
Link text
@@ -360,7 +360,7 @@ The `` tag is used to create hyperlinks within documentation comments. The `h
## Reuse documentation text
-### \
+### ``
```xml
@@ -378,7 +378,7 @@ Inherit XML comments from base classes, interfaces, and similar methods. Using `
Add your XML comments in base classes or interfaces and let inheritdoc copy the comments to implementing classes. Add your XML comments to your synchronous methods and let inheritdoc copy the comments to your asynchronous versions of the same methods. If you want to copy the comments from a specific member, you use the `cref` attribute to specify the member.
-### \
+### ``
```xml
@@ -415,7 +415,7 @@ The XML output for this method is shown in the following example:
## Generate links and references
-### \
+### ``
```xml
@@ -431,13 +431,13 @@ The XML output for this method is shown in the following example:
- `href="link"`: A clickable link to a given URL. For example, `GitHub` produces a clickable link with text :::no-loc text="GitHub"::: that links to `https://github.com`. Use `href` instead of `cref` when linking to external web pages, as `cref` is designed for code references and won't create clickable links for external URLs.
- `langword="keyword"`: A language keyword, such as `true` or one of the other valid [keywords](../keywords/index.md).
-The `` tag lets you specify a link from within text. Use [\](#seealso) to indicate that text should be placed in a See Also section. Use the [cref attribute](#cref-attribute) to create internal hyperlinks to documentation pages for code elements. You include the type parameters to specify a reference to a generic type or method, such as `cref="IDictionary{T, U}"`. Also, ``href`` is a valid attribute that functions as a hyperlink.
+The `` tag lets you specify a link from within text. Use [``](#seealso) to indicate that text should be placed in a See Also section. Use the [cref attribute](#cref-attribute) to create internal hyperlinks to documentation pages for code elements. You include the type parameters to specify a reference to a generic type or method, such as `cref="IDictionary{T, U}"`. Also, ``href`` is a valid attribute that functions as a hyperlink.
Here's an example showing the difference between `cref` and `href` when referencing external URLs:
:::code language="csharp" source="./snippets/xmldoc/HrefAndBrExamples.cs" id="UrlLinkingExample":::
-### \
+### ``
```xml
@@ -448,7 +448,7 @@ Here's an example showing the difference between `cref` and `href` when referenc
- `cref="member"`: A reference to a member or field that is available to be called from the current compilation environment. The compiler checks that the given code element exists and passes `member` to the element name in the output XML. `member` must appear within quotation marks (").
- `href="link"`: A clickable link to a given URL. For example, `GitHub` produces a clickable link with text :::no-loc text="GitHub"::: that links to `https://github.com`.
-The `` tag lets you specify the text that you might want to appear in a **See Also** section. Use [\](#see) to specify a link from within text. You can't nest the `seealso` tag inside the `summary` tag.
+The `` tag lets you specify the text that you might want to appear in a **See Also** section. Use [``](#see) to specify a link from within text. You can't nest the `seealso` tag inside the `summary` tag.
### cref attribute
@@ -460,7 +460,7 @@ The `href` attribute means a reference to a web page. You can use it to directly
## Generic types and methods
-### \
+### ``
```xml
The type returned from this method
@@ -470,7 +470,7 @@ The `href` attribute means a reference to a web page. You can use it to directly
The `` tag should be used in the comment for a generic type or method declaration to describe a type parameter. Add a tag for each type parameter of the generic type or method. The text for the `` tag is displayed in IntelliSense.
-### \
+### ``
```xml
@@ -483,6 +483,6 @@ Use this tag to enable consumers of the documentation file to format the word in
### User-defined tags
All the tags outlined in this article represent those tags recognized by the C# compiler. However, a user is free to define their own tags.
-Tools like Sandcastle bring support for extra tags like [\](https://ewsoftware.github.io/XMLCommentsGuide/html/81bf7ad3-45dc-452f-90d5-87ce2494a182.htm) and [\](https://ewsoftware.github.io/XMLCommentsGuide/html/4302a60f-e4f4-4b8d-a451-5f453c4ebd46.htm),
+Tools like Sandcastle bring support for extra tags like [``](https://ewsoftware.github.io/XMLCommentsGuide/html/81bf7ad3-45dc-452f-90d5-87ce2494a182.htm) and [``](https://ewsoftware.github.io/XMLCommentsGuide/html/4302a60f-e4f4-4b8d-a451-5f453c4ebd46.htm),
and even support [documenting namespaces](https://ewsoftware.github.io/XMLCommentsGuide/html/BD91FAD4-188D-4697-A654-7C07FD47EF31.htm).
Custom or in-house documentation generation tools can also be used with the standard tags, and multiple output formats from HTML to PDF can be supported.
diff --git a/docs/csharp/misc/cs1570.md b/docs/csharp/misc/cs1570.md
index 6063c796757e0..17bea9fe09bd7 100644
--- a/docs/csharp/misc/cs1570.md
+++ b/docs/csharp/misc/cs1570.md
@@ -13,13 +13,13 @@ XML comment on 'construct' has badly formed XML — 'reason'
When using [**DocumentationFile**](../language-reference/compiler-options/output.md#documentationfile), any comments in the source code must be in XML. Any error with your XML markup will generate CS1570. For example:
-- If you are passing a string to a **cref**, such as in an [\](../language-reference/xmldoc/recommended-tags.md) tag, the string must be enclosed in double quotation marks.
+- If you are passing a string to a **cref**, such as in an [``](../language-reference/xmldoc/recommended-tags.md) tag, the string must be enclosed in double quotation marks.
-- If you're using a tag that doesn't have a closing tag, such as [\](../language-reference/xmldoc/recommended-tags.md), you must specify a forward slash before the closing angle bracket.
+- If you're using a tag that doesn't have a closing tag, such as [``](../language-reference/xmldoc/recommended-tags.md), you must specify a forward slash before the closing angle bracket.
- If you need to use a greater-than or less-than symbol in the text of description, you need to represent them with `>` or `<`. Alternatively, you can use CDATA.
-- The file or path attribute on an [\](../language-reference/xmldoc/recommended-tags.md) tag was missing or improperly formed.
+- The file or path attribute on an [``](../language-reference/xmldoc/recommended-tags.md) tag was missing or improperly formed.
The following sample generates CS1570:
diff --git a/docs/csharp/misc/cs1574.md b/docs/csharp/misc/cs1574.md
index 3fe6f3660345c..619d853373d81 100644
--- a/docs/csharp/misc/cs1574.md
+++ b/docs/csharp/misc/cs1574.md
@@ -2,44 +2,44 @@
description: "Compiler Warning (level 1) CS1574"
title: "Compiler Warning (level 1) CS1574"
ms.date: 07/20/2015
-f1_keywords:
+f1_keywords:
- "CS1574"
-helpviewer_keywords:
+helpviewer_keywords:
- "CS1574"
ms.assetid: 4cd2b474-ab01-4397-aed7-63e5f0081649
---
# Compiler Warning (level 1) CS1574
-XML comment on 'construct' has syntactically incorrect cref attribute 'name'
-
- A string passed to a cref tag, for example, within an \ tag, referred to a member that is not available within the current build environment. The string that you pass to a cref tag must be the syntactically correct name of a member or field.
-
- For more information, see [Recommended Tags for Documentation Comments](../language-reference/xmldoc/recommended-tags.md).
-
- The following sample generates CS1574:
-
-```csharp
-// CS1574.cs
-// compile with: /W:1 /doc:x.xml
-using System;
-
-/// An exception class. // CS1574
-// instead, uncomment and try the following line
-// /// An exception class.
-class EClass : Exception
-{
-}
-
-class TestClass
-{
- public static void Main()
- {
- try
- {
- }
- catch(EClass)
- {
- }
- }
-}
+XML comment on 'construct' has syntactically incorrect cref attribute 'name'
+
+ A string passed to a cref tag, for example, within an `` tag, referred to a member that is not available within the current build environment. The string that you pass to a cref tag must be the syntactically correct name of a member or field.
+
+ For more information, see [Recommended Tags for Documentation Comments](../language-reference/xmldoc/recommended-tags.md).
+
+ The following sample generates CS1574:
+
+```csharp
+// CS1574.cs
+// compile with: /W:1 /doc:x.xml
+using System;
+
+/// An exception class. // CS1574
+// instead, uncomment and try the following line
+// /// An exception class.
+class EClass : Exception
+{
+}
+
+class TestClass
+{
+ public static void Main()
+ {
+ try
+ {
+ }
+ catch(EClass)
+ {
+ }
+ }
+}
```
diff --git a/docs/csharp/misc/cs1589.md b/docs/csharp/misc/cs1589.md
index 1bbad2136957f..77f219e2c7108 100644
--- a/docs/csharp/misc/cs1589.md
+++ b/docs/csharp/misc/cs1589.md
@@ -2,33 +2,33 @@
description: "Compiler Warning (level 1) CS1589"
title: "Compiler Warning (level 1) CS1589"
ms.date: 07/20/2015
-f1_keywords:
+f1_keywords:
- "CS1589"
-helpviewer_keywords:
+helpviewer_keywords:
- "CS1589"
ms.assetid: bdc47124-93ae-4c6a-81b2-dde8ec4d0ab1
---
# Compiler Warning (level 1) CS1589
-Unable to include XML fragment 'fragment' of file 'file' -- reason
-
- The syntax (*fragment*) of a [\](../language-reference/xmldoc/recommended-tags.md) tag, which referenced a file (`file`), was incorrect for the specified ***reason***.
-
- A malformed line will be placed in the generated XML file.
-
- The following sample generates CS1589:
-
-```csharp
-// CS1589.cs
-// compile with: /W:1 /doc:CS1589_out.xml
-
-/// // CS1589
-// try the following line instead
-// ///
-class Test
-{
- public static void Main()
- {
- }
-}
+Unable to include XML fragment 'fragment' of file 'file' -- reason
+
+ The syntax (*fragment*) of a [``](../language-reference/xmldoc/recommended-tags.md) tag, which referenced a file (`file`), was incorrect for the specified ***reason***.
+
+ A malformed line will be placed in the generated XML file.
+
+ The following sample generates CS1589:
+
+```csharp
+// CS1589.cs
+// compile with: /W:1 /doc:CS1589_out.xml
+
+/// // CS1589
+// try the following line instead
+// ///
+class Test
+{
+ public static void Main()
+ {
+ }
+}
```
diff --git a/docs/csharp/misc/cs1590.md b/docs/csharp/misc/cs1590.md
index 14885dd82aec2..4034775dfbc07 100644
--- a/docs/csharp/misc/cs1590.md
+++ b/docs/csharp/misc/cs1590.md
@@ -2,31 +2,31 @@
description: "Compiler Warning (level 1) CS1590"
title: "Compiler Warning (level 1) CS1590"
ms.date: 07/20/2015
-f1_keywords:
+f1_keywords:
- "CS1590"
-helpviewer_keywords:
+helpviewer_keywords:
- "CS1590"
ms.assetid: 0d6e5594-d6a6-43bf-8aa8-a452fa5748df
---
# Compiler Warning (level 1) CS1590
-Invalid XML include element -- Missing file attribute
-
- A path or doc attribute, passed to the [\](../language-reference/xmldoc/recommended-tags.md) tag, was missing or incomplete.
-
- The following sample generates CS1590:
-
-```csharp
-// CS1590.cs
-// compile with: /W:1 /doc:x.xml
-
-/// // CS1590
-// try the following line instead
-// ///
-class Test
-{
- public static void Main()
- {
- }
-}
+Invalid XML include element -- Missing file attribute
+
+ A path or doc attribute, passed to the [``](../language-reference/xmldoc/recommended-tags.md) tag, was missing or incomplete.
+
+ The following sample generates CS1590:
+
+```csharp
+// CS1590.cs
+// compile with: /W:1 /doc:x.xml
+
+/// // CS1590
+// try the following line instead
+// ///
+class Test
+{
+ public static void Main()
+ {
+ }
+}
```
diff --git a/docs/csharp/misc/cs1592.md b/docs/csharp/misc/cs1592.md
index 2d90fda927a54..37ec841a6c213 100644
--- a/docs/csharp/misc/cs1592.md
+++ b/docs/csharp/misc/cs1592.md
@@ -2,14 +2,14 @@
description: "Compiler Warning (level 1) CS1592"
title: "Compiler Warning (level 1) CS1592"
ms.date: 07/20/2015
-f1_keywords:
+f1_keywords:
- "CS1592"
-helpviewer_keywords:
+helpviewer_keywords:
- "CS1592"
ms.assetid: 0a6bd30b-b5f2-424b-9683-568d32f3fb17
---
# Compiler Warning (level 1) CS1592
-Badly formed XML in included comments file -- 'reason'
-
- A problem, reported as ***reason***, was found in the file specified by the [\](../language-reference/xmldoc/recommended-tags.md) tag.
+Badly formed XML in included comments file -- 'reason'
+
+ A problem, reported as ***reason***, was found in the file specified by the [``](../language-reference/xmldoc/recommended-tags.md) tag.
diff --git a/docs/csharp/misc/cs1712.md b/docs/csharp/misc/cs1712.md
index e3cd23c4dc256..5eec6a85d22a6 100644
--- a/docs/csharp/misc/cs1712.md
+++ b/docs/csharp/misc/cs1712.md
@@ -2,31 +2,31 @@
description: "Learn more about: Compiler Warning (level 4) CS1712"
title: "Compiler Warning (level 4) CS1712"
ms.date: 07/20/2015
-f1_keywords:
+f1_keywords:
- "CS1712"
-helpviewer_keywords:
+helpviewer_keywords:
- "CS1712"
ms.assetid: d9a8be26-c0ba-41fa-b082-1ce4ba7724b7
---
# Compiler Warning (level 4) CS1712
-Type parameter 'type parameter' has no matching typeparam tag in the XML comment on 'type' (but other type parameters do)
-
- The documentation of a generic type is missing a **typeparam** tag. For more information, see [\](../language-reference/xmldoc/recommended-tags.md).
-
-## Example
+Type parameter 'type parameter' has no matching typeparam tag in the XML comment on 'type' (but other type parameters do)
- The following code generates warning CS1712. To resolve this error, add a **typeparam** tag for the type parameter S.
-
-```csharp
-// CS1712.cs
-// compile with: /doc:cs1712.xml
-using System;
-class Test
-{
- public static void Main() {}
- /// This is the j parameter.
- /// This is the T type parameter.
- public void bar(int j) {} // CS1712
-}
+ The documentation of a generic type is missing a **typeparam** tag. For more information, see [``](../language-reference/xmldoc/recommended-tags.md).
+
+## Example
+
+ The following code generates warning CS1712. To resolve this error, add a **typeparam** tag for the type parameter S.
+
+```csharp
+// CS1712.cs
+// compile with: /doc:cs1712.xml
+using System;
+class Test
+{
+ public static void Main() {}
+ /// This is the j parameter.
+ /// This is the T type parameter.
+ public void bar(int j) {} // CS1712
+}
```
diff --git a/docs/csharp/misc/cs1723.md b/docs/csharp/misc/cs1723.md
index 5e110014dda4a..7809175a227cf 100644
--- a/docs/csharp/misc/cs1723.md
+++ b/docs/csharp/misc/cs1723.md
@@ -2,25 +2,25 @@
description: "Learn more about: Compiler Warning (level 1) CS1723"
title: "Compiler Warning (level 1) CS1723"
ms.date: 07/20/2015
-f1_keywords:
+f1_keywords:
- "CS1723"
-helpviewer_keywords:
+helpviewer_keywords:
- "CS1723"
ms.assetid: d359be86-7daf-4b59-99a3-10b072336bca
---
# Compiler Warning (level 1) CS1723
-XML comment has cref attribute 'attribute' that refers to a type parameter
-
-This error is generated for an XML comment in case of using a [\](../../csharp/language-reference/xmldoc/recommended-tags.md#see) tag with cross reference (cref) to a type parameter instead of the existing type (whether user-defined or built-in) in the code. It's impossible to link to 'attribute' of generic types because at the moment of creating the documentation the future type given as 'attribute' is not yet known.
-
-To solve this issue [\](../../csharp/language-reference/xmldoc/recommended-tags.md#typeparamref) tag should be used.
-
-## Example
-
-The following example contains a comment generating CS1723 as well as a reference that can be linked correctly.
-
-```csharp
+XML comment has cref attribute 'attribute' that refers to a type parameter.
+
+This error is generated for an XML comment in case of using a [``](../../csharp/language-reference/xmldoc/recommended-tags.md#see) tag with cross reference (cref) to a type parameter instead of the existing type (whether user-defined or built-in) in the code. It's impossible to link to 'attribute' of generic types because at the moment of creating the documentation the future type given as 'attribute' is not yet known.
+
+To solve this issue, use the [``](../../csharp/language-reference/xmldoc/recommended-tags.md#typeparamref) tag.
+
+## Example
+
+The following example contains a comment generating CS1723 as well as a reference that can be linked correctly.
+
+```csharp
public class Point
{
}
@@ -32,11 +32,11 @@ public class Point
public class List
{
}
-```
+```
-This example shows how to correctly link both generic type `T` as well as already known user-defined `Point`
+The next example shows how to correctly link both generic type `T` as well as already known user-defined `Point`.
-```csharp
+```csharp
public class Point
{
}
@@ -48,4 +48,4 @@ public class Point
public class List
{
}
-```
+```
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/docs/framework/64-bit-apps.md b/docs/framework/64-bit-apps.md
index 2fec1250af545..d7a4396209b40 100644
--- a/docs/framework/64-bit-apps.md
+++ b/docs/framework/64-bit-apps.md
@@ -18,7 +18,7 @@ When you compile an application, you can specify that it should run on a Windows
> [!NOTE]
> Because of the design of x86 emulation and the WOW64 subsystem for the Itanium processor family, applications are restricted to execution on one processor. These factors reduce the performance and scalability of 32-bit .NET applications that run on Itanium-based systems. We recommend that you use .NET Framework 4 or later, which includes native 64-bit support for Itanium-based systems, for increased performance and scalability.
- By default, when you run a 64-bit managed application on a 64-bit Windows operating system, you can create an object of no more than 2 gigabytes (GB). However, in .NET Framework 4.5 and later, you can increase this limit. For more information, see the [\ element](./configure-apps/file-schema/runtime/gcallowverylargeobjects-element.md).
+ By default, when you run a 64-bit managed application on a 64-bit Windows operating system, you can create an object of no more than 2 gigabytes (GB). However, in .NET Framework 4.5 and later, you can increase this limit. For more information, see the [`` element](./configure-apps/file-schema/runtime/gcallowverylargeobjects-element.md).
Many assemblies run identically on both the 32-bit CLR and the 64-bit CLR. However, some programs may behave differently, depending on the CLR, if they contain one or more of the following:
diff --git a/docs/framework/additional-apis/pos-for-net/adding-plug-and-play-support.md b/docs/framework/additional-apis/pos-for-net/adding-plug-and-play-support.md
index 5a9f66f50bf43..2e54280fbf9a5 100644
--- a/docs/framework/additional-apis/pos-for-net/adding-plug-and-play-support.md
+++ b/docs/framework/additional-apis/pos-for-net/adding-plug-and-play-support.md
@@ -10,9 +10,9 @@ ms.custom: "pos-restored-from-archive"
Microsoft Point of Service for .NET (POS for .NET) includes support for Plug and Play devices. By adding Plug and Play support to your Service Objects, applications can become more simple, reliable, and efficient. Service Objects should support it whenever possible.
-Implementing Plug and Play support at the Service Object level is very simple. Once you know the hardware ID of your device, simply add a single attribute to your class, . The **HardwareId** attribute is used by to intelligently filter out Service Objects from the list of available devices depending on the state of the device. If the Service Object has a **HardwareId** attribute that refers to an installed Plug and Play device, but that device is not connected, the Service Object will be excluded from the **PosExplorer** device list. This list is returned when applications call .
+Implementing Plug and Play support at the Service Object level is very simple. Once you know the hardware ID of your device, simply add a single attribute to your class, . The `HardwareId` attribute is used by to intelligently filter out Service Objects from the list of available devices depending on the state of the device. If the Service Object has a `HardwareId` attribute that refers to an installed Plug and Play device, but that device is not connected, the Service Object will be excluded from the **PosExplorer** device list. This list is returned when applications call .
-Service Objects may also have more than one **HardwareId** attribute, in which case **PosExplorer** associates a union of all specified devices with the Service Object. It is possible to override the **HardwareId** attributes or add to the list of associated hardware on the Service Object without rebuilding the Service Object assembly. For information about overriding or adding the **HardwareId** attribute, see [Plug and Play XML Configuration](plug-and-play-xml-configuration.md).
+Service Objects may also have more than one `HardwareId` attribute, in which case **PosExplorer** associates a union of all specified devices with the Service Object. It is possible to override the `HardwareId` attributes or add to the list of associated hardware on the Service Object without rebuilding the Service Object assembly. For information about overriding or adding the `HardwareId` attribute, see [Plug and Play XML Configuration](plug-and-play-xml-configuration.md).
Only the application is responsible for catching and events and updating its status as appropriate based on the updated device list returned from **PosExplorer**. The Service Object does not need to detect these events.
@@ -20,11 +20,11 @@ Only the application is responsible for catching class provides two methods, **DecodeDataLabel** and **DecodeScanDataType** for decoding incoming date. These methods are called when the properties **ScanDataLabel** and **ScanDataType**, respectively, are accessed. The **ScannerBase** class defers data decoding until the application accesses the data properties and the decoded data will be cached for future reads.
-The **ScannerBase** class implements the **ScannerBase.DecodeData** attribute as required by the Unified Point Of Service (UnifiedPOS) specification. If **DecodeData** is not set to **true** when the application reads the **ScanDataLabel** property, an empty byte array will be returned. Similarly, **ScanDataType** returns **BarCodeSymbology.Unknown**. This functionality is implemented in the **ScannerBase** class and is transparent to both the application and the Service Object.
+The **ScannerBase** class implements the `ScannerBase.DecodeData` attribute as required by the Unified Point Of Service (UnifiedPOS) specification. If **DecodeData** is not set to **true** when the application reads the **ScanDataLabel** property, an empty byte array will be returned. Similarly, **ScanDataType** returns **BarCodeSymbology.Unknown**. This functionality is implemented in the **ScannerBase** class and is transparent to both the application and the Service Object.
## To implement DecodeScanDataLabel
diff --git a/docs/framework/additional-apis/pos-for-net/pinpad-sample.md b/docs/framework/additional-apis/pos-for-net/pinpad-sample.md
index f8bb5e9b65c26..55a6aa8778e59 100644
--- a/docs/framework/additional-apis/pos-for-net/pinpad-sample.md
+++ b/docs/framework/additional-apis/pos-for-net/pinpad-sample.md
@@ -20,7 +20,7 @@ This sample demonstrates which methods must be implemented in a **PinPad** Servi
4. Create a Service Object class derived from .
-5. Add the **ServiceObject** attribute to your Service Object class, using the **DeviceType.PinPad** value as your device type.
+5. Add the `ServiceObject` attribute to your Service Object class, using the **DeviceType.PinPad** value as your device type.
## Example
diff --git a/docs/framework/additional-apis/pos-for-net/plug-and-play-support.md b/docs/framework/additional-apis/pos-for-net/plug-and-play-support.md
index 36b9377533ed6..3f7856ebf8c83 100644
--- a/docs/framework/additional-apis/pos-for-net/plug-and-play-support.md
+++ b/docs/framework/additional-apis/pos-for-net/plug-and-play-support.md
@@ -24,8 +24,8 @@ When an application invokes the method **PosExplorer.GetDevices**, **PosExplorer
1. Searches for all assemblies in the specified POS for .NET directories.
2. If the assembly is not marked with the **PosAssembly** global attribute, discards it.
-3. Searches for classes marked with the **ServiceObject** attribute. For each such class:
- 1. Looks for a hardware ID associated with this class, as either a **HardwareId** attribute or within the [Plug and Play XML Configuration](plug-and-play-xml-configuration.md) file. If there is no hardware ID, leaves the Service Object in the **PosExplorer** list.
+3. Searches for classes marked with the `ServiceObject` attribute. For each such class:
+ 1. Looks for a hardware ID associated with this class, as either a `HardwareId` attribute or within the [Plug and Play XML Configuration](plug-and-play-xml-configuration.md) file. If there is no hardware ID, leaves the Service Object in the **PosExplorer** list.
2. If there is a hardware ID, then queries Windows to retrieve the device's status. If the device is attached to the computer, leaves it in the **PosExplorer** list.
3. If the device is not attached to the computer, removes it from the **PosExplorer** list.
diff --git a/docs/framework/additional-apis/pos-for-net/plug-and-play-xml-configuration.md b/docs/framework/additional-apis/pos-for-net/plug-and-play-xml-configuration.md
index c8fd55568f6a9..d20a931cb1827 100644
--- a/docs/framework/additional-apis/pos-for-net/plug-and-play-xml-configuration.md
+++ b/docs/framework/additional-apis/pos-for-net/plug-and-play-xml-configuration.md
@@ -16,9 +16,9 @@ To support these cases, Microsoft Point of Service for .NET (POS for .NET) speci
A Plug and Play configuration file must begin with a top-level node named **PointOfServiceConfig** and have the attribute **Version** to indicate the XML version of the file.
-Following that, there may be any number of **ServiceObject** subnodes. Each service object node must include **Type** and **Name** attributes to indicate the POS device type and name of the Service Object. These two fields will be matched against available Service Objects to determine which, if any, should be associated with devices specified in the subnode **HardwareId**. There is also an optional attribute on the **ServiceObject** node, **Override**. If this attribute is set, then the device associations in the XML file overrides those contained in the assembly.
+Following that, there may be any number of **ServiceObject** subnodes. Each service object node must include `Type` and `Name` attributes to indicate the POS device type and name of the Service Object. These two fields will be matched against available Service Objects to determine which, if any, should be associated with devices specified in the subnode **HardwareId**. There is also an optional attribute on the **ServiceObject** node, `Override`. If this attribute is set, then the device associations in the XML file overrides those contained in the assembly.
-The **ServiceObject** node contains subnodes with the name **HardwareId**, which have **From** and **To** attributes. The contents of these attributes are the same as would be found in the **HardwareId** attribute in a Service Object assembly and specify the range of hardware IDs to associate with the Service Object.
+The **ServiceObject** node contains subnodes with the name **HardwareId**, which have `From` and `To` attributes. The contents of these attributes are the same as would be found in the `HardwareId` attribute in a Service Object assembly and specify the range of hardware IDs to associate with the Service Object.
## Example
@@ -35,17 +35,17 @@ The example shows a typical XML Plug and Play configuration file.
## Hardware ID Precedence
-If the **Override** attribute on the **ServiceObject** node is set, then the device association specified in the XML takes precedence, and any **HardwareId** attribute on the Service Object will be discarded.
+If the `Override` attribute on the **ServiceObject** node is set, then the device association specified in the XML takes precedence, and any `HardwareId` attribute on the Service Object will be discarded.
-If the **Override** attribute is not set, then neither the XML nor the **HardwareId** has precedence. Instead, **PosExplorer** associates the union of all specified devices with the Service Object.
+If the `Override` attribute is not set, then neither the XML nor the **HardwareId** has precedence. Instead, **PosExplorer** associates the union of all specified devices with the Service Object.
## See Also
-#### Tasks
+### Tasks
- [Adding Plug and Play Support](adding-plug-and-play-support.md)
-#### Concepts
+### Concepts
- [Plug and Play Support](plug-and-play-support.md)
- [POS for .NET Registry Settings](pos-for-net-registry-settings.md)
diff --git a/docs/framework/additional-apis/pos-for-net/poscommon-information-for-service-object-developers.md b/docs/framework/additional-apis/pos-for-net/poscommon-information-for-service-object-developers.md
index f7ae52937b135..e5d2bdd73739f 100644
--- a/docs/framework/additional-apis/pos-for-net/poscommon-information-for-service-object-developers.md
+++ b/docs/framework/additional-apis/pos-for-net/poscommon-information-for-service-object-developers.md
@@ -50,7 +50,7 @@ This property is also used to enable or disable the device by setting the proper
POS for .NET verifies that the device has been opened, and then retrieves the current value of the property.
-Within **Base** class implementations, this value is set automatically based on the contents of the **ServiceObject** attribute.
+Within **Base** class implementations, this value is set automatically based on the contents of the `ServiceObject` attribute.
If you are not deriving from a POS for .NET **Base** class, and are instead deriving from an **Interface**-level or **Basic**-level class, then **DeviceName** should be set by the Service Subject during the method.
@@ -138,11 +138,11 @@ Setting can cause the following excep
## ServiceObjectDescription Property
-POS for .NET verifies that the device has been opened, and then retrieves the current value of the property. The Service Object developer should not have to set this value, since it is set by the POS for .NET **Basic** class using the description information provided in the **ServiceObject** attribute.
+POS for .NET verifies that the device has been opened, and then retrieves the current value of the property. The Service Object developer should not have to set this value, since it is set by the POS for .NET **Basic** class using the description information provided in the `ServiceObject` attribute.
## ServiceObjectVersion Property
-POS for .NET verifies that the device has been opened, and then retrieves the current value of the property. The Service Object developer should not have to set this value, since it is set by the POS for .NET **Basic** class using the version information provided in the **ServiceObject** attribute.
+POS for .NET verifies that the device has been opened, and then retrieves the current value of the property. The Service Object developer should not have to set this value, since it is set by the POS for .NET **Basic** class using the version information provided in the `ServiceObject` attribute.
## State Property
diff --git a/docs/framework/additional-apis/pos-for-net/poskeyboard-implementation.md b/docs/framework/additional-apis/pos-for-net/poskeyboard-implementation.md
index 8e9ba7c647135..e834115225c87 100644
--- a/docs/framework/additional-apis/pos-for-net/poskeyboard-implementation.md
+++ b/docs/framework/additional-apis/pos-for-net/poskeyboard-implementation.md
@@ -36,7 +36,7 @@ This section contains a sample **PosKeyboard** Service Object that generates sim
4. Create a Service Object class derived from **PosKeyboardBase**.
-5. Add the **ServiceObject** attribute to your Service Object class, using the **DeviceType.PosKeyboard** value as your device type.
+5. Add the `ServiceObject` attribute to your Service Object class, using the **DeviceType.PosKeyboard** value as your device type.
## To add features to the sample keyboard Service Object
diff --git a/docs/framework/additional-apis/pos-for-net/statistics-sample.md b/docs/framework/additional-apis/pos-for-net/statistics-sample.md
index 95d35e97be9cb..8dce48fd1f8a7 100644
--- a/docs/framework/additional-apis/pos-for-net/statistics-sample.md
+++ b/docs/framework/additional-apis/pos-for-net/statistics-sample.md
@@ -70,7 +70,7 @@ The key members of the **DeviceStatistics** class are detailed below:
```
- When an application requests all statistics from the device, the device returns a `` entry for every defined statistic in the device category. The device category is defined by the version of the XML schema specified by the **version** attribute in the `` tag. If the device does not record any statistics, the `` tag will be empty.
+ When an application requests all statistics from the device, the device returns a `` entry for every defined statistic in the device category. The device category is defined by the version of the XML schema specified by the `version` attribute in the `` tag. If the device does not record any statistics, the `` tag will be empty.
POS for .NET uses handlers to perform the reading and writing of statistics in a manner similar to the way events are handled. When one of these statistic handlers is created, it is assigned to a particular device statistic. When this statistic is read or updated, the handler calls a delegate that is able to read from or write to the device as necessary.
diff --git a/docs/framework/app-domains/assembly-placement.md b/docs/framework/app-domains/assembly-placement.md
index bbfa9316e7238..730fb145d1328 100644
--- a/docs/framework/app-domains/assembly-placement.md
+++ b/docs/framework/app-domains/assembly-placement.md
@@ -13,7 +13,7 @@ ms.assetid: ff8d48bc-f606-484f-9fe1-d0af264269fb
[!INCLUDE [net-framework-specific](../includes/net-framework-specific.md)]
-For most .NET Framework applications, you locate assemblies that make up an application in the application's directory, in a subdirectory of the application's directory, or in the global assembly cache (if the assembly is shared). You can override where the common language runtime looks for an assembly by using the [\ Element](../configure-apps/file-schema/runtime/codebase-element.md) in a configuration file. If the assembly does not have a strong name, the location specified using the [\ Element](../configure-apps/file-schema/runtime/codebase-element.md) is restricted to the application directory or a subdirectory. If the assembly has a strong name, the [\ Element](../configure-apps/file-schema/runtime/codebase-element.md) can specify any location on the computer or on a network.
+For most .NET Framework applications, you locate assemblies that make up an application in the application's directory, in a subdirectory of the application's directory, or in the global assembly cache (if the assembly is shared). You can override where the common language runtime looks for an assembly by using the [`` Element](../configure-apps/file-schema/runtime/codebase-element.md) in a configuration file. If the assembly does not have a strong name, the location specified using the [`` Element](../configure-apps/file-schema/runtime/codebase-element.md) is restricted to the application directory or a subdirectory. If the assembly has a strong name, the [`` Element](../configure-apps/file-schema/runtime/codebase-element.md) can specify any location on the computer or on a network.
Similar rules apply to locating assemblies when working with unmanaged code or COM interop applications: if the assembly will be shared by multiple applications, it should be installed into the global assembly cache. Assemblies used with unmanaged code must be exported as a type library and registered. Assemblies used by COM interop must be registered in the catalog, although in some cases this registration occurs automatically.
diff --git a/docs/framework/app-domains/build-multifile-assembly.md b/docs/framework/app-domains/build-multifile-assembly.md
index c09ed12a1fd55..9f70421ed5391 100644
--- a/docs/framework/app-domains/build-multifile-assembly.md
+++ b/docs/framework/app-domains/build-multifile-assembly.md
@@ -93,9 +93,9 @@ This article explains how to create a multifile assembly and provides code that
vbc /t:module Stringer.vb
```
- Specifying the *module* parameter with the **/t:** compiler option indicates that the file should be compiled as a module rather than as an assembly. The compiler produces a module called *Stringer.netmodule*, which can be added to an assembly.
+ Specifying the *module* parameter with the `/t:` compiler option indicates that the file should be compiled as a module rather than as an assembly. The compiler produces a module called *Stringer.netmodule*, which can be added to an assembly.
-3. Compile all other modules, using the necessary compiler options to indicate the other modules that are referenced in the code. This step uses the **/addmodule** compiler option.
+3. Compile all other modules, using the necessary compiler options to indicate the other modules that are referenced in the code. This step uses the `/addmodule` compiler option.
In the following example, a code module called *Client* has an entry point `Main` method that references a method in the *Stringer.netmodule* module created in step 1.
@@ -166,7 +166,7 @@ This article explains how to create a multifile assembly and provides code that
vbc /addmodule:Stringer.netmodule /t:module Client.vb
```
- Specify the **/t:module** option because this module will be added to an assembly in a future step. Specify the **/addmodule** option because the code in *Client* references a namespace created by the code in *Stringer.netmodule*. The compiler produces a module called *Client.netmodule* that contains a reference to another module, *Stringer.netmodule*.
+ Specify the `/t:module` option because this module will be added to an assembly in a future step. Specify the `/addmodule` option because the code in *Client* references a namespace created by the code in *Stringer.netmodule*. The compiler produces a module called *Client.netmodule* that contains a reference to another module, *Stringer.netmodule*.
> [!NOTE]
> The C# and Visual Basic compilers support directly creating multifile assemblies using the following two different syntaxes.
@@ -207,9 +207,9 @@ This article explains how to create a multifile assembly and provides code that
At the command prompt, type the following command:
- **al** \<*module name*> \<*module name*> … **/main:**\<*method name*> **/out:**\<*file name*> **/target:**\<*assembly file type*>
+ `al` \<*module name*> \<*module name*> … `/main:`\<*method name*> `/out:`\<*file name*> `/target:`\<*assembly file type*>
- In this command, the *module name* arguments specify the name of each module to include in the assembly. The **/main:** option specifies the method name that is the assembly's entry point. The **/out:** option specifies the name of the output file, which contains assembly metadata. The **/target:** option specifies that the assembly is a console application executable (*.exe*) file, a Windows executable (*.win*) file, or a library (*.lib*) file.
+ In this command, the *module name* arguments specify the name of each module to include in the assembly. The `/main:` option specifies the method name that is the assembly's entry point. The `/out:` option specifies the name of the output file, which contains assembly metadata. The `/target:` option specifies that the assembly is a console application executable (*.exe*) file, a Windows executable (*.win*) file, or a library (*.lib*) file.
In the following example, *Al.exe* creates an assembly that is a console application executable called *myAssembly.exe*. The application consists of two modules called *Client.netmodule* and *Stringer.netmodule*, and the executable file called *myAssembly.exe*, which contains only assembly metadata. The entry point of the assembly is the `Main` method in the class `MainClientApp`, which is located in *Client.dll*.
diff --git a/docs/framework/app-domains/build-single-file-assembly.md b/docs/framework/app-domains/build-single-file-assembly.md
index 97adabada1349..7440048ef0f1e 100644
--- a/docs/framework/app-domains/build-single-file-assembly.md
+++ b/docs/framework/app-domains/build-single-file-assembly.md
@@ -69,9 +69,9 @@ vbc -out:myAssembly.exe myCode.vb
To create a library assembly, at the command prompt, type the following command:
-\<*compiler command*> **-t:library** \<*module name*>
+\<*compiler command*> `-t:library` \<*module name*>
-In this command, *compiler command* is the compiler command for the language used in your code module, and *module name* is the name of the code module to compile into the assembly. You can also use other compiler options, such as the **-out:** option.
+In this command, *compiler command* is the compiler command for the language used in your code module, and *module name* is the name of the code module to compile into the assembly. You can also use other compiler options, such as the `-out:` option.
The following example creates a library assembly named *myCodeAssembly.dll* from a code module called `myCode`.
diff --git a/docs/framework/app-domains/gac.md b/docs/framework/app-domains/gac.md
index 0428b4d9fd2b7..8eb3813da8b49 100644
--- a/docs/framework/app-domains/gac.md
+++ b/docs/framework/app-domains/gac.md
@@ -21,7 +21,7 @@ Each computer where the Common Language Runtime is installed has a machine-wide
You should share assemblies by installing them into the Global Assembly Cache only when you need to. As a general guideline, keep assembly dependencies private, and locate assemblies in the application directory unless sharing an assembly is explicitly required. In addition, it is not necessary to install assemblies into the Global Assembly Cache to make them accessible to COM interop or unmanaged code.
> [!NOTE]
-> There are scenarios where you explicitly do not want to install an assembly into the Global Assembly Cache. If you place one of the assemblies that make up an application in the Global Assembly Cache, you can no longer replicate or install the application by using the **xcopy** command to copy the application directory. You must move the assembly in the Global Assembly Cache as well.
+> There are scenarios where you explicitly do not want to install an assembly into the Global Assembly Cache. If you place one of the assemblies that make up an application in the Global Assembly Cache, you can no longer replicate or install the application by using the `xcopy` command to copy the application directory. You must move the assembly in the Global Assembly Cache as well.
There are two ways to deploy an assembly into the Global Assembly Cache:
diff --git a/docs/framework/app-domains/how-to-configure-an-application-domain.md b/docs/framework/app-domains/how-to-configure-an-application-domain.md
index c2d31e361ca86..f51a3ce32a875 100644
--- a/docs/framework/app-domains/how-to-configure-an-application-domain.md
+++ b/docs/framework/app-domains/how-to-configure-an-application-domain.md
@@ -15,14 +15,14 @@ ms.assetid: 07ea8438-7a34-49f0-a7e8-3d6ff7e4a482
[!INCLUDE [net-framework-specific](../includes/net-framework-specific.md)]
-You can provide the common language runtime with configuration information for a new application domain using the class. When creating your own application domains, the most important property is . The other **AppDomainSetup** properties are used mainly by runtime hosts to configure a particular application domain.
+You can provide the common language runtime with configuration information for a new application domain using the class. When creating your own application domains, the most important property is . The other `AppDomainSetup` properties are used mainly by runtime hosts to configure a particular application domain.
- The **ApplicationBase** property defines the root directory of the application. When the runtime needs to satisfy a type request, it probes for the assembly containing the type in the directory specified by the **ApplicationBase** property.
+ The `ApplicationBase` property defines the root directory of the application. When the runtime needs to satisfy a type request, it probes for the assembly containing the type in the directory specified by the `ApplicationBase` property.
> [!NOTE]
-> A new application domain inherits only the **ApplicationBase** property of the creator.
+> A new application domain inherits only the `ApplicationBase` property of the creator.
- The following example creates an instance of the **AppDomainSetup** class, uses this class to create a new application domain, writes the information to console, and then unloads the application domain.
+ The following example creates an instance of the `AppDomainSetup` class, uses this class to create a new application domain, writes the information to console, and then unloads the application domain.
## Example
diff --git a/docs/framework/app-domains/how-to-create-an-application-domain.md b/docs/framework/app-domains/how-to-create-an-application-domain.md
index 4da638cc41773..599c424860af1 100644
--- a/docs/framework/app-domains/how-to-create-an-application-domain.md
+++ b/docs/framework/app-domains/how-to-create-an-application-domain.md
@@ -16,7 +16,7 @@ ms.assetid: ba1fa43e-49f5-47d9-bd7f-3024af16f4ba
A common language runtime host creates application domains automatically when they are needed. However, you can create your own application domains and load into them those assemblies that you want to manage personally. You can also create application domains from which you execute code.
- You create a new application domain using one of the overloaded **CreateDomain** methods in the class. You can give the application domain a name and reference it by that name.
+ You create a new application domain using one of the overloaded `CreateDomain` methods in the class. You can give the application domain a name and reference it by that name.
The following example creates a new application domain, assigns it the name `MyDomain`, and then prints the name of the host domain and the newly created child application domain to the console.
diff --git a/docs/framework/app-domains/how-to-unload-an-application-domain.md b/docs/framework/app-domains/how-to-unload-an-application-domain.md
index 6fcf215f22cab..3244dd3b222e3 100644
--- a/docs/framework/app-domains/how-to-unload-an-application-domain.md
+++ b/docs/framework/app-domains/how-to-unload-an-application-domain.md
@@ -16,7 +16,7 @@ ms.assetid: f356116d-e415-4f7c-a332-6e6a60227192
[!INCLUDE [net-framework-specific](../includes/net-framework-specific.md)]
-When you have finished using an application domain, unload it using the method. The **Unload** method gracefully shuts down the specified application domain. During the unloading process, no new threads can access the application domain, and all application domain–specific data structures are freed.
+When you have finished using an application domain, unload it using the method. The `Unload` method gracefully shuts down the specified application domain. During the unloading process, no new threads can access the application domain, and all application domain–specific data structures are freed.
Assemblies loaded into the application domain are removed and are no longer available. If an assembly in the application domain is domain-neutral, data for the assembly remains in memory until the entire process is shut down. There is no mechanism to unload a domain-neutral assembly other than shutting down the entire process. There are situations where the request to unload an application domain does not work and results in a .
diff --git a/docs/framework/app-domains/index.md b/docs/framework/app-domains/index.md
index d201ee7dda12e..0d8cf21391689 100644
--- a/docs/framework/app-domains/index.md
+++ b/docs/framework/app-domains/index.md
@@ -37,4 +37,4 @@ Provides a conceptual overview of assemblies.
Provides a conceptual overview of application domains.
[Reflection Overview](../../fundamentals/reflection/reflection.md)\
-Describes how to use the **Reflection** class to obtain information about an assembly.
+Describes how to use the `Reflection` class to obtain information about an assembly.
diff --git a/docs/framework/app-domains/retrieve-setup-information.md b/docs/framework/app-domains/retrieve-setup-information.md
index 7a7e3a7a90b30..cc35064d8a51e 100644
--- a/docs/framework/app-domains/retrieve-setup-information.md
+++ b/docs/framework/app-domains/retrieve-setup-information.md
@@ -18,7 +18,7 @@ ms.assetid: 5cdb12ae-1e37-4a62-8ec7-93d6dcc6e8d9
Each instance of an application domain consists of both properties and information. You can retrieve setup information from an application domain using the class. This class provides several members that retrieve configuration information about an application domain.
- You can also query the **AppDomainSetup** object for the application domain to obtain setup information that was passed to the domain when it was created.
+ You can also query the `AppDomainSetup` object for the application domain to obtain setup information that was passed to the domain when it was created.
The following example creates a new application domain and then prints several member values to the console.
diff --git a/docs/framework/app-domains/shadow-copy-assemblies.md b/docs/framework/app-domains/shadow-copy-assemblies.md
index 0f45e6fc34492..7dd105293d0f3 100644
--- a/docs/framework/app-domains/shadow-copy-assemblies.md
+++ b/docs/framework/app-domains/shadow-copy-assemblies.md
@@ -71,7 +71,7 @@ When an application domain that uses shadow copying starts, there is a delay whi
Beginning with the .NET Framework 4, the default startup behavior is to directly compare the file date and time of each assembly in the application directory with the file date and time of the copy in the shadow copy directory. If the assembly has been updated, it is copied by using the same procedure as in earlier versions of the .NET Framework; otherwise, the copy in the shadow copy directory is loaded.
-The resulting performance improvement is largest for applications in which assemblies do not change frequently and changes usually occur in a small subset of assemblies. If a majority of assemblies in an application change frequently, the new default behavior might cause a performance regression. You can restore the startup behavior of previous versions of the .NET Framework by adding the [\ element](../configure-apps/file-schema/runtime/shadowcopyverifybytimestamp-element.md) to the configuration file, with `enabled="false"`.
+The resulting performance improvement is largest for applications in which assemblies do not change frequently and changes usually occur in a small subset of assemblies. If a majority of assemblies in an application change frequently, the new default behavior might cause a performance regression. You can restore the startup behavior of previous versions of the .NET Framework by adding the [`` element](../configure-apps/file-schema/runtime/shadowcopyverifybytimestamp-element.md) to the configuration file, with `enabled="false"`.
@@ -85,4 +85,4 @@ The class has several methods, such as
-
-
-- [\ Element](../configure-apps/file-schema/runtime/shadowcopyverifybytimestamp-element.md)
+- [`` Element](../configure-apps/file-schema/runtime/shadowcopyverifybytimestamp-element.md)
diff --git a/docs/framework/app-domains/use.md b/docs/framework/app-domains/use.md
index 3ad7740e18083..41ee28a5d6792 100644
--- a/docs/framework/app-domains/use.md
+++ b/docs/framework/app-domains/use.md
@@ -65,4 +65,4 @@ Describes how to create dynamic assemblies.
Provides a conceptual overview of application domains.
[Reflection Overview](../../fundamentals/reflection/reflection.md)
-Describes how to use the **Reflection** class to obtain information about an assembly.
+Describes how to use the `Reflection` class to obtain information about an assembly.
diff --git a/docs/framework/configure-apps/assembly-binding-redirection-security-permission.md b/docs/framework/configure-apps/assembly-binding-redirection-security-permission.md
index cd7c6a32a60eb..1200671aa5835 100644
--- a/docs/framework/configure-apps/assembly-binding-redirection-security-permission.md
+++ b/docs/framework/configure-apps/assembly-binding-redirection-security-permission.md
@@ -17,16 +17,16 @@ Explicit assembly binding redirection in an application configuration file requi
The permission is not required if assembly redirection is performed in a publisher policy file that is controlled by the component publisher, or in the machine configuration file that is controlled by the administrator. However, the permission is required for an application to explicitly ignore publisher policy using the [\](./file-schema/runtime/publisherpolicy-element.md) element in the application configuration file.
- The following table shows the default security settings for the **BindingRedirects** flag.
+ The following table shows the default security settings for the `BindingRedirects` flag.
| Zone | BindingRedirects flag setting |
|------------------------------|-------------------------------|
-| Trusted Zone (local machine) | **ON** |
-| Intranet Zone | **ON** |
-| Internet Zone | **OFF** |
-| Untrusted zones | **OFF** |
+| Trusted Zone (local machine) | `ON` |
+| Intranet Zone | `ON` |
+| Internet Zone | `OFF` |
+| Untrusted zones | `OFF` |
- An administrator can change these security settings to support or restrict specific scenarios on a given computer. There are no tools for changing the **BindingRedirects** flag setting from the default; an administrator must manually edit the Security.config file on a user's computer.
+ An administrator can change these security settings to support or restrict specific scenarios on a given computer. There are no tools for changing the `BindingRedirects` flag setting from the default; an administrator must manually edit the Security.config file on a user's computer.
## See also
diff --git a/docs/framework/configure-apps/file-schema/add-element-for-custom-2.md b/docs/framework/configure-apps/file-schema/add-element-for-custom-2.md
index da54dd666ac7b..3e31d5f16198b 100644
--- a/docs/framework/configure-apps/file-schema/add-element-for-custom-2.md
+++ b/docs/framework/configure-apps/file-schema/add-element-for-custom-2.md
@@ -2,16 +2,16 @@
description: "Learn more about: element for NameValueSectionHandler and DictionarySectionHandler"
title: " element for NameValueSectionHandler and DictionarySectionHandler"
ms.date: "05/01/2017"
-f1_keywords:
+f1_keywords:
- "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/sectionName/add"
-helpviewer_keywords:
+helpviewer_keywords:
- "add Element"
- " Element"
ms.assetid: 0d4ddb53-eb2b-49c0-9c33-a8dec5c39b46
---
-# \ element for NameValueSectionHandler and DictionarySectionHandler
+# `` element for NameValueSectionHandler and DictionarySectionHandler
-Adds custom application settings. Each **\** tag contains a key/value pair.
+Adds custom application settings. Each `` tag contains a key/value pair.
[**\**](configuration-element.md)\
[**\**](custom-element-2.md)\
@@ -27,14 +27,14 @@ Adds custom application settings. Each **\** tag contains a key/value pair.
| Attribute | Description |
| --------- | ----------- |
-| **key** | Required attribute.
Specifies the name of the setting. |
-| **value** | Required attribute.
Specifies the value of the setting. |
+| `key` | Required attribute.
Specifies the name of the setting. |
+| `value` | Required attribute.
Specifies the value of the setting. |
## Parent element
| Element | Description |
| ------- | ------------|
-| [**\** Element](custom-element-2.md) | Defines settings for custom configuration sections that use the and classes. |
+| [`` Element](custom-element-2.md) | Defines settings for custom configuration sections that use the and classes. |
## Child elements
@@ -42,7 +42,7 @@ None
## Example
-The following example shows how to define a custom configuration section and use the **\** element to put settings into the section:
+The following example shows how to define a custom configuration section and use the `` element to put settings into the section:
```xml
diff --git a/docs/framework/configure-apps/file-schema/application-settings-schema.md b/docs/framework/configure-apps/file-schema/application-settings-schema.md
index 4ae4bf07540ac..ffb83d2cb1aef 100644
--- a/docs/framework/configure-apps/file-schema/application-settings-schema.md
+++ b/docs/framework/configure-apps/file-schema/application-settings-schema.md
@@ -2,7 +2,7 @@
description: "Learn more about: Application Settings schema"
title: "Application Settings schema"
ms.date: "03/30/2017"
-helpviewer_keywords:
+helpviewer_keywords:
- "schema application settings"
- "application settings, schema [Windows Forms]"
- "Windows Forms, application settings schema"
@@ -25,29 +25,29 @@ Application settings defines the following elements as part of the configuration
| Element | Description |
| -------------------------- | ------------------------------------------------------------------------------------- |
-| **\** | Contains all **\** tags specific to the application. |
-| **\** | Contains all **\** tags specific to the current user. |
-| **\** | Defines a setting. Child of either **\** or **\**. |
-| **\** | Defines a setting's value. Child of **\**. |
+| `` | Contains all `` tags specific to the application. |
+| `` | Contains all `` tags specific to the current user. |
+| `` | Defines a setting. Child of either `` or ``. |
+| `` | Defines a setting's value. Child of ``. |
-## \ element
+## `` element
-This element contains all **\** tags that are specific to an instance of the application on a client computer. It defines no attributes.
+This element contains all `` tags that are specific to an instance of the application on a client computer. It defines no attributes.
-## \ element
+## `` element
-This element contains all **\** tags that are specific to the user who is currently using the application. It defines no attributes.
+This element contains all `` tags that are specific to the user who is currently using the application. It defines no attributes.
-## \ element
+## `` element
This element defines a setting. It has the following attributes.
| Attribute | Description |
| ---------------- | ----------- |
-| **name** | Required. The unique ID of the setting. Settings created through Visual Studio are saved with the name `ProjectName.Properties.Settings`. |
-| **serializeAs** | Required. The format to use for serializing the value to text. Valid values are:
- `string`. The value is serialized as a string using a .
- `xml`. The value is serialized using XML serialization.
- `binary`. The value is serialized as text-encoded binary using binary serialization.
- `custom`. The settings provider has inherent knowledge of this setting and serializes and de-serializes it. |
+| `name` | Required. The unique ID of the setting. Settings created through Visual Studio are saved with the name `ProjectName.Properties.Settings`. |
+| `serializeAs` | Required. The format to use for serializing the value to text. Valid values are:
- `string`. The value is serialized as a string using a .
- `xml`. The value is serialized using XML serialization.
- `binary`. The value is serialized as text-encoded binary using binary serialization.
- `custom`. The settings provider has inherent knowledge of this setting and serializes and de-serializes it. |
-Add the names for settings that you create in **\** as entries under the **\** element at the top of the file. For example:
+Add the names for settings that you create in `` as entries under the `` element at the top of the file. For example:
```xml
@@ -61,7 +61,7 @@ Add the names for settings that you create in **\** as entr
```
-## \ element
+## `` element
This element contains the value of a setting.
diff --git a/docs/framework/configure-apps/file-schema/appsettings/add-element-for-appsettings.md b/docs/framework/configure-apps/file-schema/appsettings/add-element-for-appsettings.md
index ac48607c925c9..567d5dc5ac878 100644
--- a/docs/framework/configure-apps/file-schema/appsettings/add-element-for-appsettings.md
+++ b/docs/framework/configure-apps/file-schema/appsettings/add-element-for-appsettings.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/appSettings/add"
-helpviewer_keywords:
+helpviewer_keywords:
- "add Element"
- " Element"
ms.assetid: 8734efdc-00f6-4a65-bba6-084c5bc65246
---
-# \ element for \
+# `` element for \
Adds a custom application setting.
@@ -29,8 +29,8 @@ Adds a custom application setting.
| | Description |
| --------- | ----------- |
-| **key** | Required attribute.
Specifies the name of the key to add. |
-| **value** | Required attribute.
Specifies the value of the key to add. |
+| `key` | Required attribute.
Specifies the name of the key to add. |
+| `value` | Required attribute.
Specifies the value of the key to add. |
## Parent element
diff --git a/docs/framework/configure-apps/file-schema/appsettings/appsettings-element-for-configuration.md b/docs/framework/configure-apps/file-schema/appsettings/appsettings-element-for-configuration.md
index 3b9d8df0ede22..4f69e3b78abd8 100644
--- a/docs/framework/configure-apps/file-schema/appsettings/appsettings-element-for-configuration.md
+++ b/docs/framework/configure-apps/file-schema/appsettings/appsettings-element-for-configuration.md
@@ -9,7 +9,7 @@ helpviewer_keywords:
- " Element"
ms.assetid: 39694cc4-6b84-45a6-9329-385a0d8b48fe
---
-# \ element for \
+# `` element for \
Contains custom application settings. This is a predefined configuration section provided by the .NET Framework.
@@ -28,13 +28,13 @@ Contains custom application settings. This is a predefined configuration section
| | Description |
| --------- | ----------- |
-| **file** | Optional attribute.
Specifies a relative path to an external file containing custom application configuration settings. The specified file contains the same kind of settings that are specified in the **\**, **\**, and **\** elements and uses the same key/value pair format as those elements.
The path specified is relative to the main configuration file. For a Windows Forms application, this is the binary folder (such as */bin/debug*), not the location of the application configuration file. For Web Forms applications, the path is relative to the application root, where the *web.config* file is located.
The runtime ignores the attribute if the specified file can't be found. |
+| `file` | Optional attribute.
Specifies a relative path to an external file containing custom application configuration settings. The specified file contains the same kind of settings that are specified in the ``, ``, and `` elements and uses the same key/value pair format as those elements.
The path specified is relative to the main configuration file. For a Windows Forms application, this is the binary folder (such as */bin/debug*), not the location of the application configuration file. For Web Forms applications, the path is relative to the application root, where the *web.config* file is located.
The runtime ignores the attribute if the specified file can't be found. |
## Parent element
| | Description |
| --- | ----------- |
-| [**\** Element](../configuration-element.md) | The root element in every configuration file used by the common language runtime and .NET Framework applications. |
+| [`` Element](../configuration-element.md) | The root element in every configuration file used by the common language runtime and .NET Framework applications. |
## Child elements
@@ -46,11 +46,11 @@ Contains custom application settings. This is a predefined configuration section
## Remarks
-The **\** element stores custom application configuration information, such as database connection strings, file paths, XML Web service URLs, or any other custom configuration information for an application. The key/value pairs specified in the **\** element are accessed in code using the class.
+The `` element stores custom application configuration information, such as database connection strings, file paths, XML Web service URLs, or any other custom configuration information for an application. The key/value pairs specified in the `` element are accessed in code using the class.
-You can use the **file** attribute in the **\** element of the *Web.config* and application configuration files. This attribute specifies a configuration file that provides additional settings or overrides the settings specified in the **\** element. The **file** attribute can be used in source control team development scenarios, such as when a user wants to override the project settings specified in an application configuration file.
+You can use the `file` attribute in the `` element of the *Web.config* and application configuration files. This attribute specifies a configuration file that provides additional settings or overrides the settings specified in the `` element. The `file` attribute can be used in source control team development scenarios, such as when a user wants to override the project settings specified in an application configuration file.
-Configuration files specified by the **file** attribute must have a root node of **\** rather than **\**.
+Configuration files specified by the `file` attribute must have a root node of `` rather than ``.
## Example
diff --git a/docs/framework/configure-apps/file-schema/appsettings/clear-element-for-appsettings.md b/docs/framework/configure-apps/file-schema/appsettings/clear-element-for-appsettings.md
index b2f951e16a6af..1dc4dd2d21122 100644
--- a/docs/framework/configure-apps/file-schema/appsettings/clear-element-for-appsettings.md
+++ b/docs/framework/configure-apps/file-schema/appsettings/clear-element-for-appsettings.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/appSettings/clear"
-helpviewer_keywords:
+helpviewer_keywords:
- "clear Element"
- " Element"
ms.assetid: 6d18c7be-27db-438b-8fb5-765d396b0b7b
---
-# \ element for \
+# `` element for \
Clears custom application settings.
diff --git a/docs/framework/configure-apps/file-schema/appsettings/index.md b/docs/framework/configure-apps/file-schema/appsettings/index.md
index a5f4221f902f6..d7c359a3b4f9c 100644
--- a/docs/framework/configure-apps/file-schema/appsettings/index.md
+++ b/docs/framework/configure-apps/file-schema/appsettings/index.md
@@ -2,7 +2,7 @@
description: "Learn more about: App Settings schema"
title: "App Settings schema"
ms.date: "05/01/2017"
-helpviewer_keywords:
+helpviewer_keywords:
- "schema app settings"
- "app settings, schema [Windows Forms]"
- "Windows Forms, app settings schema"
@@ -21,24 +21,24 @@ Contains custom application settings, such as file paths, XML Web service URLs,
| Element | Description |
| ------- | ----------- |
-| [**\**](appsettings-element-for-configuration.md) | Contains **\**, **\**, and **\** tags to control application settings. Has an optional **file** attribute. |
-| [**\**](add-element-for-appsettings.md) | Defines a setting. Child of **\**. Requires **key** and **value** attributes. |
-| [**\**](clear-element-for-appsettings.md) | Clears all settings. Child of **\**. Has no attributes. |
-| [**\**](remove-element-for-appsettings.md) | Removes a setting. Child of **\**. Requires a **key** attribute. |
+| [**\**](appsettings-element-for-configuration.md) | Contains ``, ``, and `` tags to control application settings. Has an optional `file` attribute. |
+| [**\**](add-element-for-appsettings.md) | Defines a setting. Child of ``. Requires `key` and `value` attributes. |
+| [**\**](clear-element-for-appsettings.md) | Clears all settings. Child of ``. Has no attributes. |
+| [**\**](remove-element-for-appsettings.md) | Removes a setting. Child of ``. Requires a `key` attribute. |
-## \ element
+## `` element
-This element contains **\**, **\