diff --git a/.github/policies/close-issues.yml b/.github/policies/close-issues.yml
index 467f33ec20d03..ac54f6004088a 100644
--- a/.github/policies/close-issues.yml
+++ b/.github/policies/close-issues.yml
@@ -47,9 +47,51 @@ configuration:
- description: Close learn template issues with empty descriptions. (spam)
if:
- payloadType: Issues
- - bodyContains:
- pattern: '### Description[\n\r]+\[Enter feedback here\][\n\r]+###'
- isRegex: true
+ - or:
+ - bodyContains:
+ pattern: '### Description[\n\r]+\[Enter feedback here\][\n\r]+###'
+ isRegex: True
+ - bodyContains:
+ pattern: '### Description[\n\r]+\[Escriba sus comentarios aquí\][\n\r]+###'
+ isRegex: True
+ - bodyContains:
+ pattern: '### Description[\n\r]+\[Tapez vos commentaires ici\][\n\r]+###'
+ isRegex: True
+ - bodyContains:
+ pattern: '### Description[\n\r]+\[Hier Feedback eingeben\][\n\r]+###'
+ isRegex: true
+ - bodyContains:
+ pattern: '### Description[\n\r]+\[Geri bildiriminizi buraya girin\][\n\r]+###'
+ isRegex: True
+ - bodyContains:
+ pattern: '### Description[\n\r]+\[Ketikkan umpan balik di sini\][\n\r]+###'
+ isRegex: True
+ - bodyContains:
+ pattern: '### Description[\n\r]+\[Immetti qui i commenti\][\n\r]+###'
+ isRegex: True
+ - bodyContains:
+ pattern: '### Description[\n\r]+\[Voer hier feedback in\][\n\r]+###'
+ isRegex: True
+ - bodyContains:
+ pattern: '### Description[\n\r]+\[Insira comentários aqui\][\n\r]+###'
+ isRegex: True
+ - bodyContains:
+ pattern: '### Description[\n\r]+\[Введите отзыв здесь\][\n\r]+###'
+ isRegex: True
+ - bodyContains:
+ pattern: '### Description[\n\r]+\[اكتب ملاحظاتك هنا\][\n\r]+###'
+ isRegex: True
+ - bodyContains:
+ pattern: '### Description[\n\r]+\[在此处输入反馈\][\n\r]+###'
+ isRegex: True
+ - bodyContains:
+ pattern: '### Description[\n\r]+\[여기에 피드백 입력\][\n\r]+###'
+ isRegex: True
+ - bodyContains:
+ pattern: '### Description[\n\r]+\[フィードバックをこちらに入力してください\][\n\r]+###'
+ isRegex: True
+ - bodyContains:
+ pattern: '### Description[\n\r]+\[Skriv din feedback här\][\n\r]+###'
then:
- addLabel: 'needs-more-info'
- removeLabel: ':watch: Not Triaged'
diff --git a/docs/ai/quickstarts/includes/ai-templates-azure-openai.md b/docs/ai/quickstarts/includes/ai-templates-azure-openai.md
index f2ca54e35675f..9cd8363c07933 100644
--- a/docs/ai/quickstarts/includes/ai-templates-azure-openai.md
+++ b/docs/ai/quickstarts/includes/ai-templates-azure-openai.md
@@ -53,7 +53,7 @@ After you install the AI app templates, you can use them to create starter apps
1. Create a new app with the `dotnet new` command and the following parameters:
```dotnetcli
- dotnet new aichatweb --framework "net9.0" --AiServiceProvider "azureopenai" --VectorStore "local"
+ dotnet new aichatweb --Framework net9.0 --provider azureopenai --vector-store local
```
The .NET CLI creates a new .NET 9.0 app with the configurations you specified.
diff --git a/docs/ai/quickstarts/includes/ai-templates-github-models.md b/docs/ai/quickstarts/includes/ai-templates-github-models.md
index 72a7d11ddd924..a2a207a89f4e8 100644
--- a/docs/ai/quickstarts/includes/ai-templates-github-models.md
+++ b/docs/ai/quickstarts/includes/ai-templates-github-models.md
@@ -52,7 +52,7 @@ After you install the AI app templates, you can use them to create starter apps
1. Create a new app with the `dotnet new` command and the following parameters:
```dotnetcli
- dotnet new aichatweb --framework net9.0 --AiServiceProvider githubmodels --VectorStore local
+ dotnet new aichatweb --Framework net9.0 --provider githubmodels --vector-store local
```
The .NET CLI creates a new .NET 9.0 app with the configurations you specified.
diff --git a/docs/ai/quickstarts/includes/ai-templates-ollama.md b/docs/ai/quickstarts/includes/ai-templates-ollama.md
index a067e999c8bdc..a6fae197e0241 100644
--- a/docs/ai/quickstarts/includes/ai-templates-ollama.md
+++ b/docs/ai/quickstarts/includes/ai-templates-ollama.md
@@ -53,7 +53,7 @@ After you install the AI app templates, you can use them to create starter apps
1. Create a new app with the `dotnet new` command and the following parameters:
```dotnetcli
- dotnet new aichatweb --framework "net9.0" --AiServiceProvider "ollama" --VectorStore "local"
+ dotnet new aichatweb --Framework net9.0 --provider ollama --vector-store local
```
The .NET CLI creates a new .NET 9.0 app with the configurations you specified.
diff --git a/docs/ai/quickstarts/includes/ai-templates-openai.md b/docs/ai/quickstarts/includes/ai-templates-openai.md
index 5e0baac0473c4..6268b77444ec4 100644
--- a/docs/ai/quickstarts/includes/ai-templates-openai.md
+++ b/docs/ai/quickstarts/includes/ai-templates-openai.md
@@ -53,7 +53,7 @@ After you install the AI app templates, you can use them to create starter apps
1. Create a new app with the `dotnet new` command and the following parameters:
```dotnetcli
- dotnet new aichatweb --framework "net9.0" --AiServiceProvider "openai" --VectorStore "local"
+ dotnet new aichatweb --Framework net9.0 --provider openai --vector-store local
```
The .NET CLI creates a new .NET 9.0 app with the configurations you specified.
diff --git a/docs/architecture/cloud-native/azure-security.md b/docs/architecture/cloud-native/azure-security.md
index 94f25bed2a471..1a696d250aefb 100644
--- a/docs/architecture/cloud-native/azure-security.md
+++ b/docs/architecture/cloud-native/azure-security.md
@@ -45,7 +45,7 @@ As applications become more complicated the number of attack vectors increases a
Penetration testing or "pen testing" involves bringing in external actors to attempt to attack the system. These attackers may be an external consulting company or other developers with good security knowledge from another part of the business. They're given carte blanche to attempt to subvert the system. Frequently, they'll find extensive security holes that need to be patched. Sometimes the attack vector will be something totally unexpected like exploiting a phishing attack against the CEO.
-Azure itself is constantly undergoing attacks from a [team of hackers inside Microsoft](https://azure.microsoft.com/resources/videos/red-vs-blue-internal-security-penetration-testing-of-microsoft-azure/). Over the years, they've been the first to find dozens of potentially catastrophic attack vectors, closing them before they can be exploited externally. The more tempting a target, the more likely that eternal actors will attempt to exploit it and there are a few targets in the world more tempting than Azure.
+Azure itself is constantly undergoing attacks from a team of hackers inside Microsoft. Over the years, they've been the first to find dozens of potentially catastrophic attack vectors, closing them before they can be exploited externally. The more tempting a target, the more likely that external actors will attempt to exploit it, and there are few targets in the world more tempting than Azure.
## Monitoring
@@ -264,7 +264,7 @@ While Cosmos DB doesn't provide for supplying customer encryption keys, there ha
## Keeping secure
-Azure has all the tools necessary to release a highly secure product. However, a chain is only as strong as its weakest link. If the applications deployed on top of Azure aren't developed with a proper security mindset and good security audits, then they become the weak link in the chain. There are many great static analysis tools, encryption libraries, and security practices that can be used to ensure that the software installed on Azure is as secure as Azure itself. Examples include [static analysis tools](https://www.mend.io/sca/), [encryption libraries](https://www.libressl.org/), and [security practices](https://azure.microsoft.com/resources/videos/red-vs-blue-internal-security-penetration-testing-of-microsoft-azure/).
+Azure has all the tools necessary to release a highly secure product. However, a chain is only as strong as its weakest link. If the applications deployed on top of Azure aren't developed with a proper security mindset and good security audits, then they become the weak link in the chain. There are many great static analysis tools, encryption libraries, and security practices that can be used to ensure that the software installed on Azure is as secure as Azure itself. Examples include [static analysis tools](https://www.mend.io/sca/) and [encryption libraries](https://www.libressl.org/).
>[!div class="step-by-step"]
>[Previous](security.md)
diff --git a/docs/architecture/microservices/architect-microservice-container-applications/containerize-monolithic-applications.md b/docs/architecture/microservices/architect-microservice-container-applications/containerize-monolithic-applications.md
index 55c7e522886ec..92040d0892f4a 100644
--- a/docs/architecture/microservices/architect-microservice-container-applications/containerize-monolithic-applications.md
+++ b/docs/architecture/microservices/architect-microservice-container-applications/containerize-monolithic-applications.md
@@ -31,7 +31,7 @@ From an infrastructure perspective, each server can run many applications within
**Figure 4-2**. Monolithic approach: Host running multiple apps, each app running as a container
-Monolithic applications in Microsoft Azure can be deployed using dedicated VMs for each instance. Additionally, using [Azure virtual machine scale sets](https://azure.microsoft.com/documentation/services/virtual-machine-scale-sets/), you can easily scale the VMs. [Azure App Service](https://azure.microsoft.com/services/app-service/) can also run monolithic applications and easily scale instances without requiring you to manage the VMs. Since 2016, Azure App Services can run single instances of Docker containers as well, simplifying deployment.
+Monolithic applications in Microsoft Azure can be deployed using dedicated VMs for each instance. Additionally, using [Azure virtual machine scale sets](/azure/virtual-machine-scale-sets/overview), you can easily scale the VMs. [Azure App Service](https://azure.microsoft.com/services/app-service/) can also run monolithic applications and easily scale instances without requiring you to manage the VMs. Since 2016, Azure App Services can run single instances of Docker containers as well, simplifying deployment.
As a QA environment or a limited production environment, you can deploy multiple Docker host VMs and balance them using the Azure balancer, as shown in Figure 4-3. This lets you manage scaling with a coarse-grain approach, because the whole application lives within a single container.
diff --git a/docs/architecture/microservices/architect-microservice-container-applications/docker-application-state-data.md b/docs/architecture/microservices/architect-microservice-container-applications/docker-application-state-data.md
index d10612cdd4a85..379cd7e13c0cc 100644
--- a/docs/architecture/microservices/architect-microservice-container-applications/docker-application-state-data.md
+++ b/docs/architecture/microservices/architect-microservice-container-applications/docker-application-state-data.md
@@ -21,7 +21,7 @@ From the Docker host, as [Docker Volumes](https://docs.docker.com/engine/admin/v
From remote storage:
-- [Azure Storage](https://azure.microsoft.com/documentation/services/storage/), which provides geo-distributable storage, providing a good long-term persistence solution for containers.
+- [Azure Storage](/azure/storage/common/storage-introduction), which provides geo-distributable storage, providing a good long-term persistence solution for containers.
- Remote relational databases like [Azure SQL Database](https://azure.microsoft.com/services/sql-database/) or NoSQL databases like [Azure Cosmos DB](/azure/cosmos-db/introduction), or cache services like [Redis](https://redis.io/).
diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md
index f7c02a8230b09..5149dc538023e 100644
--- a/docs/azure/includes/dotnet-all.md
+++ b/docs/azure/includes/dotnet-all.md
@@ -165,7 +165,7 @@
| Provisioning - Service Bus | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Provisioning.ServiceBus/1.0.0) | [docs](/dotnet/api/overview/azure/Provisioning.ServiceBus-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ServiceBus_1.0.0/sdk/provisioning/Azure.Provisioning.ServiceBus/) |
| Provisioning - SignalR | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Provisioning.SignalR/1.0.0) | [docs](/dotnet/api/overview/azure/Provisioning.SignalR-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.SignalR_1.0.0/sdk/provisioning/Azure.Provisioning.SignalR/) |
| Provisioning - SQL | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Provisioning.Sql/1.0.0) | [docs](/dotnet/api/overview/azure/Provisioning.Sql-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Sql_1.0.0/sdk/provisioning/Azure.Provisioning.Sql/) |
-| Provisioning - Storage | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Provisioning.Storage/1.0.0) | [docs](/dotnet/api/overview/azure/Provisioning.Storage-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Storage_1.0.0/sdk/provisioning/Azure.Provisioning.Storage/) |
+| Provisioning - Storage | NuGet [1.0.1](https://www.nuget.org/packages/Azure.Provisioning.Storage/1.0.1) | [docs](/dotnet/api/overview/azure/Provisioning.Storage-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Storage_1.0.1/sdk/provisioning/Azure.Provisioning.Storage/) |
| Provisioning - WebPubSub | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Provisioning.WebPubSub/1.0.0) | [docs](/dotnet/api/overview/azure/Provisioning.WebPubSub-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.WebPubSub_1.0.0/sdk/provisioning/Azure.Provisioning.WebPubSub/) |
| Resource Management - Advisor | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.Advisor/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.Advisor-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.Advisor_1.0.0-beta.5/sdk/advisor/Azure.ResourceManager.Advisor/) |
| Resource Management - Agricultureplatform | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.AgriculturePlatform/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.AgriculturePlatform-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.AgriculturePlatform_1.0.0-beta.1/sdk/agricultureplatform/Azure.ResourceManager.AgriculturePlatform/) |
@@ -177,7 +177,7 @@
| Resource Management - App Compliance Automation | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.AppComplianceAutomation/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.AppComplianceAutomation-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppComplianceAutomation_1.0.1/sdk/appcomplianceautomation/Azure.ResourceManager.AppComplianceAutomation/) |
| Resource Management - App Configuration | NuGet [1.4.0](https://www.nuget.org/packages/Azure.ResourceManager.AppConfiguration/1.4.0) | [docs](/dotnet/api/overview/azure/ResourceManager.AppConfiguration-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppConfiguration_1.4.0/sdk/appconfiguration/Azure.ResourceManager.AppConfiguration/) |
| Resource Management - App Platform | NuGet [1.1.2](https://www.nuget.org/packages/Azure.ResourceManager.AppPlatform/1.1.2) | [docs](/dotnet/api/overview/azure/ResourceManager.AppPlatform-readme) | GitHub [1.1.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppPlatform_1.1.2/sdk/appplatform/Azure.ResourceManager.AppPlatform/) |
-| Resource Management - App Service | NuGet [1.3.0](https://www.nuget.org/packages/Azure.ResourceManager.AppService/1.3.0) | [docs](/dotnet/api/overview/azure/ResourceManager.AppService-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppService_1.3.0/sdk/websites/Azure.ResourceManager.AppService/) |
+| Resource Management - App Service | NuGet [1.4.0](https://www.nuget.org/packages/Azure.ResourceManager.AppService/1.4.0) | [docs](/dotnet/api/overview/azure/ResourceManager.AppService-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppService_1.4.0/sdk/websites/Azure.ResourceManager.AppService/) |
| Resource Management - Application Insights | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.ApplicationInsights/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ApplicationInsights-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ApplicationInsights_1.0.1/sdk/applicationinsights/Azure.ResourceManager.ApplicationInsights/) |
| Resource Management - Arizeaiobservabilityeval | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ArizeAIObservabilityEval/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ArizeAIObservabilityEval-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.ArizeAIObservabilityEval_1.0.0-beta.1/sdk/arizeaiobservabilityeval/Azure.ResourceManager.ArizeAIObservabilityEval/) |
| Resource Management - Astro | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.Astro/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Astro-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.Astro_1.0.0-beta.2/sdk/astronomer/Azure.ResourceManager.Astro/) |
@@ -195,7 +195,7 @@
| Resource Management - Bot Service | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.BotService/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.BotService-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.BotService_1.1.1/sdk/botservice/Azure.ResourceManager.BotService/) |
| Resource Management - Carbonoptimization | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.CarbonOptimization/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.CarbonOptimization-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.CarbonOptimization_1.0.0-beta.1/sdk/carbon/Azure.ResourceManager.CarbonOptimization/) |
| Resource Management - Change Analysis | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ChangeAnalysis/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ChangeAnalysis-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ChangeAnalysis_1.1.1/sdk/changeanalysis/Azure.ResourceManager.ChangeAnalysis/) |
-| Resource Management - Chaos | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.Chaos/1.0.0)
NuGet [1.1.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.Chaos/1.1.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.Chaos-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Chaos_1.0.0/sdk/chaos/Azure.ResourceManager.Chaos/)
GitHub [1.1.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Chaos_1.1.0-beta.3/sdk/chaos/Azure.ResourceManager.Chaos/) |
+| Resource Management - Chaos | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.Chaos/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Chaos-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Chaos_1.1.0/sdk/chaos/Azure.ResourceManager.Chaos/) |
| Resource Management - Cognitive Services | NuGet [1.4.0](https://www.nuget.org/packages/Azure.ResourceManager.CognitiveServices/1.4.0) | [docs](/dotnet/api/overview/azure/ResourceManager.CognitiveServices-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CognitiveServices_1.4.0/sdk/cognitiveservices/Azure.ResourceManager.CognitiveServices/) |
| Resource Management - Communication | NuGet [1.2.1](https://www.nuget.org/packages/Azure.ResourceManager.Communication/1.2.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Communication-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Communication_1.2.1/sdk/communication/Azure.ResourceManager.Communication/) |
| Resource Management - Compute | NuGet [1.9.0](https://www.nuget.org/packages/Azure.ResourceManager.Compute/1.9.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Compute-readme) | GitHub [1.9.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Compute_1.9.0/sdk/compute/Azure.ResourceManager.Compute/) |
@@ -205,7 +205,7 @@
| Resource Management - Confluent | NuGet [1.2.1](https://www.nuget.org/packages/Azure.ResourceManager.Confluent/1.2.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Confluent-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Confluent_1.2.1/sdk/confluent/Azure.ResourceManager.Confluent/) |
| Resource Management - Connected VMware vSphere | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ConnectedVMwarevSphere/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ConnectedVMwarevSphere-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ConnectedVMwarevSphere_1.1.1/sdk/connectedvmwarevsphere/Azure.ResourceManager.ConnectedVMwarevSphere/) |
| Resource Management - Consumption | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.Consumption/1.0.1)
NuGet [1.1.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.Consumption/1.1.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.Consumption-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Consumption_1.0.1/sdk/consumption/Azure.ResourceManager.Consumption/)
GitHub [1.1.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Consumption_1.1.0-beta.3/sdk/consumption/Azure.ResourceManager.Consumption/) |
-| Resource Management - Container Apps | NuGet [1.3.0](https://www.nuget.org/packages/Azure.ResourceManager.AppContainers/1.3.0)
NuGet [1.4.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.AppContainers/1.4.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.AppContainers-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppContainers_1.3.0/sdk/containerapps/Azure.ResourceManager.AppContainers/)
GitHub [1.4.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppContainers_1.4.0-beta.1/sdk/containerapps/Azure.ResourceManager.AppContainers/) |
+| Resource Management - Container Apps | NuGet [1.4.0](https://www.nuget.org/packages/Azure.ResourceManager.AppContainers/1.4.0) | [docs](/dotnet/api/overview/azure/ResourceManager.AppContainers-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppContainers_1.4.0/sdk/containerapps/Azure.ResourceManager.AppContainers/) |
| Resource Management - Container Instances | NuGet [1.2.1](https://www.nuget.org/packages/Azure.ResourceManager.ContainerInstance/1.2.1)
NuGet [1.3.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ContainerInstance/1.3.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerInstance-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerInstance_1.2.1/sdk/containerinstance/Azure.ResourceManager.ContainerInstance/)
GitHub [1.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerInstance_1.3.0-beta.1/sdk/containerinstance/Azure.ResourceManager.ContainerInstance/) |
| Resource Management - Container Orchestrator Runtime | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ContainerOrchestratorRuntime/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerOrchestratorRuntime-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.ContainerOrchestratorRuntime_1.0.0-beta.1/sdk/containerorchestratorruntime/Azure.ResourceManager.ContainerOrchestratorRuntime/) |
| Resource Management - Container Registry | NuGet [1.3.0](https://www.nuget.org/packages/Azure.ResourceManager.ContainerRegistry/1.3.0) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerRegistry-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerRegistry_1.3.0/sdk/containerregistry/Azure.ResourceManager.ContainerRegistry/) |
@@ -301,14 +301,15 @@
| Resource Management - Mongo Cluster | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.MongoCluster/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.MongoCluster-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.MongoCluster_1.0.0-beta.1/sdk/mongocluster/Azure.ResourceManager.MongoCluster/) |
| Resource Management - Monitor | NuGet [1.3.1](https://www.nuget.org/packages/Azure.ResourceManager.Monitor/1.3.1)
NuGet [1.4.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.Monitor/1.4.0-beta.3) | [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.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Monitor_1.4.0-beta.3/sdk/monitor/Azure.ResourceManager.Monitor/) |
| Resource Management - MySQL | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.MySql/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.MySql-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.MySql_1.1.1/sdk/mysql/Azure.ResourceManager.MySql/) |
-| Resource Management - Neon Postgres | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.NeonPostgres/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.NeonPostgres-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.NeonPostgres_1.0.0-beta.2/sdk/neonpostgres/Azure.ResourceManager.NeonPostgres/) |
+| 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.10.0](https://www.nuget.org/packages/Azure.ResourceManager.NetApp/1.10.0) | [docs](/dotnet/api/overview/azure/ResourceManager.NetApp-readme) | GitHub [1.10.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetApp_1.10.0/sdk/netapp/Azure.ResourceManager.NetApp/) |
-| Resource Management - Network | NuGet [1.10.0](https://www.nuget.org/packages/Azure.ResourceManager.Network/1.10.0)
NuGet [1.11.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.Network/1.11.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Network-readme) | GitHub [1.10.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Network_1.10.0/sdk/network/Azure.ResourceManager.Network/)
GitHub [1.11.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Network_1.11.0-beta.1/sdk/network/Azure.ResourceManager.Network/) |
+| Resource Management - Network | NuGet [1.10.0](https://www.nuget.org/packages/Azure.ResourceManager.Network/1.10.0)
NuGet [1.11.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.Network/1.11.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Network-readme) | GitHub [1.10.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Network_1.10.0/sdk/network/Azure.ResourceManager.Network/)
GitHub [1.11.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Network_1.11.0-beta.2/sdk/network/Azure.ResourceManager.Network/) |
| Resource Management - Network Cloud | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.NetworkCloud/1.1.0)
NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.NetworkCloud/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.NetworkCloud-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetworkCloud_1.1.0/sdk/networkcloud/Azure.ResourceManager.NetworkCloud/)
GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetworkCloud_1.2.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/) |
| Resource Management - New Relic Observability | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.NewRelicObservability/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.NewRelicObservability-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NewRelicObservability_1.1.1/sdk/newrelicobservability/Azure.ResourceManager.NewRelicObservability/) |
| Resource Management - Nginx | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.Nginx/1.0.0)
NuGet [1.1.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.Nginx/1.1.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.Nginx-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Nginx_1.0.0/sdk/nginx/Azure.ResourceManager.Nginx/)
GitHub [1.1.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Nginx_1.1.0-beta.3/sdk/nginx/Azure.ResourceManager.Nginx/) |
| Resource Management - Notification Hubs | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.NotificationHubs/1.1.1)
NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.NotificationHubs/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.NotificationHubs-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NotificationHubs_1.1.1/sdk/notificationhubs/Azure.ResourceManager.NotificationHubs/)
GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NotificationHubs_1.2.0-beta.2/sdk/notificationhubs/Azure.ResourceManager.NotificationHubs/) |
+| Resource Management - Onlineexperimentation | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.OnlineExperimentation/1.0.0-beta.1) | | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.OnlineExperimentation_1.0.0-beta.1/sdk/onlineexperimentation/Azure.ResourceManager.OnlineExperimentation/) |
| Resource Management - Oracle Database | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.OracleDatabase/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.OracleDatabase-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.OracleDatabase_1.0.1/sdk/oracle/Azure.ResourceManager.OracleDatabase/) |
| Resource Management - Orbital | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Orbital/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Orbital-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Orbital_1.1.1/sdk/orbital/Azure.ResourceManager.Orbital/) |
| Resource Management - Palo Alto Networks - Next Generation Firewall | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.PaloAltoNetworks.Ngfw/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.PaloAltoNetworks.Ngfw-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.PaloAltoNetworks.Ngfw_1.1.1/sdk/paloaltonetworks.ngfw/Azure.ResourceManager.PaloAltoNetworks.Ngfw/) |
@@ -321,6 +322,7 @@
| Resource Management - Power BI Dedicated | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.PowerBIDedicated/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.PowerBIDedicated-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.PowerBIDedicated_1.0.0-beta.5/sdk/powerbidedicated/Azure.ResourceManager.PowerBIDedicated/) |
| Resource Management - Private DNS | NuGet [1.2.1](https://www.nuget.org/packages/Azure.ResourceManager.PrivateDns/1.2.1) | [docs](/dotnet/api/overview/azure/ResourceManager.PrivateDns-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.PrivateDns_1.2.1/sdk/privatedns/Azure.ResourceManager.PrivateDns/) |
| Resource Management - Provider Hub | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ProviderHub/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ProviderHub-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ProviderHub_1.1.1/sdk/providerhub/Azure.ResourceManager.ProviderHub/) |
+| Resource Management - Purestorageblock | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.PureStorageBlock/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.PureStorageBlock-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.PureStorageBlock_1.0.0-beta.1/sdk/purestorageblock/Azure.ResourceManager.PureStorageBlock/) |
| Resource Management - Purview | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.Purview/1.1.0)
NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.Purview/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Purview-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Purview_1.1.0/sdk/purview/Azure.ResourceManager.Purview/)
GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Purview_1.2.0-beta.2/sdk/purview/Azure.ResourceManager.Purview/) |
| Resource Management - Quantum | NuGet [1.0.0-beta.6](https://www.nuget.org/packages/Azure.ResourceManager.Quantum/1.0.0-beta.6) | [docs](/dotnet/api/overview/azure/ResourceManager.Quantum-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.Quantum_1.0.0-beta.6/sdk/quantum/Azure.ResourceManager.Quantum/) |
| Resource Management - Qumulo | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Qumulo/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Qumulo-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Qumulo_1.1.1/sdk/qumulo/Azure.ResourceManager.Qumulo/) |
@@ -341,6 +343,7 @@
| 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.9.1](https://www.nuget.org/packages/Azure.ResourceManager.Resources/1.9.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Resources-readme) | GitHub [1.9.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Resources_1.9.1/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/) |
| Resource Management - Security DevOps | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.SecurityDevOps/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.SecurityDevOps-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.SecurityDevOps_1.0.0-beta.5/sdk/securitydevops/Azure.ResourceManager.SecurityDevOps/) |
| Resource Management - Security Insights | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.SecurityInsights/1.1.0)
NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.SecurityInsights/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.SecurityInsights-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SecurityInsights_1.1.0/sdk/securityinsights/Azure.ResourceManager.SecurityInsights/)
GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SecurityInsights_1.2.0-beta.2/sdk/securityinsights/Azure.ResourceManager.SecurityInsights/) |
@@ -552,9 +555,9 @@
| Microsoft.Azure.Functions.Worker.Extensions.ApplicationInsights | NuGet [1.0.0-preview4](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.ApplicationInsights/1.0.0-preview4) | | |
| Microsoft.Azure.Functions.Worker.Extensions.CosmosDB | NuGet [4.12.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.CosmosDB/4.12.0) | | |
| Microsoft.Azure.Functions.Worker.Extensions.EventGrid | NuGet [3.5.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.EventGrid/3.5.0) | | |
-| Microsoft.Azure.Functions.Worker.Extensions.EventHubs | NuGet [6.3.6](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.EventHubs/6.3.6) | | |
+| Microsoft.Azure.Functions.Worker.Extensions.EventHubs | NuGet [6.4.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.EventHubs/6.4.0) | | |
| Microsoft.Azure.Functions.Worker.Extensions.Http | NuGet [3.3.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Http/3.3.0) | | |
-| Microsoft.Azure.Functions.Worker.Extensions.Kafka | NuGet [4.1.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Kafka/4.1.0) | | |
+| Microsoft.Azure.Functions.Worker.Extensions.Kafka | NuGet [4.1.1](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Kafka/4.1.1) | | |
| Microsoft.Azure.Functions.Worker.Extensions.Kusto | NuGet [1.0.11-Preview](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Kusto/1.0.11-Preview) | | |
| Microsoft.Azure.Functions.Worker.Extensions.OpenApi | NuGet [1.4.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.OpenApi/1.4.0)
NuGet [2.0.0-preview2](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.OpenApi/2.0.0-preview2) | | |
| Microsoft.Azure.Functions.Worker.Extensions.RabbitMQ | NuGet [2.0.4](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.RabbitMQ/2.0.4) | | |
@@ -573,7 +576,7 @@
| Microsoft.Azure.Functions.Worker.Grpc | NuGet [2.0.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Grpc/2.0.0) | | |
| Microsoft.Azure.Functions.Worker.ItemTemplates | NuGet [4.0.5086](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.ItemTemplates/4.0.5086) | | |
| Microsoft.Azure.Functions.Worker.ProjectTemplates | NuGet [4.0.5086](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.ProjectTemplates/4.0.5086) | | |
-| Microsoft.Azure.Functions.Worker.Sdk | NuGet [2.0.3](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Sdk/2.0.3) | | |
+| Microsoft.Azure.Functions.Worker.Sdk | NuGet [2.0.4](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Sdk/2.0.4) | | |
| Microsoft.Azure.Functions.Worker.Sdk.Analyzers | NuGet [1.2.2](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Sdk.Analyzers/1.2.2) | | |
| Microsoft.Azure.Functions.Worker.Sdk.Generators | NuGet [1.3.5](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Sdk.Generators/1.3.5) | | |
| Microsoft.Azure.WebJobs.CosmosDb.ChangeProcessor | NuGet [1.0.4](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.CosmosDb.ChangeProcessor/1.0.4) | | |
diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md
index 214a0d36710e9..e193eab357f1f 100644
--- a/docs/azure/includes/dotnet-new.md
+++ b/docs/azure/includes/dotnet-new.md
@@ -170,7 +170,7 @@
| Provisioning - Service Bus | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Provisioning.ServiceBus/1.0.0) | [docs](/dotnet/api/overview/azure/Provisioning.ServiceBus-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ServiceBus_1.0.0/sdk/provisioning/Azure.Provisioning.ServiceBus/) |
| Provisioning - SignalR | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Provisioning.SignalR/1.0.0) | [docs](/dotnet/api/overview/azure/Provisioning.SignalR-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.SignalR_1.0.0/sdk/provisioning/Azure.Provisioning.SignalR/) |
| Provisioning - SQL | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Provisioning.Sql/1.0.0) | [docs](/dotnet/api/overview/azure/Provisioning.Sql-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Sql_1.0.0/sdk/provisioning/Azure.Provisioning.Sql/) |
-| Provisioning - Storage | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Provisioning.Storage/1.0.0) | [docs](/dotnet/api/overview/azure/Provisioning.Storage-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Storage_1.0.0/sdk/provisioning/Azure.Provisioning.Storage/) |
+| Provisioning - Storage | NuGet [1.0.1](https://www.nuget.org/packages/Azure.Provisioning.Storage/1.0.1) | [docs](/dotnet/api/overview/azure/Provisioning.Storage-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Storage_1.0.1/sdk/provisioning/Azure.Provisioning.Storage/) |
| Provisioning - WebPubSub | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Provisioning.WebPubSub/1.0.0) | [docs](/dotnet/api/overview/azure/Provisioning.WebPubSub-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.WebPubSub_1.0.0/sdk/provisioning/Azure.Provisioning.WebPubSub/) |
| Resource Management - Advisor | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.Advisor/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.Advisor-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.Advisor_1.0.0-beta.5/sdk/advisor/Azure.ResourceManager.Advisor/) |
| Resource Management - Agricultureplatform | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.AgriculturePlatform/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.AgriculturePlatform-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.AgriculturePlatform_1.0.0-beta.1/sdk/agricultureplatform/Azure.ResourceManager.AgriculturePlatform/) |
@@ -182,7 +182,7 @@
| Resource Management - App Compliance Automation | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.AppComplianceAutomation/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.AppComplianceAutomation-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppComplianceAutomation_1.0.1/sdk/appcomplianceautomation/Azure.ResourceManager.AppComplianceAutomation/) |
| Resource Management - App Configuration | NuGet [1.4.0](https://www.nuget.org/packages/Azure.ResourceManager.AppConfiguration/1.4.0) | [docs](/dotnet/api/overview/azure/ResourceManager.AppConfiguration-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppConfiguration_1.4.0/sdk/appconfiguration/Azure.ResourceManager.AppConfiguration/) |
| Resource Management - App Platform | NuGet [1.1.2](https://www.nuget.org/packages/Azure.ResourceManager.AppPlatform/1.1.2) | [docs](/dotnet/api/overview/azure/ResourceManager.AppPlatform-readme) | GitHub [1.1.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppPlatform_1.1.2/sdk/appplatform/Azure.ResourceManager.AppPlatform/) |
-| Resource Management - App Service | NuGet [1.3.0](https://www.nuget.org/packages/Azure.ResourceManager.AppService/1.3.0) | [docs](/dotnet/api/overview/azure/ResourceManager.AppService-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppService_1.3.0/sdk/websites/Azure.ResourceManager.AppService/) |
+| Resource Management - App Service | NuGet [1.4.0](https://www.nuget.org/packages/Azure.ResourceManager.AppService/1.4.0) | [docs](/dotnet/api/overview/azure/ResourceManager.AppService-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppService_1.4.0/sdk/websites/Azure.ResourceManager.AppService/) |
| Resource Management - Application Insights | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.ApplicationInsights/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ApplicationInsights-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ApplicationInsights_1.0.1/sdk/applicationinsights/Azure.ResourceManager.ApplicationInsights/) |
| Resource Management - Arc ScVmm | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.ResourceManager.ArcScVmm/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/ResourceManager.ArcScVmm-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ArcScVmm_1.0.0-beta.4/sdk/arc-scvmm/Azure.ResourceManager.ArcScVmm/) |
| Resource Management - Arizeaiobservabilityeval | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ArizeAIObservabilityEval/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ArizeAIObservabilityEval-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.ArizeAIObservabilityEval_1.0.0-beta.1/sdk/arizeaiobservabilityeval/Azure.ResourceManager.ArizeAIObservabilityEval/) |
@@ -201,7 +201,7 @@
| Resource Management - Bot Service | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.BotService/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.BotService-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.BotService_1.1.1/sdk/botservice/Azure.ResourceManager.BotService/) |
| Resource Management - Carbonoptimization | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.CarbonOptimization/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.CarbonOptimization-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.CarbonOptimization_1.0.0-beta.1/sdk/carbon/Azure.ResourceManager.CarbonOptimization/) |
| Resource Management - Change Analysis | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ChangeAnalysis/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ChangeAnalysis-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ChangeAnalysis_1.1.1/sdk/changeanalysis/Azure.ResourceManager.ChangeAnalysis/) |
-| Resource Management - Chaos | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.Chaos/1.0.0)
NuGet [1.1.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.Chaos/1.1.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.Chaos-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Chaos_1.0.0/sdk/chaos/Azure.ResourceManager.Chaos/)
GitHub [1.1.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Chaos_1.1.0-beta.3/sdk/chaos/Azure.ResourceManager.Chaos/) |
+| Resource Management - Chaos | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.Chaos/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Chaos-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Chaos_1.1.0/sdk/chaos/Azure.ResourceManager.Chaos/) |
| Resource Management - Cognitive Services | NuGet [1.4.0](https://www.nuget.org/packages/Azure.ResourceManager.CognitiveServices/1.4.0) | [docs](/dotnet/api/overview/azure/ResourceManager.CognitiveServices-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CognitiveServices_1.4.0/sdk/cognitiveservices/Azure.ResourceManager.CognitiveServices/) |
| Resource Management - Communication | NuGet [1.2.1](https://www.nuget.org/packages/Azure.ResourceManager.Communication/1.2.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Communication-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Communication_1.2.1/sdk/communication/Azure.ResourceManager.Communication/) |
| Resource Management - Compute | NuGet [1.9.0](https://www.nuget.org/packages/Azure.ResourceManager.Compute/1.9.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Compute-readme) | GitHub [1.9.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Compute_1.9.0/sdk/compute/Azure.ResourceManager.Compute/) |
@@ -211,7 +211,7 @@
| Resource Management - Confluent | NuGet [1.2.1](https://www.nuget.org/packages/Azure.ResourceManager.Confluent/1.2.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Confluent-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Confluent_1.2.1/sdk/confluent/Azure.ResourceManager.Confluent/) |
| Resource Management - Connected VMware vSphere | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ConnectedVMwarevSphere/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ConnectedVMwarevSphere-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ConnectedVMwarevSphere_1.1.1/sdk/connectedvmwarevsphere/Azure.ResourceManager.ConnectedVMwarevSphere/) |
| Resource Management - Consumption | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.Consumption/1.0.1)
NuGet [1.1.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.Consumption/1.1.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.Consumption-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Consumption_1.0.1/sdk/consumption/Azure.ResourceManager.Consumption/)
GitHub [1.1.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Consumption_1.1.0-beta.3/sdk/consumption/Azure.ResourceManager.Consumption/) |
-| Resource Management - Container Apps | NuGet [1.3.0](https://www.nuget.org/packages/Azure.ResourceManager.AppContainers/1.3.0)
NuGet [1.4.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.AppContainers/1.4.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.AppContainers-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppContainers_1.3.0/sdk/containerapps/Azure.ResourceManager.AppContainers/)
GitHub [1.4.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppContainers_1.4.0-beta.1/sdk/containerapps/Azure.ResourceManager.AppContainers/) |
+| Resource Management - Container Apps | NuGet [1.4.0](https://www.nuget.org/packages/Azure.ResourceManager.AppContainers/1.4.0) | [docs](/dotnet/api/overview/azure/ResourceManager.AppContainers-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppContainers_1.4.0/sdk/containerapps/Azure.ResourceManager.AppContainers/) |
| Resource Management - Container Instances | NuGet [1.2.1](https://www.nuget.org/packages/Azure.ResourceManager.ContainerInstance/1.2.1)
NuGet [1.3.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ContainerInstance/1.3.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerInstance-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerInstance_1.2.1/sdk/containerinstance/Azure.ResourceManager.ContainerInstance/)
GitHub [1.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerInstance_1.3.0-beta.1/sdk/containerinstance/Azure.ResourceManager.ContainerInstance/) |
| Resource Management - Container Orchestrator Runtime | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ContainerOrchestratorRuntime/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerOrchestratorRuntime-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.ContainerOrchestratorRuntime_1.0.0-beta.1/sdk/containerorchestratorruntime/Azure.ResourceManager.ContainerOrchestratorRuntime/) |
| Resource Management - Container Registry | NuGet [1.3.0](https://www.nuget.org/packages/Azure.ResourceManager.ContainerRegistry/1.3.0) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerRegistry-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerRegistry_1.3.0/sdk/containerregistry/Azure.ResourceManager.ContainerRegistry/) |
@@ -308,15 +308,16 @@
| Resource Management - Mongo Cluster | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.MongoCluster/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.MongoCluster-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.MongoCluster_1.0.0-beta.1/sdk/mongocluster/Azure.ResourceManager.MongoCluster/) |
| Resource Management - Monitor | NuGet [1.3.1](https://www.nuget.org/packages/Azure.ResourceManager.Monitor/1.3.1)
NuGet [1.4.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.Monitor/1.4.0-beta.3) | [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.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Monitor_1.4.0-beta.3/sdk/monitor/Azure.ResourceManager.Monitor/) |
| Resource Management - MySQL | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.MySql/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.MySql-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.MySql_1.1.1/sdk/mysql/Azure.ResourceManager.MySql/) |
-| Resource Management - Neon Postgres | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.NeonPostgres/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.NeonPostgres-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.NeonPostgres_1.0.0-beta.2/sdk/neonpostgres/Azure.ResourceManager.NeonPostgres/) |
+| 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.10.0](https://www.nuget.org/packages/Azure.ResourceManager.NetApp/1.10.0) | [docs](/dotnet/api/overview/azure/ResourceManager.NetApp-readme) | GitHub [1.10.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetApp_1.10.0/sdk/netapp/Azure.ResourceManager.NetApp/) |
-| Resource Management - Network | NuGet [1.10.0](https://www.nuget.org/packages/Azure.ResourceManager.Network/1.10.0)
NuGet [1.11.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.Network/1.11.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Network-readme) | GitHub [1.10.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Network_1.10.0/sdk/network/Azure.ResourceManager.Network/)
GitHub [1.11.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Network_1.11.0-beta.1/sdk/network/Azure.ResourceManager.Network/) |
+| Resource Management - Network | NuGet [1.10.0](https://www.nuget.org/packages/Azure.ResourceManager.Network/1.10.0)
NuGet [1.11.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.Network/1.11.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Network-readme) | GitHub [1.10.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Network_1.10.0/sdk/network/Azure.ResourceManager.Network/)
GitHub [1.11.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Network_1.11.0-beta.2/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.1.0](https://www.nuget.org/packages/Azure.ResourceManager.NetworkCloud/1.1.0)
NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.NetworkCloud/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.NetworkCloud-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetworkCloud_1.1.0/sdk/networkcloud/Azure.ResourceManager.NetworkCloud/)
GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetworkCloud_1.2.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/) |
| Resource Management - New Relic Observability | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.NewRelicObservability/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.NewRelicObservability-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NewRelicObservability_1.1.1/sdk/newrelicobservability/Azure.ResourceManager.NewRelicObservability/) |
| Resource Management - Nginx | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.Nginx/1.0.0)
NuGet [1.1.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.Nginx/1.1.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.Nginx-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Nginx_1.0.0/sdk/nginx/Azure.ResourceManager.Nginx/)
GitHub [1.1.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Nginx_1.1.0-beta.3/sdk/nginx/Azure.ResourceManager.Nginx/) |
| Resource Management - Notification Hubs | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.NotificationHubs/1.1.1)
NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.NotificationHubs/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.NotificationHubs-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NotificationHubs_1.1.1/sdk/notificationhubs/Azure.ResourceManager.NotificationHubs/)
GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NotificationHubs_1.2.0-beta.2/sdk/notificationhubs/Azure.ResourceManager.NotificationHubs/) |
+| Resource Management - Onlineexperimentation | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.OnlineExperimentation/1.0.0-beta.1) | | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.OnlineExperimentation_1.0.0-beta.1/sdk/onlineexperimentation/Azure.ResourceManager.OnlineExperimentation/) |
| Resource Management - Oracle Database | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.OracleDatabase/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.OracleDatabase-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.OracleDatabase_1.0.1/sdk/oracle/Azure.ResourceManager.OracleDatabase/) |
| Resource Management - Orbital | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Orbital/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Orbital-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Orbital_1.1.1/sdk/orbital/Azure.ResourceManager.Orbital/) |
| Resource Management - Palo Alto Networks - Next Generation Firewall | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.PaloAltoNetworks.Ngfw/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.PaloAltoNetworks.Ngfw-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.PaloAltoNetworks.Ngfw_1.1.1/sdk/paloaltonetworks.ngfw/Azure.ResourceManager.PaloAltoNetworks.Ngfw/) |
@@ -329,6 +330,7 @@
| Resource Management - Power BI Dedicated | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.PowerBIDedicated/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.PowerBIDedicated-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.PowerBIDedicated_1.0.0-beta.5/sdk/powerbidedicated/Azure.ResourceManager.PowerBIDedicated/) |
| Resource Management - Private DNS | NuGet [1.2.1](https://www.nuget.org/packages/Azure.ResourceManager.PrivateDns/1.2.1) | [docs](/dotnet/api/overview/azure/ResourceManager.PrivateDns-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.PrivateDns_1.2.1/sdk/privatedns/Azure.ResourceManager.PrivateDns/) |
| Resource Management - Provider Hub | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ProviderHub/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ProviderHub-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ProviderHub_1.1.1/sdk/providerhub/Azure.ResourceManager.ProviderHub/) |
+| Resource Management - Purestorageblock | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.PureStorageBlock/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.PureStorageBlock-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.PureStorageBlock_1.0.0-beta.1/sdk/purestorageblock/Azure.ResourceManager.PureStorageBlock/) |
| Resource Management - Purview | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.Purview/1.1.0)
NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.Purview/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Purview-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Purview_1.1.0/sdk/purview/Azure.ResourceManager.Purview/)
GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Purview_1.2.0-beta.2/sdk/purview/Azure.ResourceManager.Purview/) |
| Resource Management - Quantum | NuGet [1.0.0-beta.6](https://www.nuget.org/packages/Azure.ResourceManager.Quantum/1.0.0-beta.6) | [docs](/dotnet/api/overview/azure/ResourceManager.Quantum-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.Quantum_1.0.0-beta.6/sdk/quantum/Azure.ResourceManager.Quantum/) |
| Resource Management - Qumulo | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Qumulo/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Qumulo-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Qumulo_1.1.1/sdk/qumulo/Azure.ResourceManager.Qumulo/) |
@@ -349,6 +351,7 @@
| 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.9.1](https://www.nuget.org/packages/Azure.ResourceManager.Resources/1.9.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Resources-readme) | GitHub [1.9.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Resources_1.9.1/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/) |
| Resource Management - Security DevOps | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.SecurityDevOps/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.SecurityDevOps-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.SecurityDevOps_1.0.0-beta.5/sdk/securitydevops/Azure.ResourceManager.SecurityDevOps/) |
| Resource Management - Security Insights | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.SecurityInsights/1.1.0)
NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.SecurityInsights/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.SecurityInsights-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SecurityInsights_1.1.0/sdk/securityinsights/Azure.ResourceManager.SecurityInsights/)
GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SecurityInsights_1.2.0-beta.2/sdk/securityinsights/Azure.ResourceManager.SecurityInsights/) |
diff --git a/docs/core/compatibility/extensions/10.0/provideraliasattribute-moved-assembly.md b/docs/core/compatibility/extensions/10.0/provideraliasattribute-moved-assembly.md
index 320dc17c2e89d..c33f4f2876698 100644
--- a/docs/core/compatibility/extensions/10.0/provideraliasattribute-moved-assembly.md
+++ b/docs/core/compatibility/extensions/10.0/provideraliasattribute-moved-assembly.md
@@ -2,6 +2,7 @@
title: "Breaking change: ProviderAliasAttribute moved to Microsoft.Extensions.Logging.Abstractions assembly"
description: Learn about the breaking change in .NET 10 where the ProviderAliasAttribute class moved from the Microsoft.Extensions.Logging assembly to the Microsoft.Extensions.Logging.Abstractions assembly.
ms.date: 05/19/2025
+ai-usage: ai-assisted
---
# ProviderAliasAttribute moved to Microsoft.Extensions.Logging.Abstractions
diff --git a/docs/core/deploying/native-aot/cross-compile.md b/docs/core/deploying/native-aot/cross-compile.md
index 5d627af4a167d..07bf01b93596a 100644
--- a/docs/core/deploying/native-aot/cross-compile.md
+++ b/docs/core/deploying/native-aot/cross-compile.md
@@ -9,7 +9,7 @@ ms.custom: linux-related-content
# Cross-compilation
-Cross-compilation is a process of creating executable code for a platform other than the one on which the compiler is running. The platform difference might be a different OS or a different architecture. For instance, compiling for Windows from Linux, or for Arm64 from x64. On Linux, the difference can also be between the standard C library implementations - glibc (e.g. Ubuntu Linux) or musl (e.g. Alpine Linux).
+Cross-compilation is a process of creating executable code for a platform other than the one on which the compiler is running. The platform difference might be a different OS or a different architecture. For instance, compiling for Windows from Linux, or for Arm64 from x64. On Linux, the difference can also be between the standard C library implementations - glibc (for example, Ubuntu Linux) or musl (for example, Alpine Linux).
Native AOT uses platform tools (linkers) to link platform libraries (static and dynamic) together with AOT-compiled managed code into the final executable file. The availability of cross-linkers and static/dynamic libraries for the target system limits the OS/architecture pairs that can cross-compile.
diff --git a/docs/core/diagnostics/dotnet-trace.md b/docs/core/diagnostics/dotnet-trace.md
index 9ebcd9603c6ff..ef53be4dadadb 100644
--- a/docs/core/diagnostics/dotnet-trace.md
+++ b/docs/core/diagnostics/dotnet-trace.md
@@ -53,7 +53,7 @@ The `dotnet-trace` tool:
- **`--version`**
Displays the version of the dotnet-trace utility.
-
+
- **`--duration`**
How long to run the trace. `--duration 00:00:00:05` will run it for 5 seconds.
@@ -100,7 +100,7 @@ dotnet-trace collect [--buffersize ] [--clreventlevel ] [--
Verbosity of CLR events to be emitted.
The following table shows the available event levels.
-
+
| String value | Numeric value |
| --------------- | :-----------: |
| `logalways` | `0` |
@@ -179,18 +179,18 @@ dotnet-trace collect [--buffersize ] [--clreventlevel ] [--
- Linux and macOS - a path to a Unix domain socket such as `/foo/tool1.socket`.
- Windows - a path to a named pipe such as `\\.\pipe\my_diag_port1`.
- Android, iOS, and tvOS - an IP:port such as `127.0.0.1:9000`.
-
+
By default, `dotnet-trace` listens at the specified address. You can request `dotnet-trace` to connect instead by appending `,connect` after the address. For example, `--diagnostic-port /foo/tool1.socket,connect` will connect to a .NET runtime process that is listening to the `/foo/tool1.socket` Unix domain socket.
-
+
To learn how to use this option to collect a trace from app startup, see [Use diagnostic port to collect a trace from app startup](#use-diagnostic-port-to-collect-a-trace-from-app-startup).
-
+
- **`--duration `**
The time for the trace to run. Use the `dd:hh:mm:ss` format. For example `00:00:00:05` will run it for 5 seconds.
- **`-o|--output `**
- The output path for the collected trace data. If not specified it defaults to `__.nettrace`, e.g., `myapp_20210315_111514.nettrace``.
+ The output path for the collected trace data. If not specified it defaults to `__.nettrace`, for example, `myapp_20210315_111514.nettrace``.
- **`-p|--process-id `**
@@ -238,15 +238,15 @@ dotnet-trace collect [--buffersize ] [--clreventlevel ] [--
- **`--stopping-event-provider-name`**
- A string, parsed as-is, that will stop the trace upon hitting an event with the matching provider name. For a more specific stopping event, additionally provide `--stopping-event-event-name` and/or `--stopping-event-payload-filter`. e.g. `--stopping-event-provider-name Microsoft-Windows-DotNETRuntime` to stop the trace upon hitting the first event emitted by the `Microsoft-Windows-DotNETRuntime` event provider.
+ A string, parsed as-is, that will stop the trace upon hitting an event with the matching provider name. For a more specific stopping event, additionally provide `--stopping-event-event-name` and/or `--stopping-event-payload-filter`. for example, `--stopping-event-provider-name Microsoft-Windows-DotNETRuntime` to stop the trace upon hitting the first event emitted by the `Microsoft-Windows-DotNETRuntime` event provider.
- **`--stopping-event-event-name`**
- A string, parsed as-is, that will stop the trace upon hitting an event with the matching event name. Requires `--stopping-event-provider-name` to be set. For a more specific stopping event, additionally provide `--stopping-event-payload-filter`. e.g. `--stopping-event-provider-name Microsoft-Windows-DotNETRuntime --stopping-event-event-name Method/JittingStarted` to stop the trace upon hitting the first `Method/JittingStarted` event emitted by the `Microsoft-Windows-DotNETRuntime` event provider.
+ A string, parsed as-is, that will stop the trace upon hitting an event with the matching event name. Requires `--stopping-event-provider-name` to be set. For a more specific stopping event, additionally provide `--stopping-event-payload-filter`. for example, `--stopping-event-provider-name Microsoft-Windows-DotNETRuntime --stopping-event-event-name Method/JittingStarted` to stop the trace upon hitting the first `Method/JittingStarted` event emitted by the `Microsoft-Windows-DotNETRuntime` event provider.
- **`--stopping-event-payload-filter`**
- A string, parsed as [payload_field_name]:[payload_field_value] pairs separated by commas, that will stop the trace upon hitting an event containing all specified payload pairs. Requires `--stopping-event-provider-name` and `--stopping-event-event-name` to be set. e.g. `--stopping-event-provider-name Microsoft-Windows-DotNETRuntime --stopping-event-event-name Method/JittingStarted --stopping-event-payload-filter MethodNameSpace:Program,MethodName:OnButtonClick` to stop the trace upon the first `Method/JittingStarted` event for the method `OnButtonClick` in the `Program` namespace emitted by the `Microsoft-Windows-DotNETRuntime` event provider.
+ A string, parsed as [payload_field_name]:[payload_field_value] pairs separated by commas, that will stop the trace upon hitting an event containing all specified payload pairs. Requires `--stopping-event-provider-name` and `--stopping-event-event-name` to be set. for example, `--stopping-event-provider-name Microsoft-Windows-DotNETRuntime --stopping-event-event-name Method/JittingStarted --stopping-event-payload-filter MethodNameSpace:Program,MethodName:OnButtonClick` to stop the trace upon the first `Method/JittingStarted` event for the method `OnButtonClick` in the `Program` namespace emitted by the `Microsoft-Windows-DotNETRuntime` event provider.
> [!NOTE]
@@ -307,7 +307,7 @@ Suppose you start a long-running app using the command ```dotnet run --configura
```dotnetcli
> dotnet-trace ps
-
+
21932 dotnet C:\Program Files\dotnet\dotnet.exe run --configuration Release
36656 dotnet C:\Program Files\dotnet\dotnet.exe
```
diff --git a/docs/core/extensions/log-buffering.md b/docs/core/extensions/log-buffering.md
new file mode 100644
index 0000000000000..e69f0943d434f
--- /dev/null
+++ b/docs/core/extensions/log-buffering.md
@@ -0,0 +1,219 @@
+---
+title: Log buffering
+description: Learn how to delay log emission using log buffering in .NET applications.
+ms.date: 05/16/2025
+---
+
+# Log buffering in .NET
+
+.NET provides log buffering capabilities that allow you to delay the emission of logs until certain conditions are met. Log buffering is useful in scenarios where you want to:
+
+- Collect all logs from a specific operation before deciding whether to emit them.
+- Prevent logs from being emitted during normal operation, but emit them when errors occur.
+- Optimize performance by reducing the number of logs written to storage.
+
+Buffered logs are stored in temporary circular buffers in process memory, and the following conditions apply:
+
+- If the buffer is full, the oldest logs are dropped and never emitted.
+- If you want to emit the buffered logs, you can call on the or class.
+- If you never flush the buffers, the buffered logs will eventually be dropped as the application runs, so it effectively behaves like those logs are disabled.
+
+There are two buffering strategies available:
+
+- Global buffering: Buffers logs across the entire application.
+- Per-request buffering: Buffers logs for each individual HTTP request if available; otherwise, buffers to the global buffer.
+
+> [!NOTE]
+> Log buffering is available in .NET 9 and later versions.
+
+Log buffering works with all logging providers. If a logging provider you use does not implement the interface, log buffering will call log methods directly on each buffered log record when flushing the buffer.
+
+Log buffering extends [filtering capabilities](logging.md#configure-logging-with-code) by allowing you to capture and store logs temporarily. Rather than making an immediate emit-or-discard decision, buffering lets you hold logs in memory and decide later whether to emit them.
+
+## Get started
+
+To get started, install the [📦 Microsoft.Extensions.Telemetry](https://www.nuget.org/packages/Microsoft.Extensions.Telemetry) NuGet package for [global buffering](#global-buffering).
+Or, install the [📦 Microsoft.AspNetCore.Diagnostics.Middleware](https://www.nuget.org/packages/Microsoft.AspNetCore.Diagnostics.Middleware) NuGet package for [per-request buffering](#per-request-buffering).
+
+### [.NET CLI](#tab/dotnet-cli)
+
+```dotnetcli
+dotnet add package Microsoft.Extensions.Telemetry
+dotnet add package Microsoft.AspNetCore.Diagnostics.Middleware
+```
+
+### [PackageReference](#tab/package-reference)
+
+```xml
+
+
+
+
+```
+
+---
+
+For more information about adding packages, see [dotnet add package](../tools/dotnet-package-add.md) or [Manage package dependencies in .NET applications](../tools/dependencies.md).
+
+## Global buffering
+
+Global buffering allows you to buffer logs across your entire application. You can configure which logs to buffer using filter rules, and then flush the buffer as needed to emit those logs.
+
+### Simple configuration
+
+To enable global buffering at or below a specific log level, specify that level:
+
+:::code language="csharp" source="snippets/logging/log-buffering/global/basic/Program.cs" range="18-19":::
+
+The preceding configuration enables buffering logs with level and below.
+
+### File-based configuration
+
+Create a configuration section in your _appsettings.json_, for example:
+
+:::code language="json" source="snippets/logging/log-buffering/global/file-based/appsettings.json" range="1-22" highlight="7-20" :::
+
+The preceding configuration:
+
+- Buffers logs from categories starting with `BufferingDemo` with level and below.
+- Buffers all logs with event ID 1001.
+- Sets the maximum buffer size to approximately 100 MB.
+- Sets the maximum log record size to 50 KB.
+- Sets an auto-flush duration of 30 seconds after manual flushing.
+
+To register the log buffering with the configuration, consider the following code:
+
+:::code language="csharp" source="snippets/logging/log-buffering/global/file-based/Program.cs" range="21-22":::
+
+### Inline code configuration
+
+:::code language="csharp" source="snippets/logging/log-buffering/global/code-based/Program.cs" range="18-28" :::
+
+The preceding configuration:
+
+- Buffers logs from categories starting with `BufferingDemo` with level and below.
+- Buffers all logs with event ID 1001.
+- Sets the maximum buffer size to approximately 100 MB.
+- Sets the maximum log record size to 50 KB.
+- Sets an auto-flush duration of 30 seconds after manual flushing.
+
+### Flushing the buffer
+
+To flush the buffered logs, inject the `GlobalLogBuffer` abstract class and call the `Flush()` method:
+
+:::code language="cs" source="snippets/logging/log-buffering/global/basic/myservice.cs" range="6-22" highlight="5,12" :::
+
+## Per-request buffering
+
+Per-request buffering is specific to ASP.NET Core applications and allows you to buffer logs independently for each HTTP request. The
+buffer for each respective request is created when the request starts and disposed when the request ends, so if you don't flush the buffer, the logs will be lost when the request ends. This way, it is useful to only flush buffers when you really need to, such as when an error occurs.
+
+Per-request buffering is tightly coupled with [global buffering](#global-buffering). If a log entry is supposed to be buffered to a per-request buffer, but there is no active HTTP context at the moment
+of buffering attempt, it will be buffered to the global buffer instead. If buffer flush is triggered, the per-request buffer will be flushed first, followed by the global buffer.
+
+### Simple configuration
+
+To buffer only logs at or below a specific log level:
+
+:::code language="cs" source="snippets/logging/log-buffering/per-request/basic/program.cs" range="16" :::
+
+### File-based configuration
+
+Create a configuration section in your _appsettings.json_:
+
+:::code language="json" source="snippets/logging/log-buffering/per-request/file-based/appsettings.json" range="1-18" highlight="8-16":::
+
+The preceding configuration:
+
+- Buffers logs from categories starting with `PerRequestLogBufferingFileBased.` with level and below.
+- Sets an auto-flush duration of 5 seconds after manual flushing.
+
+To register the log buffering with the configuration, consider the following code:
+
+:::code language="cs" source="snippets/logging/log-buffering/per-request/file-based/program.cs" range="16" :::
+
+### Inline code configuration
+
+:::code language="cs" source="snippets/logging/log-buffering/per-request/code-based/program.cs" range="16-20" :::
+
+The preceding configuration:
+
+- Buffers logs from categories starting with `PerRequestLogBufferingFileBased.` with level and below.
+- Sets an auto-flush duration of 5 seconds after manual flushing.
+
+### Flushing the per-request buffer
+
+To flush the buffered logs for the current request, inject the `PerRequestLogBuffer` abstract class and call its `Flush()` method:
+
+:::code language="cs" source="snippets/logging/log-buffering/per-request/basic/homecontroller.cs" range="8-48" highlight="8,11,34" :::
+
+> [!NOTE]
+> Flushing the per-request buffer also flushes the global buffer.
+
+## How buffering rules are applied
+
+Log buffering rules evaluation is performed on each log record. The following algorithm is used for each log record:
+
+1. If a log entry matches any rule, it is buffered instead of being emitted immediately.
+1. If a log entry does not match any rule, it is emitted normally.
+1. If the buffer size limit is reached, the oldest buffered log entries are dropped (not emitted!) to make room for new ones.
+1. If a log entry size is greater than the maximum log record size, it will not be buffered and is emitted normally.
+
+For each log record, the algorithm checks:
+
+- If the log level matches (is equal to or lower than) the rule's log level.
+- If the category name starts with the rule's `CategoryName` prefix.
+- If the event ID matches the rule's `EventId`.
+- If the event name matches the rule's `EventName`.
+- If any attributes match the rule's `Attributes`.
+
+### Change buffer filtering rules in a running app
+
+Both [global buffering](#global-buffering) and [per-request buffering](#per-request-buffering) support run-time configuration updates via the interface. If you're using a configuration provider that supports reloads—such as the [File Configuration Provider](configuration-providers.md#file-configuration-provider)—you can update filtering rules at run time without restarting the application.
+
+For example, you can start your application with the following _appsettings.json_, which enables log buffering for logs with the level and category starting with `PerRequestLogBufferingFileBased.`:
+
+:::code language="json" source="snippets/logging/log-buffering/per-request/file-based/appsettings.json" range="1-19" :::
+
+While the app is running, you can update the _appsettings.json_ with the following configuration:
+
+:::code language="json" source="snippets/logging/log-buffering/per-request/file-based/appsettingsUpdated.json" range="1-17" highlight="9-13" :::
+
+The new rules are applied automatically. For example, with the preceding configuration, all logs with the level will be buffered.
+
+## Performance considerations
+
+Log buffering offers a trade-off between memory usage and log storage costs. Buffering logs in memory allows you to:
+
+1. Selectively emit logs based on run-time conditions.
+1. Drop unnecessary logs without writing them to storage.
+
+However, be mindful of the memory consumption, especially in high-throughput applications. Configure appropriate buffer size limits to prevent excessive memory usage.
+
+## Best practices
+
+- Set appropriate buffer size limits based on your application's memory constraints.
+- Use per-request buffering for web applications to isolate logs by request.
+- Configure auto-flush duration carefully to balance memory usage and log availability.
+- Implement explicit flush triggers for important events (such as errors and warnings).
+- Monitor buffer memory usage in production to ensure it remains within acceptable limits.
+
+## Limitations
+
+- Log buffering is not supported in .NET 8 and earlier versions.
+- The order of logs is not guaranteed to be preserved. However, original timestamps are preserved.
+- Custom configuration per each logging provider is not supported. The same configuration is used for all providers.
+- Log scopes are not supported. This means that if you use the method, the buffered log records will not be associated with the scope.
+- Not all information of the original log record is preserved. Log buffering internally uses class when flushing, and the following of its properties are always empty:
+ -
+ -
+ -
+ -
+
+## See also
+
+- [Log sampling](log-sampling.md)
+- [Logging in .NET](logging.md)
+- [High-performance logging in .NET](high-performance-logging.md)
diff --git a/docs/core/extensions/logger-message-generator.md b/docs/core/extensions/logger-message-generator.md
index e26a3e2c8e65f..54d80f62c9df9 100644
--- a/docs/core/extensions/logger-message-generator.md
+++ b/docs/core/extensions/logger-message-generator.md
@@ -118,7 +118,6 @@ When using the `LoggerMessageAttribute` on logging methods, some constraints mus
- Logging methods must be `partial` and return `void`.
- Logging method names must *not* start with an underscore.
- Parameter names of logging methods must *not* start with an underscore.
-- Logging methods may *not* be defined in a nested type.
- Logging methods *cannot* be generic.
- If a logging method is `static`, the `ILogger` instance is required as a parameter.
diff --git a/docs/core/extensions/snippets/logging/log-buffering/global/basic/GlobalLogBufferingBasic.csproj b/docs/core/extensions/snippets/logging/log-buffering/global/basic/GlobalLogBufferingBasic.csproj
new file mode 100644
index 0000000000000..d8d829cf6efe9
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/global/basic/GlobalLogBufferingBasic.csproj
@@ -0,0 +1,17 @@
+
+
+
+ Demonstrates how to use log buffering feature.
+ Exe
+ $(NoWarn);EXTEXP0003
+ $(LatestTargetFramework)
+ GlobalLogBufferingBasic
+
+
+
+
+
+
+
+
+
diff --git a/docs/core/extensions/snippets/logging/log-buffering/global/basic/Log.cs b/docs/core/extensions/snippets/logging/log-buffering/global/basic/Log.cs
new file mode 100644
index 0000000000000..f62fad87e69e0
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/global/basic/Log.cs
@@ -0,0 +1,12 @@
+using Microsoft.Extensions.Logging;
+
+namespace GlobalLogBufferingBasic;
+
+internal static partial class Log
+{
+ [LoggerMessage(Level = LogLevel.Error, Message = "ERROR log message in my application. {message}")]
+ public static partial void ErrorMessage(this ILogger logger, string message);
+
+ [LoggerMessage(Level = LogLevel.Information, Message = "INFORMATION log message in my application.")]
+ public static partial void InformationMessage(this ILogger logger);
+}
diff --git a/docs/core/extensions/snippets/logging/log-buffering/global/basic/MyService.cs b/docs/core/extensions/snippets/logging/log-buffering/global/basic/MyService.cs
new file mode 100644
index 0000000000000..574bd76ea4045
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/global/basic/MyService.cs
@@ -0,0 +1,22 @@
+using System;
+using Microsoft.Extensions.Diagnostics.Buffering;
+
+namespace GlobalLogBufferingBasic;
+
+public class MyService
+{
+ private readonly GlobalLogBuffer _buffer;
+
+ public MyService(GlobalLogBuffer buffer)
+ {
+ _buffer = buffer;
+ }
+
+ public void HandleException(Exception ex)
+ {
+ _buffer.Flush();
+
+ // After flushing, log buffering will be temporarily suspended (= all logs will be emitted immediately)
+ // for the duration specified by AutoFlushDuration.
+ }
+}
diff --git a/docs/core/extensions/snippets/logging/log-buffering/global/basic/Program.cs b/docs/core/extensions/snippets/logging/log-buffering/global/basic/Program.cs
new file mode 100644
index 0000000000000..dcd545d0c1b5b
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/global/basic/Program.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Diagnostics.Buffering;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
+using Log = GlobalLogBufferingBasic.Log;
+
+var hostBuilder = Host.CreateApplicationBuilder();
+
+hostBuilder.Logging.AddSimpleConsole(options =>
+{
+ options.SingleLine = true;
+ options.TimestampFormat = "hh:mm:ss";
+ options.UseUtcTimestamp = true;
+});
+
+// Add the Global buffer to the logging pipeline.
+hostBuilder.Logging.AddGlobalBuffer(LogLevel.Information);
+
+using var app = hostBuilder.Build();
+
+var loggerFactory = app.Services.GetRequiredService();
+var logger = loggerFactory.CreateLogger("BufferingDemo");
+var buffer = app.Services.GetRequiredService();
+
+for (int i = 1; i < 21; i++)
+{
+ try
+ {
+ Log.InformationMessage(logger);
+
+ if(i % 10 == 0)
+ {
+ throw new Exception("Simulated exception");
+ }
+ }
+ catch (Exception ex)
+ {
+ Log.ErrorMessage(logger, ex.Message);
+ buffer.Flush();
+ }
+
+ await Task.Delay(1000).ConfigureAwait(false);
+}
diff --git a/docs/core/extensions/snippets/logging/log-buffering/global/code-based/GlobalLogBufferingCodeBased.csproj b/docs/core/extensions/snippets/logging/log-buffering/global/code-based/GlobalLogBufferingCodeBased.csproj
new file mode 100644
index 0000000000000..d39ae5b215f10
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/global/code-based/GlobalLogBufferingCodeBased.csproj
@@ -0,0 +1,17 @@
+
+
+
+ Demonstrates how to use log buffering feature.
+ Exe
+ $(NoWarn);EXTEXP0003
+ $(LatestTargetFramework)
+ GlobalLogBufferingCodeBased
+
+
+
+
+
+
+
+
+
diff --git a/docs/core/extensions/snippets/logging/log-buffering/global/code-based/Log.cs b/docs/core/extensions/snippets/logging/log-buffering/global/code-based/Log.cs
new file mode 100644
index 0000000000000..fc1690f0e2a1b
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/global/code-based/Log.cs
@@ -0,0 +1,12 @@
+using Microsoft.Extensions.Logging;
+
+namespace GlobalLogBufferingCodeBased;
+
+internal static partial class Log
+{
+ [LoggerMessage(Level = LogLevel.Error, Message = "ERROR log message in my application. {message}")]
+ public static partial void ErrorMessage(this ILogger logger, string message);
+
+ [LoggerMessage(Level = LogLevel.Information, Message = "INFORMATION log message in my application.")]
+ public static partial void InformationMessage(this ILogger logger);
+}
diff --git a/docs/core/extensions/snippets/logging/log-buffering/global/code-based/Program.cs b/docs/core/extensions/snippets/logging/log-buffering/global/code-based/Program.cs
new file mode 100644
index 0000000000000..de98e88898b7b
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/global/code-based/Program.cs
@@ -0,0 +1,54 @@
+using System;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Diagnostics.Buffering;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
+using Log = GlobalLogBufferingCodeBased.Log;
+
+var hostBuilder = Host.CreateApplicationBuilder();
+
+hostBuilder.Logging.AddSimpleConsole(options =>
+{
+ options.SingleLine = true;
+ options.TimestampFormat = "hh:mm:ss";
+ options.UseUtcTimestamp = true;
+});
+
+// Add the Global buffer to the logging pipeline.
+hostBuilder.Logging.AddGlobalBuffer(options =>
+{
+ options.MaxBufferSizeInBytes = 104857600; // 100 MB
+ options.MaxLogRecordSizeInBytes = 51200; // 50 KB
+ options.AutoFlushDuration = TimeSpan.FromSeconds(30);
+ options.Rules.Add(new LogBufferingFilterRule(
+ categoryName: "BufferingDemo",
+ logLevel: LogLevel.Information));
+ options.Rules.Add(new LogBufferingFilterRule(eventId: 1001));
+});
+
+using var app = hostBuilder.Build();
+
+var loggerFactory = app.Services.GetRequiredService();
+var logger = loggerFactory.CreateLogger("BufferingDemo");
+var buffer = app.Services.GetRequiredService();
+
+for (int i = 1; i < 21; i++)
+{
+ try
+ {
+ Log.InformationMessage(logger);
+
+ if(i % 10 == 0)
+ {
+ throw new Exception("Simulated exception");
+ }
+ }
+ catch (Exception ex)
+ {
+ Log.ErrorMessage(logger, ex.Message);
+ buffer.Flush();
+ }
+
+ await Task.Delay(1000).ConfigureAwait(false);
+}
diff --git a/docs/core/extensions/snippets/logging/log-buffering/global/file-based/GlobalLogBufferingFileBased.csproj b/docs/core/extensions/snippets/logging/log-buffering/global/file-based/GlobalLogBufferingFileBased.csproj
new file mode 100644
index 0000000000000..f2da64ef2bd0e
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/global/file-based/GlobalLogBufferingFileBased.csproj
@@ -0,0 +1,23 @@
+
+
+
+ Demonstrates how to use log buffering feature.
+ Exe
+ $(NoWarn);EXTEXP0003
+ $(LatestTargetFramework)
+ GlobalLogBufferingFileBased
+
+
+
+
+
+
+
+
+
+
+ Always
+
+
+
+
diff --git a/docs/core/extensions/snippets/logging/log-buffering/global/file-based/Log.cs b/docs/core/extensions/snippets/logging/log-buffering/global/file-based/Log.cs
new file mode 100644
index 0000000000000..1fb1bc93c7dc3
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/global/file-based/Log.cs
@@ -0,0 +1,15 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using Microsoft.Extensions.Logging;
+
+namespace GlobalLogBufferingFileBased;
+
+internal static partial class Log
+{
+ [LoggerMessage(Level = LogLevel.Error, Message = "ERROR log message in my application. {message}")]
+ public static partial void ErrorMessage(this ILogger logger, string message);
+
+ [LoggerMessage(Level = LogLevel.Information, Message = "INFORMATION log message in my application.")]
+ public static partial void InformationMessage(this ILogger logger);
+}
diff --git a/docs/core/extensions/snippets/logging/log-buffering/global/file-based/Program.cs b/docs/core/extensions/snippets/logging/log-buffering/global/file-based/Program.cs
new file mode 100644
index 0000000000000..eed8b70164e71
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/global/file-based/Program.cs
@@ -0,0 +1,48 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using System;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Diagnostics.Buffering;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
+using Log = GlobalLogBufferingFileBased.Log;
+
+var hostBuilder = Host.CreateApplicationBuilder();
+
+hostBuilder.Logging.AddSimpleConsole(options =>
+{
+ options.SingleLine = true;
+ options.TimestampFormat = "hh:mm:ss";
+ options.UseUtcTimestamp = true;
+});
+
+// Add the Global buffer to the logging pipeline.
+hostBuilder.Logging.AddGlobalBuffer(hostBuilder.Configuration.GetSection("Logging"));
+
+using var app = hostBuilder.Build();
+
+var loggerFactory = app.Services.GetRequiredService();
+var logger = loggerFactory.CreateLogger("BufferingDemo");
+var buffer = app.Services.GetRequiredService();
+
+for (int i = 1; i < 21; i++)
+{
+ try
+ {
+ Log.InformationMessage(logger);
+
+ if(i % 10 == 0)
+ {
+ throw new Exception("Simulated exception");
+ }
+ }
+ catch (Exception ex)
+ {
+ Log.ErrorMessage(logger, ex.Message);
+ buffer.Flush();
+ }
+
+ await Task.Delay(1000).ConfigureAwait(false);
+}
diff --git a/docs/core/extensions/snippets/logging/log-buffering/global/file-based/appsettings.json b/docs/core/extensions/snippets/logging/log-buffering/global/file-based/appsettings.json
new file mode 100644
index 0000000000000..d6cc03c8abca0
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/global/file-based/appsettings.json
@@ -0,0 +1,22 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information"
+ },
+
+ "GlobalLogBuffering": {
+ "MaxBufferSizeInBytes": 104857600,
+ "MaxLogRecordSizeInBytes": 51200,
+ "AutoFlushDuration": "00:00:30",
+ "Rules": [
+ {
+ "CategoryName": "BufferingDemo",
+ "LogLevel": "Information"
+ },
+ {
+ "EventId": 1001
+ }
+ ]
+ }
+ }
+}
diff --git a/docs/core/extensions/snippets/logging/log-buffering/per-request/basic/HomeController.cs b/docs/core/extensions/snippets/logging/log-buffering/per-request/basic/HomeController.cs
new file mode 100644
index 0000000000000..6b548f094b97b
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/per-request/basic/HomeController.cs
@@ -0,0 +1,48 @@
+using System;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Diagnostics.Buffering;
+using Microsoft.Extensions.Logging;
+
+namespace PerRequestLogBufferingBasic;
+
+[ApiController]
+[Route("[controller]")]
+public class HomeController : ControllerBase
+{
+ private readonly ILogger _logger;
+ private readonly PerRequestLogBuffer _buffer;
+
+ public HomeController(ILogger logger, PerRequestLogBuffer buffer)
+ {
+ _logger = logger;
+ _buffer = buffer;
+ }
+
+ [HttpGet("index/{id}")]
+ public IActionResult Index(int id)
+ {
+ try
+ {
+ _logger.RequestStarted(id);
+
+ // Simulate exception every 10th request
+ if (id % 10 == 0)
+ {
+ throw new Exception("Simulated exception in controller");
+ }
+
+ _logger.RequestEnded(id);
+
+ return Ok();
+ }
+ catch
+ {
+ _logger.ErrorMessage(id);
+ _buffer.Flush();
+
+ _logger.ExceptionHandlingFinished(id);
+
+ return StatusCode(500, "An error occurred.");
+ }
+ }
+}
diff --git a/docs/core/extensions/snippets/logging/log-buffering/per-request/basic/Log.cs b/docs/core/extensions/snippets/logging/log-buffering/per-request/basic/Log.cs
new file mode 100644
index 0000000000000..3862c4e8a9d5a
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/per-request/basic/Log.cs
@@ -0,0 +1,18 @@
+using Microsoft.Extensions.Logging;
+
+namespace PerRequestLogBufferingBasic;
+
+internal static partial class Log
+{
+ [LoggerMessage(Level = LogLevel.Error, Message = "Request {id} failed")]
+ public static partial void ErrorMessage(this ILogger logger, int id);
+
+ [LoggerMessage(Level = LogLevel.Information, Message = "Request {id} started.")]
+ public static partial void RequestStarted(this ILogger logger, int id);
+
+ [LoggerMessage(Level = LogLevel.Information, Message = "Request {id} ended.")]
+ public static partial void RequestEnded(this ILogger logger, int id);
+
+ [LoggerMessage(Level = LogLevel.Information, Message = "Exception handling finished for request {id}.")]
+ public static partial void ExceptionHandlingFinished(this ILogger logger, int id);
+}
diff --git a/docs/core/extensions/snippets/logging/log-buffering/per-request/basic/PerRequestLogBufferingBasic.csproj b/docs/core/extensions/snippets/logging/log-buffering/per-request/basic/PerRequestLogBufferingBasic.csproj
new file mode 100644
index 0000000000000..cb3f9dacf98b8
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/per-request/basic/PerRequestLogBufferingBasic.csproj
@@ -0,0 +1,23 @@
+
+
+
+ Demonstrates how to use log buffering feature.
+ Exe
+ $(NoWarn);EXTEXP0003
+ $(LatestTargetFramework)
+ PerRequestLogBufferingBasic
+
+
+
+
+
+
+
+
+
+
+ Always
+
+
+
+
diff --git a/docs/core/extensions/snippets/logging/log-buffering/per-request/basic/Program.cs b/docs/core/extensions/snippets/logging/log-buffering/per-request/basic/Program.cs
new file mode 100644
index 0000000000000..5a114bd2926cb
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/per-request/basic/Program.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Net.Http;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+
+var builder = WebApplication.CreateBuilder(args);
+builder.Services.AddControllers();
+builder.Logging.AddSimpleConsole(options =>
+{
+ options.SingleLine = true;
+ options.TimestampFormat = "hh:mm:ss:fff";
+ options.UseUtcTimestamp = true;
+});
+builder.Logging.AddPerIncomingRequestBuffer(LogLevel.Information);
+
+var app = builder.Build();
+app.MapControllers();
+var serverTask = app.RunAsync();
+
+using var httpClient = new HttpClient();
+var baseUrl = "http://localhost:5000";
+httpClient.BaseAddress = new Uri(baseUrl);
+
+var logger = app.Services.GetRequiredService().CreateLogger("Client");
+logger.LogInformation("Starting to send requests to the controller...");
+
+for (var i = 1; i < 21; i++)
+{
+ _ = await httpClient.GetAsync($"home/index/{i}").ConfigureAwait(false);
+
+ await Task.Delay(1000).ConfigureAwait(false);
+}
+
+logger.LogInformation("All requests completed");
diff --git a/docs/core/extensions/snippets/logging/log-buffering/per-request/basic/appsettings.json b/docs/core/extensions/snippets/logging/log-buffering/per-request/basic/appsettings.json
new file mode 100644
index 0000000000000..cb5c95ecec748
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/per-request/basic/appsettings.json
@@ -0,0 +1,8 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.*": "None"
+ }
+ }
+}
diff --git a/docs/core/extensions/snippets/logging/log-buffering/per-request/code-based/HomeController.cs b/docs/core/extensions/snippets/logging/log-buffering/per-request/code-based/HomeController.cs
new file mode 100644
index 0000000000000..1e2015b6c9ef7
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/per-request/code-based/HomeController.cs
@@ -0,0 +1,48 @@
+using System;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Diagnostics.Buffering;
+using Microsoft.Extensions.Logging;
+
+namespace PerRequestLogBufferingCodeBased;
+
+[ApiController]
+[Route("[controller]")]
+public class HomeController : ControllerBase
+{
+ private readonly ILogger _logger;
+ private readonly PerRequestLogBuffer _buffer;
+
+ public HomeController(ILogger logger, PerRequestLogBuffer buffer)
+ {
+ _logger = logger;
+ _buffer = buffer;
+ }
+
+ [HttpGet("index/{id}")]
+ public IActionResult Index(int id)
+ {
+ try
+ {
+ _logger.RequestStarted(id);
+
+ // Simulate exception every 10th request
+ if (id % 10 == 0)
+ {
+ throw new Exception("Simulated exception in controller");
+ }
+
+ _logger.RequestEnded(id);
+
+ return Ok();
+ }
+ catch
+ {
+ _logger.ErrorMessage(id);
+ _buffer.Flush();
+
+ _logger.ExceptionHandlingFinished(id);
+
+ return StatusCode(500, "An error occurred.");
+ }
+ }
+}
diff --git a/docs/core/extensions/snippets/logging/log-buffering/per-request/code-based/Log.cs b/docs/core/extensions/snippets/logging/log-buffering/per-request/code-based/Log.cs
new file mode 100644
index 0000000000000..f1425cea73928
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/per-request/code-based/Log.cs
@@ -0,0 +1,18 @@
+using Microsoft.Extensions.Logging;
+
+namespace PerRequestLogBufferingCodeBased;
+
+internal static partial class Log
+{
+ [LoggerMessage(Level = LogLevel.Error, Message = "Request {id} failed")]
+ public static partial void ErrorMessage(this ILogger logger, int id);
+
+ [LoggerMessage(Level = LogLevel.Information, Message = "Request {id} started.")]
+ public static partial void RequestStarted(this ILogger logger, int id);
+
+ [LoggerMessage(Level = LogLevel.Information, Message = "Request {id} ended.")]
+ public static partial void RequestEnded(this ILogger logger, int id);
+
+ [LoggerMessage(Level = LogLevel.Information, Message = "Exception handling finished for request {id}.")]
+ public static partial void ExceptionHandlingFinished(this ILogger logger, int id);
+}
diff --git a/docs/core/extensions/snippets/logging/log-buffering/per-request/code-based/PerRequestLogBufferingCodeBased.csproj b/docs/core/extensions/snippets/logging/log-buffering/per-request/code-based/PerRequestLogBufferingCodeBased.csproj
new file mode 100644
index 0000000000000..53d79e6e08632
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/per-request/code-based/PerRequestLogBufferingCodeBased.csproj
@@ -0,0 +1,23 @@
+
+
+
+ Demonstrates how to use log buffering feature.
+ Exe
+ $(NoWarn);EXTEXP0003
+ $(LatestTargetFramework)
+ PerRequestLogBufferingCodeBased
+
+
+
+
+
+
+
+
+
+
+ Always
+
+
+
+
diff --git a/docs/core/extensions/snippets/logging/log-buffering/per-request/code-based/Program.cs b/docs/core/extensions/snippets/logging/log-buffering/per-request/code-based/Program.cs
new file mode 100644
index 0000000000000..8961235bc73ea
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/per-request/code-based/Program.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Net.Http;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+
+var builder = WebApplication.CreateBuilder(args);
+builder.Services.AddControllers();
+builder.Logging.AddSimpleConsole(options =>
+{
+ options.SingleLine = true;
+ options.TimestampFormat = "hh:mm:ss:fff";
+ options.UseUtcTimestamp = true;
+});
+builder.Logging.AddPerIncomingRequestBuffer(options =>
+{
+ options.AutoFlushDuration = TimeSpan.FromSeconds(5);
+ options.Rules.Add(new Microsoft.Extensions.Diagnostics.Buffering.LogBufferingFilterRule("PerRequestLogBufferingCodeBased.*", LogLevel.Information));
+});
+
+var app = builder.Build();
+app.MapControllers();
+var serverTask = app.RunAsync();
+
+using var httpClient = new HttpClient();
+var baseUrl = "http://localhost:5000";
+httpClient.BaseAddress = new Uri(baseUrl);
+
+var logger = app.Services.GetRequiredService().CreateLogger("Client");
+logger.LogInformation("Starting to send requests to the controller...");
+
+for (var i = 1; i < 21; i++)
+{
+ _ = await httpClient.GetAsync($"home/index/{i}").ConfigureAwait(false);
+
+ await Task.Delay(1000).ConfigureAwait(false);
+}
+
+logger.LogInformation("All requests completed");
diff --git a/docs/core/extensions/snippets/logging/log-buffering/per-request/code-based/appsettings.json b/docs/core/extensions/snippets/logging/log-buffering/per-request/code-based/appsettings.json
new file mode 100644
index 0000000000000..cb5c95ecec748
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/per-request/code-based/appsettings.json
@@ -0,0 +1,8 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.*": "None"
+ }
+ }
+}
diff --git a/docs/core/extensions/snippets/logging/log-buffering/per-request/file-based/HomeController.cs b/docs/core/extensions/snippets/logging/log-buffering/per-request/file-based/HomeController.cs
new file mode 100644
index 0000000000000..327c465246562
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/per-request/file-based/HomeController.cs
@@ -0,0 +1,48 @@
+using System;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Diagnostics.Buffering;
+using Microsoft.Extensions.Logging;
+
+namespace PerRequestLogBufferingFileBased;
+
+[ApiController]
+[Route("[controller]")]
+public class HomeController : ControllerBase
+{
+ private readonly ILogger _logger;
+ private readonly PerRequestLogBuffer _buffer;
+
+ public HomeController(ILogger logger, PerRequestLogBuffer buffer)
+ {
+ _logger = logger;
+ _buffer = buffer;
+ }
+
+ [HttpGet("index/{id}")]
+ public IActionResult Index(int id)
+ {
+ try
+ {
+ _logger.RequestStarted(id);
+
+ // Simulate exception every 10th request
+ if (id % 10 == 0)
+ {
+ throw new Exception("Simulated exception in controller");
+ }
+
+ _logger.RequestEnded(id);
+
+ return Ok();
+ }
+ catch
+ {
+ _logger.ErrorMessage(id);
+ _buffer.Flush();
+
+ _logger.ExceptionHandlingFinished(id);
+
+ return StatusCode(500, "An error occurred.");
+ }
+ }
+}
diff --git a/docs/core/extensions/snippets/logging/log-buffering/per-request/file-based/Log.cs b/docs/core/extensions/snippets/logging/log-buffering/per-request/file-based/Log.cs
new file mode 100644
index 0000000000000..b0f3d580a2aea
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/per-request/file-based/Log.cs
@@ -0,0 +1,18 @@
+using Microsoft.Extensions.Logging;
+
+namespace PerRequestLogBufferingFileBased;
+
+internal static partial class Log
+{
+ [LoggerMessage(Level = LogLevel.Error, Message = "Request {id} failed")]
+ public static partial void ErrorMessage(this ILogger logger, int id);
+
+ [LoggerMessage(Level = LogLevel.Information, Message = "Request {id} started.")]
+ public static partial void RequestStarted(this ILogger logger, int id);
+
+ [LoggerMessage(Level = LogLevel.Information, Message = "Request {id} ended.")]
+ public static partial void RequestEnded(this ILogger logger, int id);
+
+ [LoggerMessage(Level = LogLevel.Information, Message = "Exception handling finished for request {id}.")]
+ public static partial void ExceptionHandlingFinished(this ILogger logger, int id);
+}
diff --git a/docs/core/extensions/snippets/logging/log-buffering/per-request/file-based/PerRequestLogBufferingFileBased.csproj b/docs/core/extensions/snippets/logging/log-buffering/per-request/file-based/PerRequestLogBufferingFileBased.csproj
new file mode 100644
index 0000000000000..2de0edf6738f2
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/per-request/file-based/PerRequestLogBufferingFileBased.csproj
@@ -0,0 +1,23 @@
+
+
+
+ Demonstrates how to use log buffering feature.
+ Exe
+ $(NoWarn);EXTEXP0003
+ $(LatestTargetFramework)
+ PerRequestLogBufferingFileBased
+
+
+
+
+
+
+
+
+
+
+ Always
+
+
+
+
diff --git a/docs/core/extensions/snippets/logging/log-buffering/per-request/file-based/Program.cs b/docs/core/extensions/snippets/logging/log-buffering/per-request/file-based/Program.cs
new file mode 100644
index 0000000000000..b3a814f4f6706
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/per-request/file-based/Program.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Net.Http;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+
+var builder = WebApplication.CreateBuilder(args);
+builder.Services.AddControllers();
+builder.Logging.AddSimpleConsole(options =>
+{
+ options.SingleLine = true;
+ options.TimestampFormat = "hh:mm:ss:fff";
+ options.UseUtcTimestamp = true;
+});
+builder.Logging.AddPerIncomingRequestBuffer(builder.Configuration.GetSection("Logging"));
+
+var app = builder.Build();
+app.MapControllers();
+var serverTask = app.RunAsync();
+
+using var httpClient = new HttpClient();
+var baseUrl = "http://localhost:5000";
+httpClient.BaseAddress = new Uri(baseUrl);
+
+var logger = app.Services.GetRequiredService().CreateLogger("Client");
+logger.LogInformation("Starting to send requests to the controller...");
+
+for (var i = 1; i < 21; i++)
+{
+ _ = await httpClient.GetAsync($"home/index/{i}").ConfigureAwait(false);
+
+ await Task.Delay(1000).ConfigureAwait(false);
+}
+
+logger.LogInformation("All requests completed");
diff --git a/docs/core/extensions/snippets/logging/log-buffering/per-request/file-based/appsettings.json b/docs/core/extensions/snippets/logging/log-buffering/per-request/file-based/appsettings.json
new file mode 100644
index 0000000000000..c7af1ba8f7c07
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/per-request/file-based/appsettings.json
@@ -0,0 +1,18 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.*": "None"
+ },
+
+ "PerIncomingRequestLogBuffering": {
+ "AutoFlushDuration": "00:00:05",
+ "Rules": [
+ {
+ "CategoryName": "PerRequestLogBufferingFileBased.*",
+ "LogLevel": "Information"
+ }
+ ]
+ }
+ }
+}
diff --git a/docs/core/extensions/snippets/logging/log-buffering/per-request/file-based/appsettingsUpdated.json b/docs/core/extensions/snippets/logging/log-buffering/per-request/file-based/appsettingsUpdated.json
new file mode 100644
index 0000000000000..d7cdf83fb1361
--- /dev/null
+++ b/docs/core/extensions/snippets/logging/log-buffering/per-request/file-based/appsettingsUpdated.json
@@ -0,0 +1,16 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.*": "None"
+ },
+
+ "PerIncomingRequestLogBuffering": {
+ "Rules": [
+ {
+ "LogLevel": "Information"
+ }
+ ]
+ }
+ }
+}
diff --git a/docs/core/install/linux-ubuntu-decision.md b/docs/core/install/linux-ubuntu-decision.md
index 2eea6f2271550..3a5b513c28b5a 100644
--- a/docs/core/install/linux-ubuntu-decision.md
+++ b/docs/core/install/linux-ubuntu-decision.md
@@ -93,7 +93,7 @@ If you want to source the .NET packages from an Ubuntu feed, you need to deprior
### I want to create a .NET app
-Use the same package sources for the SDK as you use for the runtime. It is recommended that you install .NET through an Ubuntu feed. If, however you want to install .NET from another source (e.g. the [Microsoft package repository](#register-the-microsoft-package-repository) to access higher SDK feature bands), you should uninstall .NET, configure your package manager to ignore .NET packages from the Ubuntu feed and reinstall it from the other source.
+Use the same package sources for the SDK as you use for the runtime. It is recommended that you install .NET through an Ubuntu feed. If, however you want to install .NET from another source (for example, the [Microsoft package repository](#register-the-microsoft-package-repository) to access higher SDK feature bands), you should uninstall .NET, configure your package manager to ignore .NET packages from the Ubuntu feed and reinstall it from the other source.
Review the other suggestions in the [Decide how to install .NET](#decide-how-to-install-net) section.
@@ -228,7 +228,7 @@ sudo apt update
```
> [!TIP]
-> The previous script was written for Ubuntu and might not work if you're using a derived distribution, such as Linux Mint. It's likely that the `$ID` and `$VERSION_ID` variables won't be assigned the correct values, making the URI for the `wget` command invalid. The `$ID` corresponds to the distribution (e.g., `ubuntu`), while `$VERSION_ID` maps to the specific version of Ubuntu you want to get packages for, such as 22.04 or 23.10.
+> The previous script was written for Ubuntu and might not work if you're using a derived distribution, such as Linux Mint. It's likely that the `$ID` and `$VERSION_ID` variables won't be assigned the correct values, making the URI for the `wget` command invalid. The `$ID` corresponds to the distribution (for example, `ubuntu`), while `$VERSION_ID` maps to the specific version of Ubuntu you want to get packages for, such as 22.04 or 23.10.
>
> For example, on Ubuntu 22.04 `$ID` would be `ubuntu` and `$VERSION_ID` would be `22.04`. The URL would look like:
> `https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb`.
diff --git a/docs/core/porting/github-copilot-app-modernization-faq.yml b/docs/core/porting/github-copilot-app-modernization-faq.yml
index c3ad4a80de75f..789c58e9bda7d 100644
--- a/docs/core/porting/github-copilot-app-modernization-faq.yml
+++ b/docs/core/porting/github-copilot-app-modernization-faq.yml
@@ -17,21 +17,21 @@ sections:
questions:
- question: What can the tool do?
answer: |
- Currently, app modernization - upgrade for .NET helps you upgrade your .NET projects to newer versions of .NET. The tool is an extension for Visual Studio that performs the following steps in a GitHub Copilot chat session:
+ Currently, GitHub Copilot app modernization - upgrade for .NET helps you upgrade your .NET projects to newer versions of .NET. The tool is an extension for Visual Studio that performs the following steps in a GitHub Copilot chat session:
- - Analyze your projects and proposes an upgrade plan.
+ - Analyzes your projects and proposes an upgrade plan.
- According to the plan, runs a series of tasks to upgrade your projects.
- Operates in a working branch under a local Git repository.
- - Automatically fix issues during the code transformation.
- - Report progress and allow access to code changes & logs.
+ - Automatically fixes issues during the code transformation.
+ - Reports progress and allow access to code changes & logs.
- Learns from the interactive experience with you (within the context of the session) to improve subsequent transformations.
- question: What can the tool upgrade?
answer: |
- App modernization - upgrade for .NET currently focuses on migrating your projects from one version of .NET to another. For example, upgrading from .NET Core 3.1 or .NET 6, to .NET 9. It also upgrades dependencies and fixes errors in the code post-migration.
+ GitHub Copilot app modernization - upgrade for .NET currently focuses on migrating your projects from one version of .NET to another. For example, upgrading from .NET Core 3.1 or .NET 6, to .NET 9. It also upgrades dependencies and fixes errors in the code post-migration.
Besides upgrading the target framework, the tool can work with the following types of projects:
-
+
- Azure Functions.
- Console apps and class libraries.
- Web technologies such as:
@@ -44,10 +44,11 @@ sections:
- question: What limitations are there?
answer: |
- - It doesn't support .NET Framework projects. (First upgrade the project to .NET with the [Upgrade Assistant tool](upgrade-assistant-overview.md))
+ - It doesn't support .NET Framework projects. (First upgrade the project to .NET with the [Upgrade Assistant tool](upgrade-assistant-overview.md).)
- Only Git repositories are supported.
- There's no guarantee that the upgrade suggestions are considered best practices.
- The LLM doesn't persist learning from the upgrade. Meaning, code fixes and corrections you provide during the upgrade process don't persist and can't be remembered for future upgrades.
+ - It only runs on Windows.
- question: What data is collected?
answer: |
@@ -55,15 +56,15 @@ sections:
- question: Can I disable telemetry?
answer: |
- Yes, you can disable telemetry through Visual Studio itself. In Visual Studio, select **Help** > **Privacy** > **Privacy Settings** > **"No, I would not like to participate."**
+ Yes, you can disable telemetry. In Visual Studio, select **Help** > **Privacy** > **Privacy Settings** > **"No, I would not like to participate."**
- question: Can I train the model based on my code base?
answer: |
- No. Unlike traditional AI tools where you might enter freeform prompts, the tool operates in a more structured way. The AI is embedded within the build-and-fix process, meaning, the prompts it uses are predefined and tied to the upgrade plan. So it's not something you can train on your codebase, and it's not something you can manually steer with custom instructions, beyond the changes you can make to the plan markdown file.
+ No. Unlike traditional AI tools where you might enter freeform prompts, the tool operates in a more structured way. The AI is embedded within the build-and-fix process, meaning the prompts it uses are predefined and tied to the upgrade plan. So it's not something you can train on your codebase, and it's not something you can manually steer with custom instructions, beyond the changes you can make to the plan Markdown file.
- However, the tool does have some adaptability within a session. If you manually adjust a fix, it learns from that interaction in the short term and applies similar corrections if it encounters the same issue again. Think of it as refining its approach within the scope of that upgrade. We never store a user's codebase and never use your code for training the model. Once an upgrade is complete, session data is deleted and not stored.
+ However, the tool does have some adaptability within a session. If you manually adjust a fix, it learns from that interaction in the short term and applies similar corrections if it encounters the same issue again. Think of it as refining its approach within the scope of that upgrade. We never store a user's codebase and never use your code for training the model. Once an upgrade is complete, session data is deleted and not stored.
additionalContent: |
## Related content
- To learn more, see [What is GitHub Copilot app modernization - upgrade for .NET?](github-copilot-app-modernization-overview.md).
\ No newline at end of file
+ To learn more, see [What is GitHub Copilot app modernization - upgrade for .NET?](github-copilot-app-modernization-overview.md).
diff --git a/docs/core/porting/github-copilot-app-modernization-install.md b/docs/core/porting/github-copilot-app-modernization-install.md
index d36ff71a60ddd..d659343c260ae 100644
--- a/docs/core/porting/github-copilot-app-modernization-install.md
+++ b/docs/core/porting/github-copilot-app-modernization-install.md
@@ -17,11 +17,11 @@ This article guides you through installing GitHub Copilot app modernization - up
## Prerequisites
-- Windows Operating System
-- [Visual Studio 2022 version 17.14 or newer](https://visualstudio.microsoft.com/downloads/).
-- [.NET desktop development workload](/visualstudio/install/modify-visual-studio?view=vs-2022&preserve-view=true#change-workloads-or-individual-components).
+- Windows operating system
+- [Visual Studio 2022 version 17.14 or newer](https://visualstudio.microsoft.com/downloads/)
+- [.NET desktop development workload](/visualstudio/install/modify-visual-studio?view=vs-2022&preserve-view=true#change-workloads-or-individual-components)
-## Visual Studio Extension
+## Visual Studio extension
The following steps install the Visual Studio extension.
@@ -32,12 +32,12 @@ The following steps install the Visual Studio extension.
If the **Open Recent \ Get Started** window opens, select the **Continue without code** link.
-01. Select the **Extensions** > **Manage Extensions** menu to open the **Extension Manager** window.
+01. Select the **Extensions** > **Manage Extensions** menu to open **Extension Manager**.
01. Select the **Browse** tab.
-01. Type **GitHub Copilot App Modernization** into the search box.
-01. Select the **GitHub Copilot App Modernization** item, and then select **Install**.
+01. Enter `GitHub Copilot app modernization` into the search box.
+01. Select **GitHub Copilot app modernization**, and then select **Install**.
- :::image type="content" source="media/github-copilot-app-modernization-install/visual-studio-manage-extensions.png" alt-text="The manage extensions window in Visual Studio, showing the GitHub Copilot App Modernization.":::
+ :::image type="content" source="media/github-copilot-app-modernization-install/visual-studio-manage-extensions.png" alt-text="The manage extensions window in Visual Studio, showing GitHub Copilot app modernization.":::
01. Once the extension finishes downloading, close Visual Studio to automatically start the installation.
@@ -47,11 +47,10 @@ The following steps install the Visual Studio extension.
## Validation
-The following information helps you determine that GitHub Copilot App Modernization is installed.
+There are two ways to determine if GitHub Copilot App Modernization is installed as a Visual Studio extension:
-There are two ways to determine if GitHub Copilot App Modernization is installed as a Visual Studio extension. The quickest way is to right-click on any .NET or .NET Framework project in the **Solution Explorer** window and check for an **Upgrade** menu item.
-
-Another way is to select the **Extensions** > **Manage Extensions** menu to open the **Extension Manager** window. Then, select the **Installed** tab and find it in the list of installed extensions.
+- The quickest way is to right-click on any .NET or .NET Framework project in **Solution Explorer** and check for an **Upgrade** menu item.
+- Another way is to select the **Extensions** > **Manage Extensions** menu to open the **Extension Manager** window. Then, select the **Installed** tab and find it in the list of installed extensions.
## Related content
diff --git a/docs/core/porting/github-copilot-app-modernization-overview.md b/docs/core/porting/github-copilot-app-modernization-overview.md
index 48269609e0fb4..fb435de6a4e90 100644
--- a/docs/core/porting/github-copilot-app-modernization-overview.md
+++ b/docs/core/porting/github-copilot-app-modernization-overview.md
@@ -1,5 +1,5 @@
---
-title: GitHub Copilot app modernization - upgrade for .NET Overview
+title: GitHub Copilot app modernization - upgrade for .NET overview
description: "Learn more about GitHub Copilot app modernization - upgrade for .NET. This Visual Studio extension helps you upgrade your code and projects. Upgrades can include .NET versioning or migrating code from one technology to another."
titleSuffix: ""
author: adegeo
@@ -13,7 +13,7 @@ ms.date: 05/16/2025
# What is GitHub Copilot app modernization - upgrade for .NET?
-GitHub Copilot app modernization - upgrade for .NET is a powerful Visual Studio extension that works with you to upgrade projects to newer versions of .NET, upgrade your dependencies, and applies code fixes.
+GitHub Copilot app modernization - upgrade for .NET is a powerful Visual Studio extension that works with you to upgrade projects to newer versions of .NET, upgrade your dependencies, and apply code fixes.
GitHub Copilot app modernization is distributed as a Visual Studio extension, and is an interactive upgrade process.
@@ -70,12 +70,12 @@ The first step to upgrading is generating a plan by interacting with GitHub Copi
## Generate a plan
-Once the process starts, Copilot analyzes your projects and their dependencies, and then asks you a series of questions about the upgrade. After you answer these questions, an upgrade plan is written in the form of a markdown file. If you tell Copilot to proceed with the upgrade, this plan describes the steps of the upgrade process.
+Once the process starts, Copilot analyzes your projects and their dependencies, and then asks you a series of questions about the upgrade. After you answer these questions, an upgrade plan is written in the form of a Markdown file. If you tell Copilot to proceed with the upgrade, this plan describes the steps of the upgrade process.
-You can adjust the plan by editing the markdown file to change the upgrade steps or add more context.
+You can adjust the plan by editing the Markdown file to change the upgrade steps or add more context.
> [!CAUTION]
-> The plan is generated based on the inter-dependencies of your projects. You can prevent the upgrade from succeeding if you modify the plan in such a way that the migration path can't complete. For example, if **Project A** depends on **Project B** and you remove **Project B** from the upgrade plan, upgrading **Project A** might fail.
+> The plan is generated based on the inter-dependencies of your projects. The upgrade won't succeed if you modify the plan in such a way that the migration path can't complete. For example, if **Project A** depends on **Project B** and you remove **Project B** from the upgrade plan, upgrading **Project A** might fail.
The following snippet demonstrates the structure of a plan:
@@ -114,7 +114,7 @@ NuGet packages used across all selected projects or their dependencies that need
## Perform the upgrade
-Once an upgrade plan is ready, tell the Copilot to start the upgrade. Once the upgrade process starts, Copilot lets you know what it's doing in the chat window and it opens the **Upgrade Progress Details** document, which lists the status of every step. If it runs into a problem, Copilot pauses and asks for your direction or help in fixing these problems.
+Once an upgrade plan is ready, tell Copilot to start the upgrade. Once the upgrade process starts, Copilot lets you know what it's doing in the chat window and it opens the **Upgrade Progress Details** document, which lists the status of every step. If it runs into a problem, Copilot pauses and asks for your direction or help in fixing these problems.
The tool differs in experience based on whether or not Copilot _agent mode_ is enabled.
diff --git a/docs/core/porting/index.md b/docs/core/porting/index.md
index f677586529c31..cd3e21a48e705 100644
--- a/docs/core/porting/index.md
+++ b/docs/core/porting/index.md
@@ -27,7 +27,7 @@ Consider the following dependencies before you migrate a Windows Forms or WPF ap
For tutorials on migrating your desktop application to .NET, see one of the following articles:
-- [Migrate .NET Framework WPF apps to .NET](/dotnet/desktop/wpf/migration/convert-project-from-net-framework)
+- [How to upgrade a WPF desktop app to .NET](/dotnet/desktop/wpf/migration/)
- [Migrate .NET Framework Windows Forms apps to .NET](/dotnet/desktop/winforms/migration/)
## Windows-specific APIs
@@ -173,6 +173,6 @@ When porting your application to .NET, consider the following suggestions in ord
- [Overview of the .NET Upgrade Assistant](upgrade-assistant-overview.md)
- [ASP.NET to ASP.NET Core migration](/aspnet/core/migration/proper-to-2x)
-- [Migrate .NET Framework WPF apps to .NET](/dotnet/desktop/wpf/migration/convert-project-from-net-framework)
+- [How to upgrade a WPF desktop app to .NET](/dotnet/desktop/wpf/migration/)
- [Migrate .NET Framework Windows Forms apps to .NET](/dotnet/desktop/winforms/migration/)
- [.NET 5 vs. .NET Framework for server apps](../../standard/choosing-core-framework-server.md)
diff --git a/docs/core/whats-new/dotnet-core-3-0.md b/docs/core/whats-new/dotnet-core-3-0.md
index 309bd6e3e2a33..6127c9ab8167b 100644
--- a/docs/core/whats-new/dotnet-core-3-0.md
+++ b/docs/core/whats-new/dotnet-core-3-0.md
@@ -296,7 +296,7 @@ dotnet new winforms
Visual Studio 2019 adds **New Project** templates for .NET Core 3.0 Windows Forms and WPF.
-For more information about how to port an existing .NET Framework application, see [Port WPF projects](/dotnet/desktop/wpf/migration/convert-project-from-net-framework) and [Port Windows Forms projects](/dotnet/desktop/winforms/migration/).
+For more information about how to port an existing .NET Framework application, see [How to upgrade a WPF desktop app to .NET](/dotnet/desktop/wpf/migration/) and [Port Windows Forms projects](/dotnet/desktop/winforms/migration/).
#### WinForms high DPI
diff --git a/docs/csharp/fundamentals/program-structure/top-level-statements.md b/docs/csharp/fundamentals/program-structure/top-level-statements.md
index fdf8239d96948..2d9889234055e 100644
--- a/docs/csharp/fundamentals/program-structure/top-level-statements.md
+++ b/docs/csharp/fundamentals/program-structure/top-level-statements.md
@@ -42,7 +42,7 @@ In a project with top-level statements, you can't use the [-main](../../language
## `using` directives
-If you include `using` directives, they must come first in the file, as in this example:
+For the single file containing top-level statements `using` directives must come first in that file, as in this example:
:::code language="csharp" source="snippets/top-level-statements-1/Program.cs":::
diff --git a/docs/fundamentals/code-analysis/style-rules/naming-rules.md b/docs/fundamentals/code-analysis/style-rules/naming-rules.md
index 50559f9c0d552..5f392c2412d9d 100644
--- a/docs/fundamentals/code-analysis/style-rules/naming-rules.md
+++ b/docs/fundamentals/code-analysis/style-rules/naming-rules.md
@@ -123,8 +123,6 @@ All naming rule properties are required for a rule to take effect.
The order in which naming rules are defined in an EditorConfig file doesn't matter. The naming rules are automatically ordered according to the definitions of the rules themselves. More specific rules regarding accessibilities, modifiers, and symbols take precedence over less specific rules. If there's overlap between rules or if the rule ordering causes problems, you can break out the intersection of the two rules into a new rule that takes precedence over the broader rules from which it was derived. For examples, see [Example: Overlapping naming strategies](#example-overlapping-naming-strategies) and [Example: `const` modifier includes `static` and `readonly`](#example-const-modifier-includes-static-and-readonly).
-The [EditorConfig Language Service extension](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.EditorConfig) can analyze an EditorConfig file and report cases where the rule ordering in the file is different to what the compiler will use at run time.
-
> [!NOTE]
> If you're using a version of Visual Studio earlier than Visual Studio 2019, naming rules should be ordered from most-specific to least-specific in the EditorConfig file. The first rule encountered that can be applied is the only rule that is applied. However, if there are multiple rule *properties* with the same name, the most recently found property with that name takes precedence. For more information, see [File hierarchy and precedence](/visualstudio/ide/create-portable-custom-editor-options#file-hierarchy-and-precedence).
diff --git a/docs/fundamentals/networking/telemetry/includes/aspire-telemetry-overview.md b/docs/fundamentals/networking/telemetry/includes/aspire-telemetry-overview.md
index 85af5fd92a2e1..68f4246c01113 100644
--- a/docs/fundamentals/networking/telemetry/includes/aspire-telemetry-overview.md
+++ b/docs/fundamentals/networking/telemetry/includes/aspire-telemetry-overview.md
@@ -2,6 +2,6 @@ A simple way to collect traces and metrics in ASP.NET applications is to use [.N
The default project templates for .NET Aspire contain a `ServiceDefaults` project. Each service in the .NET Aspire solution has a reference to the Service Defaults project. The services use it to set up and configure OTel.
-The Service Defaults project template includes the OTel SDK, ASP.NET, HttpClient, and Runtime Instrumentation packages. These instrumentation components are configured in the [Extensions.cs](https://github.com/dotnet/aspire/blob/main/src/Aspire.ProjectTemplates/templates/aspire-servicedefaults/9.1/Extensions.cs) file. To support telemetry visualization in Aspire Dashboard, the Service Defaults project also includes the OTLP exporter by default.
+The Service Defaults project template includes the OTel SDK, ASP.NET, HttpClient, and Runtime Instrumentation packages. These instrumentation components are configured in the [Extensions.cs](https://github.com/dotnet/aspire/blob/main/src/Aspire.ProjectTemplates/templates/aspire-servicedefaults/9.3/Extensions.cs) file. To support telemetry visualization in Aspire Dashboard, the Service Defaults project also includes the OTLP exporter by default.
Aspire Dashboard is designed to bring telemetry observation to the local debug cycle, which enables developers to ensure that the applications are producing telemetry. The telemetry visualization also helps to diagnose those applications locally. Being able to observe the calls between services is as useful at debug time as in production. The .NET Aspire dashboard is launched automatically when you F5 the `AppHost` Project from Visual Studio or `dotnet run` the `AppHost` project from command line.
diff --git a/docs/fundamentals/runtime-libraries/snippets/System/Span/Overview/csharp/Program2.cs b/docs/fundamentals/runtime-libraries/snippets/System/Span/Overview/csharp/Program2.cs
index 75bfaeff52a93..f1aa05d9b584c 100644
--- a/docs/fundamentals/runtime-libraries/snippets/System/Span/Overview/csharp/Program2.cs
+++ b/docs/fundamentals/runtime-libraries/snippets/System/Span/Overview/csharp/Program2.cs
@@ -5,15 +5,16 @@ class Program2
static void Run()
{
string contentLength = "Content-Length: 132";
- var length = GetContentLength(contentLength.ToCharArray());
+ int length = GetContentLength(contentLength.ToCharArray());
Console.WriteLine($"Content length: {length}");
}
private static int GetContentLength(ReadOnlySpan span)
{
- var slice = span.Slice(16);
+ ReadOnlySpan slice = span.Slice(16);
return int.Parse(slice);
}
}
+
// Output:
// Content length: 132
diff --git a/docs/fundamentals/runtime-libraries/snippets/System/Span/Overview/csharp/Project.csproj b/docs/fundamentals/runtime-libraries/snippets/System/Span/Overview/csharp/Project.csproj
index 44a42c18ccbab..1d2763556b47b 100644
--- a/docs/fundamentals/runtime-libraries/snippets/System/Span/Overview/csharp/Project.csproj
+++ b/docs/fundamentals/runtime-libraries/snippets/System/Span/Overview/csharp/Project.csproj
@@ -1,8 +1,8 @@
- Library
- net8
+ Exe
+ net9
true
diff --git a/docs/fundamentals/runtime-libraries/snippets/System/Span/Overview/csharp/program.cs b/docs/fundamentals/runtime-libraries/snippets/System/Span/Overview/csharp/program.cs
index 7f8c6be44df90..cd09f784a6788 100644
--- a/docs/fundamentals/runtime-libraries/snippets/System/Span/Overview/csharp/program.cs
+++ b/docs/fundamentals/runtime-libraries/snippets/System/Span/Overview/csharp/program.cs
@@ -20,18 +20,19 @@ private static void CreateSpanFromArray()
{
//
// Create a span over an array.
- var array = new byte[100];
- var arraySpan = new Span(array);
+ byte[] array = new byte[100];
+ Span arraySpan = new(array);
byte data = 0;
for (int ctr = 0; ctr < arraySpan.Length; ctr++)
arraySpan[ctr] = data++;
int arraySum = 0;
- foreach (var value in array)
+ foreach (byte value in array)
arraySum += value;
Console.WriteLine($"The sum is {arraySum}");
+
// Output: The sum is 4950
//
}
@@ -40,7 +41,7 @@ private static void CreateSpanFromNativeMemory()
{
//
// Create a span from native memory.
- var native = Marshal.AllocHGlobal(100);
+ nint native = Marshal.AllocHGlobal(100);
Span nativeSpan;
unsafe
{
@@ -51,11 +52,12 @@ private static void CreateSpanFromNativeMemory()
nativeSpan[ctr] = data++;
int nativeSum = 0;
- foreach (var value in nativeSpan)
+ foreach (byte value in nativeSpan)
nativeSum += value;
Console.WriteLine($"The sum is {nativeSum}");
Marshal.FreeHGlobal(native);
+
// Output: The sum is 4950
//
}
@@ -70,10 +72,11 @@ private static void CreateSpanFromStack()
stackSpan[ctr] = data++;
int stackSum = 0;
- foreach (var value in stackSpan)
+ foreach (byte value in stackSpan)
stackSum += value;
Console.WriteLine($"The sum is {stackSum}");
+
// Output: The sum is 4950
//
}
@@ -85,8 +88,8 @@ public class ProgramB
public static void WorkWithSpans()
{
// Create a span over an array.
- var array = new byte[100];
- var arraySpan = new Span(array);
+ byte[] array = new byte[100];
+ Span arraySpan = new(array);
InitializeSpan(arraySpan);
Console.WriteLine($"The sum is {ComputeSum(arraySpan):N0}");
@@ -118,14 +121,15 @@ public static void InitializeSpan(Span span)
span[ctr] = value++;
}
- public static int ComputeSum(Span span)
+ public static int ComputeSum(ReadOnlySpan span)
{
int sum = 0;
- foreach (var value in span)
+ foreach (byte value in span)
sum += value;
return sum;
}
+
// The example displays the following output:
// The sum is 4,950
// The sum is 4,950
diff --git a/docs/fundamentals/runtime-libraries/system-span{t}.md b/docs/fundamentals/runtime-libraries/system-span{t}.md
index b84e1004e4ac7..64ae36d1b056b 100644
--- a/docs/fundamentals/runtime-libraries/system-span{t}.md
+++ b/docs/fundamentals/runtime-libraries/system-span{t}.md
@@ -1,7 +1,7 @@
---
title: System.Span struct
description: Learn about the System.Span\ struct.
-ms.date: 12/31/2023
+ms.date: 05/21/2025
dev_langs:
- CSharp
- FSharp
@@ -34,7 +34,7 @@ The following example uses the C# [stackalloc](/dotnet/csharp/language-reference
:::code language="csharp" source="./snippets/System/Span/Overview/csharp/program.cs" id="Snippet3":::
:::code language="fsharp" source="./snippets/System/Span/Overview/fsharp/program.fs" id="Snippet3":::
-Because `Span` is an abstraction over an arbitrary block of memory, methods of the `Span` type and methods with `Span` parameters operate on any `Span` object regardless of the kind of memory it encapsulates. For example, each of the separate sections of code that initialize the span and calculate the sum of its elements can be changed into single initialization and calculation methods, as the following example illustrates:
+Because `Span` is an abstraction over an arbitrary block of memory, methods of the `Span` type and methods with `Span` parameters operate on any `Span` object regardless of the kind of memory it encapsulates. For example, each of the separate sections of code that initialize the span and calculate the sum of its elements can be refactored into single initialization and calculation methods, as the following example illustrates:
:::code language="csharp" source="./snippets/System/Span/Overview/csharp/program.cs" id="Snippet4":::
:::code language="fsharp" source="./snippets/System/Span/Overview/fsharp/program.fs" id="Snippet4":::
diff --git a/docs/fundamentals/toc.yml b/docs/fundamentals/toc.yml
index cbd051f5dba7d..85bb1fda93b0d 100644
--- a/docs/fundamentals/toc.yml
+++ b/docs/fundamentals/toc.yml
@@ -1098,6 +1098,8 @@ items:
displayName: high-performance logging,high-performance log,high-performance logging provider,high-performance log provider
- name: Log Sampling
href: ../core/extensions/log-sampling.md
+ - name: Log Buffering
+ href: ../core/extensions/log-buffering.md
- name: Console log formatting
href: ../core/extensions/console-log-formatter.md
displayName: console log formatting,console log formatter,console log formatting provider,console log formatter provider
diff --git a/docs/machine-learning/reference/ml-net-cli-reference.md b/docs/machine-learning/reference/ml-net-cli-reference.md
index 0fb4ae93dc61b..54bef26d8916c 100644
--- a/docs/machine-learning/reference/ml-net-cli-reference.md
+++ b/docs/machine-learning/reference/ml-net-cli-reference.md
@@ -56,7 +56,7 @@ The `mlnet` ML task commands (`classification`, `regression`, `recommendation`,
### Classification options
-Running `mlnet classification` will train a classification model. Choose this command if you want an ML Model to categorize data into 2 or more classes (e.g. sentiment analysis).
+Running `mlnet classification` will train a classification model. Choose this command if you want an ML Model to categorize data into 2 or more classes (for example, sentiment analysis).
```console
mlnet classification
@@ -90,7 +90,7 @@ mlnet classification
### Regression options
-Running `mlnet regression` will train a regression model. Choose this command if you want an ML Model to predict a numeric value (e.g. price prediction).
+Running `mlnet regression` will train a regression model. Choose this command if you want an ML Model to predict a numeric value (for example, price prediction).
```console
mlnet regression
@@ -125,7 +125,7 @@ mlnet regression
### Recommendation options
-Running `mlnet recommendation` will train a recommendation model. Choose this command if you want an ML Model to recommend items to users based on ratings (e.g. product recommendation).
+Running `mlnet recommendation` will train a recommendation model. Choose this command if you want an ML Model to recommend items to users based on ratings (for example, product recommendation).
```console
mlnet recommendation
@@ -291,7 +291,7 @@ This argument is used only for the *recommendation* task.
With this argument, you can ignore existing columns in the dataset file so they are not loaded and used by the training processes.
-Specify the columns names that you want to ignore. Use ', ' (comma with space) or ' ' (space) to separate multiple column names. You can use quotes for column names containing whitespace (e.g. "logged in").
+Specify the columns names that you want to ignore. Use ', ' (comma with space) or ' ' (space) to separate multiple column names. You can use quotes for column names containing whitespace (for example, "logged in").
Example:
diff --git a/docs/navigate/tools-diagnostics/toc.yml b/docs/navigate/tools-diagnostics/toc.yml
index bbef7e7fbb8e2..bea6baa9833bb 100644
--- a/docs/navigate/tools-diagnostics/toc.yml
+++ b/docs/navigate/tools-diagnostics/toc.yml
@@ -363,8 +363,10 @@ items:
href: ../../core/diagnostics/logging-tracing.md
- name: ILogger Logging
href: ../../core/extensions/logging.md
- - name: Log Sampling
+ - name: Log sampling
href: ../../core/extensions/log-sampling.md
+ - name: Log buffering
+ href: ../../core/extensions/log-buffering.md
- name: Observability with OpenTelemetry
items:
- name: Overview
diff --git a/docs/orleans/deployment/multi-cluster-support/gossip-channels.md b/docs/orleans/deployment/multi-cluster-support/gossip-channels.md
index e51ba97e57cd5..791d29bd1a4f4 100644
--- a/docs/orleans/deployment/multi-cluster-support/gossip-channels.md
+++ b/docs/orleans/deployment/multi-cluster-support/gossip-channels.md
@@ -34,7 +34,7 @@ Gossip is a mechanism for clusters to share configuration and status information
- The current time-stamped [multi-cluster configuration](multi-cluster-configuration.md).
- A dictionary that contains information about cluster gateways. The key is the silo address, and the value contains (1) a timestamp, (2) the cluster id, and (3) a status, which is either active or inactive.
-**Fast & Slow Propagation**. When a gateway changes its status, or when an operator injects a new configuration, this gossip information is immediately sent to all silos, clusters, and gossip channels. This happens fast but is not reliable. Should the message be lost due to any reasons (e.g. races, broken sockets, silo failures), our periodic background gossip ensures that the information eventually spreads, albeit more slowly. All information is eventually propagated everywhere and is highly resilient to occasional message loss and failures.
+**Fast & Slow Propagation**. When a gateway changes its status, or when an operator injects a new configuration, this gossip information is immediately sent to all silos, clusters, and gossip channels. This happens fast but is not reliable. Should the message be lost due to any reasons (for example, races, broken sockets, silo failures), our periodic background gossip ensures that the information eventually spreads, albeit more slowly. All information is eventually propagated everywhere and is highly resilient to occasional message loss and failures.
All gossip data is timestamped, which ensures that newer information replaces older information regardless of the relative timing of messages. For example, newer multi-cluster configurations replace older ones, and newer information about a gateway replaces older information about that gateway. For more details on the representation of gossip data, see the `MultiClusterData` class. It has a `Merge` method that combines gossip data, resolving conflicts using timestamps.
diff --git a/docs/orleans/deployment/multi-cluster-support/multi-cluster-configuration.md b/docs/orleans/deployment/multi-cluster-support/multi-cluster-configuration.md
index 5b2b40201eca7..5e2aed526c040 100644
--- a/docs/orleans/deployment/multi-cluster-support/multi-cluster-configuration.md
+++ b/docs/orleans/deployment/multi-cluster-support/multi-cluster-configuration.md
@@ -76,7 +76,7 @@ If using the Azure table-based gossip channel, operators can inject a new config
|-----------------|----------|---------------------------------------------------------|
| PartitionKey | String | the ServiceId |
| RowKey | String | "CONFIG" |
-| Clusters | String | comma-separated list of cluster IDs, e.g. "us1,eu1,us2" |
+| Clusters | String | comma-separated list of cluster IDs, for example, "us1,eu1,us2" |
| Comment | String | optional comment |
| GossipTimestamp | DateTime | UTC timestamp for the configuration |
diff --git a/docs/orleans/grains/event-sourcing/log-consistency-providers.md b/docs/orleans/grains/event-sourcing/log-consistency-providers.md
index 8de50c8b592fe..ba9e4c5da2e8d 100644
--- a/docs/orleans/grains/event-sourcing/log-consistency-providers.md
+++ b/docs/orleans/grains/event-sourcing/log-consistency-providers.md
@@ -51,6 +51,6 @@ The consistency provider expects these to behave a certain way. Programmers shou
* must return false if the expected version does not match the actual version (this is analogous to an e-tag check).
-* If `ApplyUpdatesToStorage` fails with an exception, the consistency provider retries. This means some events could be duplicated if such an exception is thrown, but the event was persisted. The developer is responsible to make sure this is safe: e.g. either avoid this case by not throwing an exception, or ensure duplicated events are harmless for the application logic, or add some extra mechanism to filter duplicates.
+* If `ApplyUpdatesToStorage` fails with an exception, the consistency provider retries. This means some events could be duplicated if such an exception is thrown, but the event was persisted. The developer is responsible to make sure this is safe: for example, either avoid this case by not throwing an exception, or ensure duplicated events are harmless for the application logic, or add some extra mechanism to filter duplicates.
This provider does not support `RetrieveConfirmedEvents`. Of course, since the developer controls the storage interface anyway, they don't need to call this in the first place, but can implement their event retrieval.
diff --git a/docs/orleans/grains/grain-persistence/relational-storage.md b/docs/orleans/grains/grain-persistence/relational-storage.md
index f00befb86027b..1d902511121c5 100644
--- a/docs/orleans/grains/grain-persistence/relational-storage.md
+++ b/docs/orleans/grains/grain-persistence/relational-storage.md
@@ -10,7 +10,7 @@ Relational storage backend code in Orleans is built on generic ADO.NET functiona
To make Orleans code function with a given relational database backend, the following is required:
-1. The appropriate ADO.NET library must be loaded into the process. This should be defined as usual, e.g. via the [DbProviderFactories](../../../framework/data/adonet/obtaining-a-dbproviderfactory.md) element in the application configuration.
+1. The appropriate ADO.NET library must be loaded into the process. This should be defined as usual, for example, via the [DbProviderFactories](../../../framework/data/adonet/obtaining-a-dbproviderfactory.md) element in the application configuration.
2. Configure the ADO.NET invariant via the `Invariant` property in the options.
3. The database needs to exist and be compatible with the code. This is done by running a vendor-specific database creation script. For more information, see [ADO.NET Configuration](../../host/configuration-guide/adonet-configuration.md).
@@ -119,13 +119,13 @@ In practice, this means adhering to ADO.NET implementation goals, and some added
In addition to the usual storage provider capabilities, the ADO.NET provider has built-in capability to:
-1. Change storage data from one format to another (e.g. from JSON to binary) when round-tripping state.
+1. Change storage data from one format to another (for example, from JSON to binary) when round-tripping state.
2. Shape the type to be saved or read from the storage in arbitrary ways. This allows the version of the state to evolve.
3. Stream data out of the database.
Both `1.` and `2.` can be applied based on arbitrary decision parameters, such as *grain ID*, *grain type*, *payload data*.
-This is the case so that you can choose a serialization format, e.g. [Simple Binary Encoding (SBE)](https://github.com/real-logic/simple-binary-encoding) and implements and . The built-in serializers have been built using this method:
+This is the case so that you can choose a serialization format, for example, [Simple Binary Encoding (SBE)](https://github.com/real-logic/simple-binary-encoding) and implements and . The built-in serializers have been built using this method:
-
-
@@ -155,7 +155,7 @@ Vendors have implemented different extensions and features within their products
### 4. Make it possible to optimize hardware resources
-When designing an application, it is often possible to anticipate which data needs to be inserted faster than other data, and which data could more likely be put into *cold storage*, which is cheaper (e.g. splitting data between SSD and HDD). Additional considerations include the physical location of the data (some data could be more expensive (e.g. SSD RAID viz HDD RAID), or more secured), or some other decision basis. Related to *point 3.*, some databases offer special partitioning schemes, such as SQL Server [Partitioned Tables and Indexes](/sql/relational-databases/partitions/partitioned-tables-and-indexes).
+When designing an application, it is often possible to anticipate which data needs to be inserted faster than other data, and which data could more likely be put into *cold storage*, which is cheaper (for example, splitting data between SSD and HDD). Additional considerations include the physical location of the data (some data could be more expensive (for example, SSD RAID viz HDD RAID), or more secured), or some other decision basis. Related to *point 3.*, some databases offer special partitioning schemes, such as SQL Server [Partitioned Tables and Indexes](/sql/relational-databases/partitions/partitioned-tables-and-indexes).
These principles apply throughout the application life-cycle. Considering that one of the principles of Orleans itself is high availability, it should be possible to adjust the storage system without interruption to the Orleans deployment, or it should be possible to adjust the queries according to data and other application parameters. An example of dynamic changes may be seen in Brian Harry's [blog post](https://devblogs.microsoft.com/bharry/a-bit-more-on-the-feb-3-and-4-incidents/):
@@ -171,7 +171,7 @@ This is both fast and has less surface exposed to the ADO.NET library implementa
### 7. Make the design shardable
-When it makes sense, for instance in a relational storage provider, make the design readily shardable. For instance, this means using no database-dependent data (e.g. `IDENTITY`). Information that distinguishes row data should build on only data from the actual parameters.
+When it makes sense, for instance in a relational storage provider, make the design readily shardable. For instance, this means using no database-dependent data (for example, `IDENTITY`). Information that distinguishes row data should build on only data from the actual parameters.
### 8. Make the design easy to test
@@ -227,5 +227,5 @@ The altered scripts can be tested by running the Orleans test suite, or straight
## Guidelines for adding new ADO.NET providers
1. Add a new database setup script according to the [Realization of the goals](#realization-of-the-goals) section above.
-2. Add the vendor ADO invariant name to and ADO.NET provider-specific data to [DbConstantsStore](https://github.com/dotnet/orleans/blob/main/src/AdoNet/Shared/Storage/DbConstantsStore.cs). These are (potentially) used in some query operations. e.g. to select the correct statistics insert mode (i.e. the `UNION ALL` with or without `FROM DUAL`).
+2. Add the vendor ADO invariant name to and ADO.NET provider-specific data to [DbConstantsStore](https://github.com/dotnet/orleans/blob/main/src/AdoNet/Shared/Storage/DbConstantsStore.cs). These are (potentially) used in some query operations. for example, to select the correct statistics insert mode (i.e. the `UNION ALL` with or without `FROM DUAL`).
3. Orleans has comprehensive tests for all system stores: membership, reminders and statistics. Adding tests for the new database script is done by copy-pasting existing test classes and changing the ADO invariant name. Also, derive from [RelationalStorageForTesting](https://github.com/dotnet/orleans/blob/main/test/Extensions/TesterAdoNet/RelationalUtilities/RelationalStorageForTesting.cs) in order to define test functionality for the ADO invariant.
diff --git a/docs/orleans/grains/interceptors.md b/docs/orleans/grains/interceptors.md
index 303de38143cb5..7f05f4f4a72e1 100644
--- a/docs/orleans/grains/interceptors.md
+++ b/docs/orleans/grains/interceptors.md
@@ -376,7 +376,7 @@ One may argue that this is pretty okay since the client would never handle the `
But what if the client wants at least to log the exception? The problem is that the original error message is lost. One way to work around this issue is to intercept server-side exceptions and replace them with plain exceptions of type `Exception` if the exception type is presumably unknown on the client-side.
-However, there is one important thing we have to keep in mind: we only want to replace an exception **if the caller is the grain client**. We don't want to replace an exception if the caller is another grain (or the Orleans infrastructure which is making grain calls, too; e.g. on the `GrainBasedReminderTable` grain).
+However, there is one important thing we have to keep in mind: we only want to replace an exception **if the caller is the grain client**. We don't want to replace an exception if the caller is another grain (or the Orleans infrastructure which is making grain calls, too; for example, on the `GrainBasedReminderTable` grain).
On the server-side this can be done with a silo-level interceptor:
diff --git a/docs/orleans/grains/observers.md b/docs/orleans/grains/observers.md
index adf5953693df0..6458f5504eb8b 100644
--- a/docs/orleans/grains/observers.md
+++ b/docs/orleans/grains/observers.md
@@ -16,7 +16,7 @@ For this reason, the `ObserverManager` utility removes subscriptions after a
To subscribe to a notification, the client must first create a local object that implements the observer interface. It then calls a method on the observer factory, `, to turn the object into a grain reference, which can then be passed to the subscription method on the notifying grain.
-This model can also be used by other grains to receive asynchronous notifications. Grains can also implement interfaces. Unlike in the client subscription case, the subscribing grain simply implements the observer interface and passes in a reference to itself (e.g. `this.AsReference()`). There is no need for `CreateObjectReference()` because grains are already addressable.
+This model can also be used by other grains to receive asynchronous notifications. Grains can also implement interfaces. Unlike in the client subscription case, the subscribing grain simply implements the observer interface and passes in a reference to itself (for example, `this.AsReference()`). There is no need for `CreateObjectReference()` because grains are already addressable.
## Code example
diff --git a/docs/orleans/implementation/cluster-management.md b/docs/orleans/implementation/cluster-management.md
index 026a081f7864e..fac8ed47bd503 100644
--- a/docs/orleans/implementation/cluster-management.md
+++ b/docs/orleans/implementation/cluster-management.md
@@ -65,7 +65,7 @@ In addition to the each silo participates in a f
3. When silo S updates the status of silo P:
- S first reads the latest table state
- In a single atomic operation, it updates both P's row and increments the version number
- - If the atomic update fails (e.g., due to concurrent modifications), the operation is retried with exponential backoff
+ - If the atomic update fails (for example, due to concurrent modifications), the operation is retried with exponential backoff
**Scalability considerations**:
diff --git a/docs/orleans/resources/links.md b/docs/orleans/resources/links.md
index b93c5f1b6dcea..8f07b059f8e7a 100644
--- a/docs/orleans/resources/links.md
+++ b/docs/orleans/resources/links.md
@@ -28,7 +28,6 @@ In this article, you'll discover a listing of various links from the Orleans tea
- [Introduction to Orleans](https://channel9.msdn.com/Events/TechDays/Techdays-2014-the-Netherlands/Introduction-to-Orleans)
- [Project Orleans: Different Than Erlang, Designed for a Broad Group of Developers](https://thenewstack.io/project-orleans-different-than-erlang-designed-for-a-broad-group-of-developers/)
- [Hatay Tuna & Christian Martinez - Applied Actor Model with Orleans](https://github.com/hataytuna/Distributed/blob/master/Applied%20Actor%20Model%20with%20Orleans%20v1.1.pdf)
-- [Actor Programming with Orleans: What's Different?](https://www.postsharp.net/blog/post/Actor-Programming-with-Orleans-Whats-Different)
- [Project Orleans - Actor Model framework](https://www.slideshare.net/nmackenzie/project-orleans)
- [A look at Microsoft Orleans through Erlang-tinted glasses](https://theburningmonk.com/2014/12/a-look-at-microsoft-orleans-through-erlang-tinted-glasses/)
- [Intro to Virtual Actors By Microsoft Orleans](https://bogdan-dina03.medium.com/intro-to-virtual-actors-by-microsoft-orleans-6ae3264f138d)
diff --git a/docs/standard/design-guidelines/arrays.md b/docs/standard/design-guidelines/arrays.md
index a4de44b53d95d..a5464434686c2 100644
--- a/docs/standard/design-guidelines/arrays.md
+++ b/docs/standard/design-guidelines/arrays.md
@@ -18,7 +18,7 @@ helpviewer_keywords:
✔️ CONSIDER using jagged arrays instead of multidimensional arrays.
- A jagged array is an array with elements that are also arrays. The arrays that make up the elements can be of different sizes, leading to less wasted space for some sets of data (e.g., sparse matrix) compared to multidimensional arrays. Furthermore, the CLR optimizes index operations on jagged arrays, so they might exhibit better runtime performance in some scenarios.
+ A jagged array is an array with elements that are also arrays. The arrays that make up the elements can be of different sizes, leading to less wasted space for some sets of data (for example, sparse matrix) compared to multidimensional arrays. Furthermore, the CLR optimizes index operations on jagged arrays, so they might exhibit better runtime performance in some scenarios.
*Portions © 2005, 2009 Microsoft Corporation. All rights reserved.*
diff --git a/docs/standard/design-guidelines/dependency-properties.md b/docs/standard/design-guidelines/dependency-properties.md
index 64ba0e71297c1..65da116bcbc11 100644
--- a/docs/standard/design-guidelines/dependency-properties.md
+++ b/docs/standard/design-guidelines/dependency-properties.md
@@ -10,7 +10,7 @@ ms.assetid: 212cfb1e-cec4-4047-94a6-47209b387f6f
A dependency property (DP) is a regular property that stores its value in a property store instead of storing it in a type variable (field), for example.
- An attached dependency property is a kind of dependency property modeled as static Get and Set methods representing "properties" describing relationships between objects and their containers (e.g., the position of a `Button` object on a `Panel` container).
+ An attached dependency property is a kind of dependency property modeled as static Get and Set methods representing "properties" describing relationships between objects and their containers (for example, the position of a `Button` object on a `Panel` container).
✔️ DO provide the dependency properties, if you need the properties to support WPF features such as styling, triggers, data binding, animations, dynamic resources, and inheritance.
diff --git a/docs/standard/design-guidelines/dispose-pattern.md b/docs/standard/design-guidelines/dispose-pattern.md
index e35c03a57956e..04938bbefac53 100644
--- a/docs/standard/design-guidelines/dispose-pattern.md
+++ b/docs/standard/design-guidelines/dispose-pattern.md
@@ -26,7 +26,7 @@ All programs acquire one or more system resources, such as memory, system handle
Although finalizers are effective in some cleanup scenarios, they have two significant drawbacks:
-- The finalizer is called when the GC detects that an object is eligible for collection. This happens at some undetermined period of time after the resource is not needed anymore. The delay between when the developer could or would like to release the resource and the time when the resource is actually released by the finalizer might be unacceptable in programs that acquire many scarce resources (resources that can be easily exhausted) or in cases in which resources are costly to keep in use (e.g., large unmanaged memory buffers).
+- The finalizer is called when the GC detects that an object is eligible for collection. This happens at some undetermined period of time after the resource is not needed anymore. The delay between when the developer could or would like to release the resource and the time when the resource is actually released by the finalizer might be unacceptable in programs that acquire many scarce resources (resources that can be easily exhausted) or in cases in which resources are costly to keep in use (for example, large unmanaged memory buffers).
- When the CLR needs to call a finalizer, it must postpone collection of the object’s memory until the next round of garbage collection (the finalizers run between collections). This means that the object’s memory (and all objects it refers to) will not be released for a longer period of time.
@@ -78,7 +78,7 @@ public class DisposableResourceHolder : IDisposable {
}
```
- The Boolean parameter `disposing` indicates whether the method was invoked from the `IDisposable.Dispose` implementation or from the finalizer. The `Dispose(bool)` implementation should check the parameter before accessing other reference objects (e.g., the resource field in the preceding sample). Such objects should only be accessed when the method is called from the `IDisposable.Dispose` implementation (when the `disposing` parameter is equal to true). If the method is invoked from the finalizer (`disposing` is false), other objects should not be accessed. The reason is that objects are finalized in an unpredictable order and so they, or any of their dependencies, might already have been finalized.
+ The Boolean parameter `disposing` indicates whether the method was invoked from the `IDisposable.Dispose` implementation or from the finalizer. The `Dispose(bool)` implementation should check the parameter before accessing other reference objects (for example, the resource field in the preceding sample). Such objects should only be accessed when the method is called from the `IDisposable.Dispose` implementation (when the `disposing` parameter is equal to true). If the method is invoked from the finalizer (`disposing` is false), other objects should not be accessed. The reason is that objects are finalized in an unpredictable order and so they, or any of their dependencies, might already have been finalized.
Also, this section applies to classes with a base that does not already implement the Dispose Pattern. If you are inheriting from a class that already implements the pattern, simply override the `Dispose(bool)` method to provide additional resource cleanup logic.
diff --git a/docs/standard/design-guidelines/extension-methods.md b/docs/standard/design-guidelines/extension-methods.md
index c37995e61e045..b77fb5d6b11be 100644
--- a/docs/standard/design-guidelines/extension-methods.md
+++ b/docs/standard/design-guidelines/extension-methods.md
@@ -36,7 +36,7 @@ Extension methods are a language feature that allows static methods to be called
❌ DO NOT define extension methods implementing a feature in namespaces normally associated with other features. Instead, define them in the namespace associated with the feature they belong to.
- ❌ AVOID generic naming of namespaces dedicated to extension methods (e.g., "Extensions"). Use a descriptive name (e.g., "Routing") instead.
+ ❌ AVOID generic naming of namespaces dedicated to extension methods (for example, "Extensions"). Use a descriptive name (for example, "Routing") instead.
*Portions © 2005, 2009 Microsoft Corporation. All rights reserved.*
diff --git a/docs/standard/design-guidelines/guidelines-for-collections.md b/docs/standard/design-guidelines/guidelines-for-collections.md
index cf5e83601d836..4367bfeadfcdd 100644
--- a/docs/standard/design-guidelines/guidelines-for-collections.md
+++ b/docs/standard/design-guidelines/guidelines-for-collections.md
@@ -44,11 +44,11 @@ Any type designed specifically to manipulate a group of objects having some comm
✔️ DO use `Collection` or a subclass of `Collection` for properties or return values representing read/write collections.
- If `Collection` does not meet some requirement (e.g., the collection must not implement ), use a custom collection by implementing `IEnumerable`, `ICollection`, or .
+ If `Collection` does not meet some requirement (for example, the collection must not implement ), use a custom collection by implementing `IEnumerable`, `ICollection`, or .
✔️ DO use , a subclass of `ReadOnlyCollection`, or in rare cases `IEnumerable` for properties or return values representing read-only collections.
- In general, prefer `ReadOnlyCollection`. If it does not meet some requirement (e.g., the collection must not implement `IList`), use a custom collection by implementing `IEnumerable`, `ICollection`, or `IList`. If you do implement a custom read-only collection, implement `ICollection.IsReadOnly` to return `true`.
+ In general, prefer `ReadOnlyCollection`. If it does not meet some requirement (for example, the collection must not implement `IList`), use a custom collection by implementing `IEnumerable`, `ICollection`, or `IList`. If you do implement a custom read-only collection, implement `ICollection.IsReadOnly` to return `true`.
In cases where you are sure that the only scenario you will ever want to support is forward-only iteration, you can simply use `IEnumerable`.
@@ -78,7 +78,7 @@ Any type designed specifically to manipulate a group of objects having some comm
✔️ DO use either a snapshot collection or a live `IEnumerable` (or its subtype) to represent collections that are volatile (i.e., that can change without explicitly modifying the collection).
- In general, all collections representing a shared resource (e.g., files in a directory) are volatile. Such collections are very difficult or impossible to implement as live collections unless the implementation is simply a forward-only enumerator.
+ In general, all collections representing a shared resource (for example, files in a directory) are volatile. Such collections are very difficult or impossible to implement as live collections unless the implementation is simply a forward-only enumerator.
## Choosing Between Arrays and Collections
@@ -92,7 +92,7 @@ Any type designed specifically to manipulate a group of objects having some comm
✔️ DO use byte arrays instead of collections of bytes.
- ❌ DO NOT use arrays for properties if the property would have to return a new array (e.g., a copy of an internal array) every time the property getter is called.
+ ❌ DO NOT use arrays for properties if the property would have to return a new array (for example, a copy of an internal array) every time the property getter is called.
## Implementing Custom Collections
@@ -110,7 +110,7 @@ Any type designed specifically to manipulate a group of objects having some comm
### Naming Custom Collections
- Collections (types that implement `IEnumerable`) are created mainly for two reasons: (1) to create a new data structure with structure-specific operations and often different performance characteristics than existing data structures (e.g., , , ), and (2) to create a specialized collection for holding a specific set of items (e.g., ). Data structures are most often used in the internal implementation of applications and libraries. Specialized collections are mainly to be exposed in APIs (as property and parameter types).
+ Collections (types that implement `IEnumerable`) are created mainly for two reasons: (1) to create a new data structure with structure-specific operations and often different performance characteristics than existing data structures (for example, , , ), and (2) to create a specialized collection for holding a specific set of items (for example, ). Data structures are most often used in the internal implementation of applications and libraries. Specialized collections are mainly to be exposed in APIs (as property and parameter types).
✔️ DO use the "Dictionary" suffix in names of abstractions implementing `IDictionary` or `IDictionary`.
diff --git a/docs/standard/design-guidelines/names-of-classes-structs-and-interfaces.md b/docs/standard/design-guidelines/names-of-classes-structs-and-interfaces.md
index f5e88ce9fae7d..fb7af7d697b9e 100644
--- a/docs/standard/design-guidelines/names-of-classes-structs-and-interfaces.md
+++ b/docs/standard/design-guidelines/names-of-classes-structs-and-interfaces.md
@@ -28,7 +28,7 @@ The naming guidelines that follow apply to general type naming.
Nouns and noun phrases should be used rarely and they might indicate that the type should be an abstract class, and not an interface.
- ❌ DO NOT give class names a prefix (e.g., "C").
+ ❌ DO NOT give class names a prefix (for example, "C").
✔️ CONSIDER ending the name of derived classes with the name of the base class.
@@ -94,7 +94,7 @@ public interface ISessionChannel where TSession : ISession {
❌ DO NOT use "Flag" or "Flags" suffixes in enum type names.
- ❌ DO NOT use a prefix on enumeration value names (e.g., "ad" for ADO enums, "rtf" for rich text enums, etc.).
+ ❌ DO NOT use a prefix on enumeration value names (for example, "ad" for ADO enums, "rtf" for rich text enums, etc.).
*Portions © 2005, 2009 Microsoft Corporation. All rights reserved.*
diff --git a/docs/standard/design-guidelines/names-of-namespaces.md b/docs/standard/design-guidelines/names-of-namespaces.md
index f89529e9bade8..7a2f91afa9604 100644
--- a/docs/standard/design-guidelines/names-of-namespaces.md
+++ b/docs/standard/design-guidelines/names-of-namespaces.md
@@ -29,7 +29,7 @@ As with other naming guidelines, the goal when naming namespaces is creating suf
❌ DO NOT use organizational hierarchies as the basis for names in namespace hierarchies, because group names within corporations tend to be short-lived. Organize the hierarchy of namespaces around groups of related technologies.
- ✔️ DO use PascalCasing, and separate namespace components with periods (e.g., `Microsoft.Office.PowerPoint`). If your brand employs nontraditional casing, you should follow the casing defined by your brand, even if it deviates from normal namespace casing.
+ ✔️ DO use PascalCasing, and separate namespace components with periods (for example, `Microsoft.Office.PowerPoint`). If your brand employs nontraditional casing, you should follow the casing defined by your brand, even if it deviates from normal namespace casing.
✔️ CONSIDER using plural namespace names where appropriate.
diff --git a/docs/standard/design-guidelines/property.md b/docs/standard/design-guidelines/property.md
index 37ec27513533d..fee64c97be6fb 100644
--- a/docs/standard/design-guidelines/property.md
+++ b/docs/standard/design-guidelines/property.md
@@ -53,7 +53,7 @@ Although properties are technically very similar to methods, they are quite diff
If the design requires other types of parameters, strongly reevaluate whether the API really represents an accessor to a logical collection. If it does not, use a method. Consider starting the method name with `Get` or `Set`.
- ✔️ DO use the name `Item` for indexed properties unless there is an obviously better name (e.g., see the property on `System.String`).
+ ✔️ DO use the name `Item` for indexed properties unless there is an obviously better name (for example, see the property on `System.String`).
In C#, indexers are by default named Item. The can be used to customize this name.
diff --git a/docs/standard/design-guidelines/usage-guidelines.md b/docs/standard/design-guidelines/usage-guidelines.md
index 3b5ee7139ec7c..58f9a4efe2fcd 100644
--- a/docs/standard/design-guidelines/usage-guidelines.md
+++ b/docs/standard/design-guidelines/usage-guidelines.md
@@ -2,14 +2,14 @@
description: "Learn more about: Usage guidelines"
title: "Usage guidelines"
ms.date: "10/22/2008"
-helpviewer_keywords:
+helpviewer_keywords:
- "class library design guidelines [.NET Framework], usage guidelines"
ms.assetid: 42215ffa-a099-4a26-b14e-fb2bdb6f95b7
---
# Usage guidelines
-This section contains guidelines for using common types in publicly accessible APIs. It deals with direct usage of built-in Framework types (e.g., serialization attributes) and overloading common operators.
-
+This section contains guidelines for using common types in publicly accessible APIs. It deals with direct usage of built-in Framework types (for example, serialization attributes) and overloading common operators.
+
The interface is not covered in this section, but is discussed in the [Dispose Pattern](dispose-pattern.md) section.
> [!NOTE]
@@ -27,7 +27,7 @@ The interface is not cove
*Portions © 2005, 2009 Microsoft Corporation. All rights reserved.*
*Reprinted by permission of Pearson Education, Inc. from [Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition](https://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) by Krzysztof Cwalina and Brad Abrams, published Oct 22, 2008 by Addison-Wesley Professional as part of the Microsoft Windows Development Series.*
-
+
## See also
- [Framework Design Guidelines](index.md)
diff --git a/docs/standard/security/vulnerabilities-cbc-mode.md b/docs/standard/security/vulnerabilities-cbc-mode.md
index 4bb11910ed7ed..4281cf6267773 100644
--- a/docs/standard/security/vulnerabilities-cbc-mode.md
+++ b/docs/standard/security/vulnerabilities-cbc-mode.md
@@ -464,7 +464,7 @@ namespace Microsoft.Examples.Cryptography
byte[] generatedTag = tagGenerator.GetHashAndReset();
// The time it took to get to this point has so far been a function only
- // of the length of the data, or of non-encrypted values (e.g. it could
+ // of the length of the data, or of non-encrypted values (for example, it could
// take longer to prepare the *key* for the HMACSHA384 MAC than the
// HMACSHA256 MAC, but the algorithm choice wasn't a secret).
//