diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml
index cb2fc121d7691..0130c15b55935 100644
--- a/.github/workflows/scorecards.yml
+++ b/.github/workflows/scorecards.yml
@@ -71,6 +71,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
- uses: github/codeql-action/upload-sarif@3c3833e0f8c1c83d449a7478aa59c036a9165498 # v3.29.5
+ uses: github/codeql-action/upload-sarif@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.29.5
with:
sarif_file: results.sarif
diff --git a/.github/workflows/snippets5000.yml b/.github/workflows/snippets5000.yml
index e9aa457a8074a..b6a9908f3c4a9 100644
--- a/.github/workflows/snippets5000.yml
+++ b/.github/workflows/snippets5000.yml
@@ -41,7 +41,7 @@ jobs:
# Get the latest preview SDK (or sdk not installed by the runner)
- name: Setup .NET
if: ${{ env.DOTNET_DO_INSTALL == 'true' }}
- uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 #@4.3.1
+ uses: actions/setup-dotnet@d4c94342e560b34958eacfc5d055d21461ed1c5d #@5.0.0
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
dotnet-quality: ${{ env.DOTNET_QUALITY }}
diff --git a/docs/ai/quickstarts/snippets/evaluate-ai-responses/TestAI.csproj b/docs/ai/quickstarts/snippets/evaluate-ai-responses/TestAI.csproj
index e8d298c83a4f8..d231a1606df25 100644
--- a/docs/ai/quickstarts/snippets/evaluate-ai-responses/TestAI.csproj
+++ b/docs/ai/quickstarts/snippets/evaluate-ai-responses/TestAI.csproj
@@ -18,7 +18,7 @@
-
+
diff --git a/docs/ai/snippets/microsoft-extensions-ai/ConsoleAI.CustomClientMiddle/ConsoleAI.CustomClientMiddle.csproj b/docs/ai/snippets/microsoft-extensions-ai/ConsoleAI.CustomClientMiddle/ConsoleAI.CustomClientMiddle.csproj
index 03701415a1a65..47ffab39aba03 100644
--- a/docs/ai/snippets/microsoft-extensions-ai/ConsoleAI.CustomClientMiddle/ConsoleAI.CustomClientMiddle.csproj
+++ b/docs/ai/snippets/microsoft-extensions-ai/ConsoleAI.CustomClientMiddle/ConsoleAI.CustomClientMiddle.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/docs/ai/snippets/microsoft-extensions-ai/ConsoleAI.GetResponseAsyncArgs/ConsoleAI.GetResponseAsyncArgs.csproj b/docs/ai/snippets/microsoft-extensions-ai/ConsoleAI.GetResponseAsyncArgs/ConsoleAI.GetResponseAsyncArgs.csproj
index a174e5a00a793..8fe4ec8365d16 100644
--- a/docs/ai/snippets/microsoft-extensions-ai/ConsoleAI.GetResponseAsyncArgs/ConsoleAI.GetResponseAsyncArgs.csproj
+++ b/docs/ai/snippets/microsoft-extensions-ai/ConsoleAI.GetResponseAsyncArgs/ConsoleAI.GetResponseAsyncArgs.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/docs/ai/tutorials/snippets/evaluate-with-reporting/TestAIWithReporting.csproj b/docs/ai/tutorials/snippets/evaluate-with-reporting/TestAIWithReporting.csproj
index 94b7e581424f4..228a53d14e179 100644
--- a/docs/ai/tutorials/snippets/evaluate-with-reporting/TestAIWithReporting.csproj
+++ b/docs/ai/tutorials/snippets/evaluate-with-reporting/TestAIWithReporting.csproj
@@ -19,7 +19,7 @@
-
+
diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md
index 9c646449068e5..53fd5b3e9133f 100644
--- a/docs/azure/includes/dotnet-all.md
+++ b/docs/azure/includes/dotnet-all.md
@@ -86,7 +86,7 @@
| Playwright | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Developer.Playwright/1.0.0) | [docs](/dotnet/api/overview/azure/Developer.Playwright-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Developer.Playwright_1.0.0/sdk/loadtestservice/Azure.Developer.Playwright/) |
| Playwright NUnit | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Developer.Playwright.NUnit/1.0.0) | [docs](/dotnet/api/overview/azure/Developer.Playwright.NUnit-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Developer.Playwright.NUnit_1.0.0/sdk/loadtestservice/Azure.Developer.Playwright.NUnit/) |
| Programmable Connectivity | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Communication.ProgrammableConnectivity/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Communication.ProgrammableConnectivity-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.ProgrammableConnectivity_1.0.0-beta.1/sdk/communication/Azure.Communication.ProgrammableConnectivity/) |
-| Provisioning | NuGet [1.3.0](https://www.nuget.org/packages/Azure.Provisioning/1.3.0) | [docs](/dotnet/api/overview/azure/Provisioning-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning_1.3.0/sdk/provisioning/Azure.Provisioning/) |
+| Provisioning | NuGet [1.3.0](https://www.nuget.org/packages/Azure.Provisioning/1.3.0)
NuGet [1.4.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning/1.4.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning_1.3.0/sdk/provisioning/Azure.Provisioning/)
GitHub [1.4.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning_1.4.0-beta.1/sdk/provisioning/Azure.Provisioning/) |
| Provisioning - Resources | NuGet [0.2.0](https://www.nuget.org/packages/Azure.Provisioning.Resources/0.2.0) | [docs](/dotnet/api/overview/azure/Provisioning.Resources-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [0.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Resources_0.2.0/sdk/provisioning/Azure.Provisioning.Resources/) |
| Purview Account | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.Purview.Account/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.Purview.Account-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Purview.Account_1.0.0-beta.1/sdk/purview/Azure.Analytics.Purview.Account/) |
| Purview Administration | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.Purview.Administration/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.Purview.Administration-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Purview.Administration_1.0.0-beta.1/sdk/purview/Azure.Analytics.Purview.Administration/) |
@@ -253,7 +253,7 @@
| Resource Management - Elastic | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.Elastic/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Elastic-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Elastic_1.0.0/sdk/elastic/Azure.ResourceManager.Elastic/) |
| Resource Management - ElasticSan | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.ElasticSan/1.1.0)
NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.ElasticSan/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.ElasticSan-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ElasticSan_1.1.0/sdk/elasticsan/Azure.ResourceManager.ElasticSan/)
GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ElasticSan_1.2.0-beta.2/sdk/elasticsan/Azure.ResourceManager.ElasticSan/) |
| Resource Management - Energy Services | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.EnergyServices/1.0.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.EnergyServices-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EnergyServices_1.0.0-beta.3/sdk/openenergyplatform/Azure.ResourceManager.EnergyServices/) |
-| Resource Management - Event Grid | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.EventGrid/1.1.0)
NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.EventGrid/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.EventGrid-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EventGrid_1.1.0/sdk/eventgrid/Azure.ResourceManager.EventGrid/)
GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EventGrid_1.2.0-beta.1/sdk/eventgrid/Azure.ResourceManager.EventGrid/) |
+| Resource Management - Event Grid | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.EventGrid/1.1.0)
NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.EventGrid/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.EventGrid-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EventGrid_1.1.0/sdk/eventgrid/Azure.ResourceManager.EventGrid/)
GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EventGrid_1.2.0-beta.2/sdk/eventgrid/Azure.ResourceManager.EventGrid/) |
| Resource Management - Event Hubs | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.EventHubs/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.EventHubs-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EventHubs_1.2.0/sdk/eventhub/Azure.ResourceManager.EventHubs/) |
| Resource Management - Extended Location | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ExtendedLocations/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ExtendedLocations-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ExtendedLocations_1.1.1/sdk/extendedlocation/Azure.ResourceManager.ExtendedLocations/) |
| Resource Management - Fabric | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.Fabric/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Fabric-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.Fabric_1.0.0-beta.2/sdk/fabric/Azure.ResourceManager.Fabric/) |
diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md
index e68b952409e4c..9d069c7a0183b 100644
--- a/docs/azure/includes/dotnet-new.md
+++ b/docs/azure/includes/dotnet-new.md
@@ -89,7 +89,7 @@
| Playwright | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Developer.Playwright/1.0.0) | [docs](/dotnet/api/overview/azure/Developer.Playwright-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Developer.Playwright_1.0.0/sdk/loadtestservice/Azure.Developer.Playwright/) |
| Playwright NUnit | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Developer.Playwright.NUnit/1.0.0) | [docs](/dotnet/api/overview/azure/Developer.Playwright.NUnit-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Developer.Playwright.NUnit_1.0.0/sdk/loadtestservice/Azure.Developer.Playwright.NUnit/) |
| Programmable Connectivity | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Communication.ProgrammableConnectivity/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Communication.ProgrammableConnectivity-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.ProgrammableConnectivity_1.0.0-beta.1/sdk/communication/Azure.Communication.ProgrammableConnectivity/) |
-| Provisioning | NuGet [1.3.0](https://www.nuget.org/packages/Azure.Provisioning/1.3.0) | [docs](/dotnet/api/overview/azure/Provisioning-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning_1.3.0/sdk/provisioning/Azure.Provisioning/) |
+| Provisioning | NuGet [1.3.0](https://www.nuget.org/packages/Azure.Provisioning/1.3.0)
NuGet [1.4.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning/1.4.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning_1.3.0/sdk/provisioning/Azure.Provisioning/)
GitHub [1.4.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning_1.4.0-beta.1/sdk/provisioning/Azure.Provisioning/) |
| Provisioning - Resources | NuGet [0.2.0](https://www.nuget.org/packages/Azure.Provisioning.Resources/0.2.0) | [docs](/dotnet/api/overview/azure/Provisioning.Resources-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [0.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Resources_0.2.0/sdk/provisioning/Azure.Provisioning.Resources/) |
| Purview Account | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.Purview.Account/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.Purview.Account-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Purview.Account_1.0.0-beta.1/sdk/purview/Azure.Analytics.Purview.Account/) |
| Purview Administration | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.Purview.Administration/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.Purview.Administration-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Purview.Administration_1.0.0-beta.1/sdk/purview/Azure.Analytics.Purview.Administration/) |
@@ -261,7 +261,7 @@
| Resource Management - Elastic | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.Elastic/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Elastic-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Elastic_1.0.0/sdk/elastic/Azure.ResourceManager.Elastic/) |
| Resource Management - ElasticSan | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.ElasticSan/1.1.0)
NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.ElasticSan/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.ElasticSan-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ElasticSan_1.1.0/sdk/elasticsan/Azure.ResourceManager.ElasticSan/)
GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ElasticSan_1.2.0-beta.2/sdk/elasticsan/Azure.ResourceManager.ElasticSan/) |
| Resource Management - Energy Services | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.EnergyServices/1.0.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.EnergyServices-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EnergyServices_1.0.0-beta.3/sdk/openenergyplatform/Azure.ResourceManager.EnergyServices/) |
-| Resource Management - Event Grid | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.EventGrid/1.1.0)
NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.EventGrid/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.EventGrid-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EventGrid_1.1.0/sdk/eventgrid/Azure.ResourceManager.EventGrid/)
GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EventGrid_1.2.0-beta.1/sdk/eventgrid/Azure.ResourceManager.EventGrid/) |
+| Resource Management - Event Grid | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.EventGrid/1.1.0)
NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.EventGrid/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.EventGrid-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EventGrid_1.1.0/sdk/eventgrid/Azure.ResourceManager.EventGrid/)
GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EventGrid_1.2.0-beta.2/sdk/eventgrid/Azure.ResourceManager.EventGrid/) |
| Resource Management - Event Hubs | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.EventHubs/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.EventHubs-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EventHubs_1.2.0/sdk/eventhub/Azure.ResourceManager.EventHubs/) |
| Resource Management - Extended Location | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ExtendedLocations/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ExtendedLocations-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ExtendedLocations_1.1.1/sdk/extendedlocation/Azure.ResourceManager.ExtendedLocations/) |
| Resource Management - Fabric | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.Fabric/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Fabric-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.Fabric_1.0.0-beta.2/sdk/fabric/Azure.ResourceManager.Fabric/) |
diff --git a/docs/core/compatibility/core-libraries/10.0/sigterm-signal-handler.md b/docs/core/compatibility/core-libraries/10.0/sigterm-signal-handler.md
index 80a6b852008a5..ebfae8f1750a9 100644
--- a/docs/core/compatibility/core-libraries/10.0/sigterm-signal-handler.md
+++ b/docs/core/compatibility/core-libraries/10.0/sigterm-signal-handler.md
@@ -1,15 +1,15 @@
---
-title: "Breaking change: .NET runtime no longer provides default SIGTERM signal handler"
-description: "Learn about the breaking change in .NET 10 where the runtime no longer provides a default SIGTERM signal handler."
+title: "Breaking change: .NET runtime no longer provides default termination signal handler"
+description: "Learn about the breaking change in .NET 10 where the runtime no longer provides a default termination signal handler."
ms.date: 06/06/2025
ai-usage: ai-assisted
ms.custom: https://github.com/dotnet/docs/issues/46226
---
-# .NET runtime no longer provides default SIGTERM signal handler
+# .NET runtime no longer provides default termination signal handlers
-On Unix systems, the .NET runtime no longer provides a default SIGTERM signal handler. On Windows, the .NET runtime no longer provides default handlers for the [`CTRL_CLOSE_EVENT` and `CTRL_SHUTDOWN_EVENT` signals](/windows/console/handlerroutine), which are equivalents of Unix `SIGTERM` signal.
+On Unix systems, the .NET runtime no longer provides a default SIGTERM signal handler. On Windows, the .NET runtime no longer provides default handlers for the [`CTRL_SHUTDOWN_EVENT` and `CTRL_CLOSE_EVENT` signals](/windows/console/handlerroutine), which are equivalents of Unix `SIGTERM` and `SIGHUP` signals.
-This change reverts the SIGTERM signal handling behavior to what it used to be in .NET Framework and classic Mono runtime.
+This change reverts the termination signal handling behavior to what it used to be in .NET Framework and classic Mono runtime.
## Version introduced
@@ -17,11 +17,11 @@ This change reverts the SIGTERM signal handling behavior to what it used to be i
## Previous behavior
-Previously, a SIGTERM signal handler registered by the .NET runtime by default triggered graceful application exit. and events were raised before the application exited.
+Previously, termination signal handlers registered by the .NET runtime by default triggered graceful application exit. and events were raised before the application exited.
## New behavior
-Starting in .NET 10, the .NET runtime does not override SIGTERM signal handling provided by the operating system. The typical default SIGTERM signal handler provided by the operating system terminates the application immediately. and events aren't raised.
+Starting in .NET 10, the .NET runtime does not override termination signal handling provided by the operating system. The typical default termination signal handler provided by the operating system terminates the application immediately. and events aren't raised.
## Type of breaking change
@@ -29,13 +29,13 @@ This is a [behavioral change](../../categories.md#behavioral-change).
## Reason for change
-The SIGTERM signal handler registered by the .NET runtime by default was both insufficient for some app models (for example, console and containerized applications) and incompatible with other app models (for example, Windows services). It's better to leave it to higher-level libraries or application code to register signal handlers appropriate for the given app model.
+The termination signal handlers registered by the .NET runtime by default were both insufficient for some app models (for example, console and containerized applications) and incompatible with other app models (for example, Windows services). It's better to leave it to higher-level libraries or application code to register signal handlers appropriate for the given app model.
## Recommended action
- No action is necessary for typical ASP.NET applications or applications that use higher-level APIs such as to handle app-model specific concerns. These higher-level APIs register handlers for SIGTERM and other signals as appropriate.
-- If you want to handle SIGTERM signal without taking a dependency on higher-level libraries, you can replicate the previous behavior by creating a SIGTERM signal handler in your `Main` method using the API:
+- If you want to handle termination signals without taking a dependency on higher-level libraries, you can replicate the previous behavior by creating termination signal handlers in your `Main` method using the API:
```csharp
static void Main()
@@ -45,6 +45,12 @@ static void Main()
PosixSignal.SIGTERM,
(_) => Environment.Exit(0));
+ // Replicates the previous behavior on Windows
+ using var sigHupSignalRegistration =
+ PosixSignalRegistration.Create(
+ PosixSignal.SIGHUP,
+ (_) => Environment.Exit(0));
+
// Your application code here
}
```
diff --git a/docs/core/diagnostics/debug-highcpu.md b/docs/core/diagnostics/debug-highcpu.md
index 15cf4edd429d8..aca9212c4680c 100644
--- a/docs/core/diagnostics/debug-highcpu.md
+++ b/docs/core/diagnostics/debug-highcpu.md
@@ -32,60 +32,85 @@ The tutorial uses:
## CPU counters
-Before attempting to collect diagnostics data, you need to observe a high CPU condition. Run the [sample application](/samples/dotnet/samples/diagnostic-scenarios) using the following command from the project root directory.
+Before attempting this tutorial, please install the latest version of dotnet-counters:
-```dotnetcli
-dotnet run
-```
+ ```dotnetcli
+ dotnet tool install --global dotnet-counters
+ ```
-To find the process ID, use the following command:
+If your app is running a version of .NET older than .NET 9, the output UI of dotnet-counters will look slightly different; see [dotnet-counters](dotnet-counters.md) for details.
+
+Before attempting to collect diagnostics data, you need to observe a high CPU condition. Run the [sample application](/samples/dotnet/samples/diagnostic-scenarios) using the following command from the project root directory.
```dotnetcli
-dotnet-trace ps
+dotnet run
```
-Take note of the process ID from your command output. Our process ID was `22884`, but yours will be different. To check the current CPU usage, use the [dotnet-counters](dotnet-counters.md) tool command:
+To check the current CPU usage, use the [dotnet-counters](dotnet-counters.md) tool command:
```dotnetcli
-dotnet-counters monitor --refresh-interval 1 -p 22884
+dotnet-counters monitor -n DiagnosticScenarios --showDeltas
```
-The `refresh-interval` is the number of seconds between the counter polling CPU values. The output should be similar to the following:
+The output should be similar to the following:
```console
Press p to pause, r to resume, q to quit.
Status: Running
+Name Current Value Last Delta
[System.Runtime]
- % Time in GC since last GC (%) 0
- Allocation Rate / 1 sec (B) 0
- CPU Usage (%) 0
- Exception Count / 1 sec 0
- GC Heap Size (MB) 4
- Gen 0 GC Count / 60 sec 0
- Gen 0 Size (B) 0
- Gen 1 GC Count / 60 sec 0
- Gen 1 Size (B) 0
- Gen 2 GC Count / 60 sec 0
- Gen 2 Size (B) 0
- LOH Size (B) 0
- Monitor Lock Contention Count / 1 sec 0
- Number of Active Timers 1
- Number of Assemblies Loaded 140
- ThreadPool Completed Work Item Count / 1 sec 3
- ThreadPool Queue Length 0
- ThreadPool Thread Count 7
- Working Set (MB) 63
+ dotnet.assembly.count ({assembly}) 111 0
+ dotnet.gc.collections ({collection})
+ gc.heap.generation
+ ------------------
+ gen0 8 0
+ gen1 1 0
+ gen2 0 0
+ dotnet.gc.heap.total_allocated (By) 4,042,656 24,512
+ dotnet.gc.last_collection.heap.fragmentation.size (By)
+ gc.heap.generation
+ ------------------
+ gen0 801,728 0
+ gen1 6,048 0
+ gen2 0 0
+ loh 0 0
+ poh 0 0
+ dotnet.gc.last_collection.heap.size (By)
+ gc.heap.generation
+ ------------------
+ gen0 811,512 0
+ gen1 562,024 0
+ gen2 1,095,056 0
+ loh 98,384 0
+ poh 24,528 0
+ dotnet.gc.last_collection.memory.committed_size (By) 5,623,808 0
+ dotnet.gc.pause.time (s) 0.019 0
+ dotnet.jit.compilation.time (s) 0.582 0
+ dotnet.jit.compiled_il.size (By) 138,895 0
+ dotnet.jit.compiled_methods ({method}) 1,470 0
+ dotnet.monitor.lock_contentions ({contention}) 4 0
+ dotnet.process.cpu.count ({cpu}) 22 0
+ dotnet.process.cpu.time (s)
+ cpu.mode
+ --------
+ system 0.109 0
+ user 0.453 0
+ dotnet.process.memory.working_set (By) 65,515,520 0
+ dotnet.thread_pool.queue.length ({work_item}) 0 0
+ dotnet.thread_pool.thread.count ({thread}) 0 0
+ dotnet.thread_pool.work_item.count ({work_item}) 6 0
+ dotnet.timer.count ({timer}) 0 0
```
-With the web app running, immediately after startup, the CPU isn't being consumed at all and is reported at `0%`. Navigate to the `api/diagscenario/highcpu` route with `60000` as the route parameter:
+Focusing in on the ```Last Delta``` values of ```dotnet.process.cpu.time```, these tell us how many seconds within the refresh period (currently set to the default of 1 s) the CPU has been active. With the web app running, immediately after startup, the CPU isn't being consumed at all and these deltas are both `0`. Navigate to the `api/diagscenario/highcpu` route with `60000` as the route parameter:
`https://localhost:5001/api/diagscenario/highcpu/60000`
-Now, rerun the [dotnet-counters](dotnet-counters.md) command. If interested in monitoring just the `cpu-usage` counter, add '--counters System.Runtime[cpu-usage]` to the previous command. We are unsure if the CPU is being consumed, so we will monitor the same list of counters as above to verify counter values are within expected range for our application.
+Now, rerun the [dotnet-counters](dotnet-counters.md) command.
```dotnetcli
-dotnet-counters monitor -p 22884 --refresh-interval 1
+dotnet-counters monitor -n DiagnosticScenarios --showDeltas
```
You should see an increase in CPU usage as shown below (depending on the host machine, expect varying CPU usage):
@@ -94,29 +119,52 @@ You should see an increase in CPU usage as shown below (depending on the host ma
Press p to pause, r to resume, q to quit.
Status: Running
+Name Current Value Last Delta
[System.Runtime]
- % Time in GC since last GC (%) 0
- Allocation Rate / 1 sec (B) 0
- CPU Usage (%) 25
- Exception Count / 1 sec 0
- GC Heap Size (MB) 4
- Gen 0 GC Count / 60 sec 0
- Gen 0 Size (B) 0
- Gen 1 GC Count / 60 sec 0
- Gen 1 Size (B) 0
- Gen 2 GC Count / 60 sec 0
- Gen 2 Size (B) 0
- LOH Size (B) 0
- Monitor Lock Contention Count / 1 sec 0
- Number of Active Timers 1
- Number of Assemblies Loaded 140
- ThreadPool Completed Work Item Count / 1 sec 3
- ThreadPool Queue Length 0
- ThreadPool Thread Count 7
- Working Set (MB) 63
+ dotnet.assembly.count ({assembly}) 111 0
+ dotnet.gc.collections ({collection})
+ gc.heap.generation
+ ------------------
+ gen0 8 0
+ gen1 1 0
+ gen2 0 0
+ dotnet.gc.heap.total_allocated (By) 4,042,656 24,512
+ dotnet.gc.last_collection.heap.fragmentation.size (By)
+ gc.heap.generation
+ ------------------
+ gen0 801,728 0
+ gen1 6,048 0
+ gen2 0 0
+ loh 0 0
+ poh 0 0
+ dotnet.gc.last_collection.heap.size (By)
+ gc.heap.generation
+ ------------------
+ gen0 811,512 0
+ gen1 562,024 0
+ gen2 1,095,056 0
+ loh 98,384 0
+ poh 24,528 0
+ dotnet.gc.last_collection.memory.committed_size (By) 5,623,808 0
+ dotnet.gc.pause.time (s) 0.019 0
+ dotnet.jit.compilation.time (s) 0.582 0
+ dotnet.jit.compiled_il.size (By) 138,895 0
+ dotnet.jit.compiled_methods ({method}) 1,470 0
+ dotnet.monitor.lock_contentions ({contention}) 4 0
+ dotnet.process.cpu.count ({cpu}) 22 0
+ dotnet.process.cpu.time (s)
+ cpu.mode
+ --------
+ system 0.344 0.013
+ user 14.203 0.963
+ dotnet.process.memory.working_set (By) 65,515,520 0
+ dotnet.thread_pool.queue.length ({work_item}) 0 0
+ dotnet.thread_pool.thread.count ({thread}) 0 0
+ dotnet.thread_pool.work_item.count ({work_item}) 6 0
+ dotnet.timer.count ({timer}) 0 0
```
-Throughout the duration of the request, the CPU usage will hover around the increased percentage.
+Throughout the duration of the request, the CPU usage will hover around the increased value.
> [!TIP]
> To visualize an even higher CPU usage, you can exercise this endpoint in multiple browser tabs simultaneously.
diff --git a/docs/core/diagnostics/debug-memory-leak.md b/docs/core/diagnostics/debug-memory-leak.md
index e91d9b994bfe5..56cc9d217efc6 100644
--- a/docs/core/diagnostics/debug-memory-leak.md
+++ b/docs/core/diagnostics/debug-memory-leak.md
@@ -34,6 +34,8 @@ The tutorial uses:
The tutorial assumes the sample apps and tools are installed and ready to use.
+If your app is running a version of .NET older than .NET 9, the output UI of dotnet-counters will look slightly different; see [dotnet-counters](dotnet-counters.md) for details.
+
## Examine managed memory usage
Before you start collecting diagnostic data to help root cause this scenario, make sure you're actually seeing a memory leak (growth in memory usage). You can use the [dotnet-counters](dotnet-counters.md) tool to confirm that.
@@ -73,44 +75,68 @@ The live output should be similar to:
```console
Press p to pause, r to resume, q to quit.
- Status: Running
+Status: Running
+Name Current Value
[System.Runtime]
- # of Assemblies Loaded 118
- % Time in GC (since last GC) 0
- Allocation Rate (Bytes / sec) 37,896
- CPU Usage (%) 0
- Exceptions / sec 0
- GC Heap Size (MB) 4
- Gen 0 GC / sec 0
- Gen 0 Size (B) 0
- Gen 1 GC / sec 0
- Gen 1 Size (B) 0
- Gen 2 GC / sec 0
- Gen 2 Size (B) 0
- LOH Size (B) 0
- Monitor Lock Contention Count / sec 0
- Number of Active Timers 1
- ThreadPool Completed Work Items / sec 10
- ThreadPool Queue Length 0
- ThreadPool Threads Count 1
- Working Set (MB) 83
+ dotnet.assembly.count ({assembly}) 111
+ dotnet.gc.collections ({collection})
+ gc.heap.generation
+ ------------------
+ gen0 1
+ gen1 0
+ gen2 0
+ dotnet.gc.heap.total_allocated (By) 4,431,712
+ dotnet.gc.last_collection.heap.fragmentation.size (By)
+ gc.heap.generation
+ ------------------
+ gen0 803,576
+ gen1 15,456
+ gen2 0
+ loh 0
+ poh 0
+ dotnet.gc.last_collection.heap.size (By)
+ gc.heap.generation
+ ------------------
+ gen0 811,960
+ gen1 1,214,720
+ gen2 0
+ loh 0
+ poh 24,528
+ dotnet.gc.last_collection.memory.committed_size (By) 4,296,704
+ dotnet.gc.pause.time (s) 0.003
+ dotnet.jit.compilation.time (s) 0.329
+ dotnet.jit.compiled_il.size (By) 120,212
+ dotnet.jit.compiled_methods ({method}) 1,202
+ dotnet.monitor.lock_contentions ({contention}) 2
+ dotnet.process.cpu.count ({cpu}) 22
+ dotnet.process.cpu.time (s)
+ cpu.mode
+ --------
+ system 0.344
+ user 0.344
+ dotnet.process.memory.working_set (By) 64,331,776
+ dotnet.thread_pool.queue.length ({work_item}) 0
+ dotnet.thread_pool.thread.count ({thread}) 0
+ dotnet.thread_pool.work_item.count ({work_item}) 7
+ dotnet.timer.count ({timer}) 0
+
```
Focusing on this line:
```console
- GC Heap Size (MB) 4
+ dotnet.gc.last_collection.memory.committed_size (By) 4,296,704
```
You can see that the managed heap memory is 4 MB right after startup.
Now, go to the URL `https://localhost:5001/api/diagscenario/memleak/20000`.
-Observe that the memory usage has grown to 30 MB.
+Observe that the memory usage has grown to over 20 MB.
```console
- GC Heap Size (MB) 30
+ dotnet.gc.last_collection.memory.committed_size (By) 21,020,672
```
By watching the memory usage, you can safely say that memory is growing or leaking. The next step is to collect the right data for memory analysis.
diff --git a/docs/core/diagnostics/debug-threadpool-starvation.md b/docs/core/diagnostics/debug-threadpool-starvation.md
index dc95b95171567..b518aed76566c 100644
--- a/docs/core/diagnostics/debug-threadpool-starvation.md
+++ b/docs/core/diagnostics/debug-threadpool-starvation.md
@@ -97,17 +97,19 @@ dotnet-counters monitor -n DiagnosticScenarios
Press p to pause, r to resume, q to quit.
Status: Running
-Name Current Value
+Name Current Value
[System.Runtime]
dotnet.assembly.count ({assembly}) 115
dotnet.gc.collections ({collection})
gc.heap.generation
+ ------------------
gen0 2
gen1 1
gen2 1
dotnet.gc.heap.total_allocated (By) 64,329,632
dotnet.gc.last_collection.heap.fragmentation.size (By)
gc.heap.generation
+ ------------------
gen0 199,920
gen1 29,208
gen2 0
@@ -115,6 +117,7 @@ Name Current Value
poh 0
dotnet.gc.last_collection.heap.size (By)
gc.heap.generation
+ ------------------
gen0 208,712
gen1 3,456,000
gen2 5,065,600
@@ -129,6 +132,7 @@ Name Current Value
dotnet.process.cpu.count ({cpu}) 16
dotnet.process.cpu.time (s)
cpu.mode
+ --------
system 2.156
user 2.734
dotnet.process.memory.working_set (By) 1.3217e+08
@@ -138,6 +142,8 @@ Name Current Value
dotnet.timer.count ({timer}) 0
```
+If your app is running a version of .NET older than .NET 9, the output UI of dotnet-counters will look slightly different; see [dotnet-counters](dotnet-counters.md) for details.
+
The preceding counters are an example while the web server wasn't serving any requests. Run Bombardier again with the `api/diagscenario/tasksleepwait` endpoint and sustained load for 2 minutes so there's plenty of time to observe what happens to the performance counters.
```dotnetcli
@@ -151,12 +157,14 @@ ThreadPool starvation occurs when there are no free threads to handle the queued
dotnet.assembly.count ({assembly}) 115
dotnet.gc.collections ({collection})
gc.heap.generation
+ ------------------
gen0 5
gen1 1
gen2 1
dotnet.gc.heap.total_allocated (By) 1.6947e+08
dotnet.gc.last_collection.heap.fragmentation.size (By)
gc.heap.generation
+ ------------------
gen0 0
gen1 348,248
gen2 0
@@ -164,6 +172,7 @@ ThreadPool starvation occurs when there are no free threads to handle the queued
poh 0
dotnet.gc.last_collection.heap.size (By)
gc.heap.generation
+ ------------------
gen0 0
gen1 18,010,920
gen2 5,065,600
@@ -178,6 +187,7 @@ ThreadPool starvation occurs when there are no free threads to handle the queued
dotnet.process.cpu.count ({cpu}) 16
dotnet.process.cpu.time (s)
cpu.mode
+ --------
system 4.953
user 6.266
dotnet.process.memory.working_set (By) 1.3217e+08
diff --git a/docs/core/diagnostics/dotnet-counters.md b/docs/core/diagnostics/dotnet-counters.md
index d94846e2c0ed0..2f7b7e9c00f76 100644
--- a/docs/core/diagnostics/dotnet-counters.md
+++ b/docs/core/diagnostics/dotnet-counters.md
@@ -59,7 +59,6 @@ dotnet-counters [-h|--help] [--version]
| Command |
|-----------------------------------------------------|
| [dotnet-counters collect](#dotnet-counters-collect) |
-| [dotnet-counters list](#dotnet-counters-list) |
| [dotnet-counters monitor](#dotnet-counters-monitor) |
| [dotnet-counters ps](#dotnet-counters-ps) |
@@ -109,7 +108,7 @@ dotnet-counters collect [-h|--help] [-p|--process-id] [-n|--name] [--diagnostic-
- **`--counters `**
- A comma-separated list of counters. Counters can be specified `provider_name[:counter_name]`. If the `provider_name` is used without a qualifying list of counters, then all counters from the provider are shown. To discover provider and counter names, use the [dotnet-counters list](#dotnet-counters-list) command. For [EventCounters](event-counters.md), `provider_name` is the name of the EventSource and for [Meters](metrics.md), `provider_name` is the name of the Meter.
+ A comma-separated list of counters. Counters can be specified `provider_name[:counter_name]`. If the `provider_name` is used without a qualifying list of counters, then all counters from the provider are shown. To discover provider and counter names, consult [built-in metrics docs](https://learn.microsoft.com/dotnet/core/diagnostics/built-in-metrics). For [EventCounters](event-counters.md), `provider_name` is the name of the EventSource and for [Meters](metrics.md), `provider_name` is the name of the Meter.
- **`--format `**
@@ -151,53 +150,6 @@ dotnet-counters collect [-h|--help] [-p|--process-id] [-n|--name] [--diagnostic-
File saved to counter.json
```
-## dotnet-counters list
-
-Displays a list of counter names and descriptions, grouped by provider.
-
-### Synopsis
-
-```dotnetcli
-dotnet-counters list [-h|--help]
-```
-
-### Example
-
-```dotnetcli
-> dotnet-counters list
-Showing well-known counters only. Specific processes may support additional counters.
-
-System.Runtime
- cpu-usage Amount of time the process has utilized the CPU (ms)
- working-set Amount of working set used by the process (MB)
- gc-heap-size Total heap size reported by the GC (MB)
- gen-0-gc-count Number of Gen 0 GCs per interval
- gen-1-gc-count Number of Gen 1 GCs per interval
- gen-2-gc-count Number of Gen 2 GCs per interval
- time-in-gc % time in GC since the last GC
- gen-0-size Gen 0 Heap Size
- gen-1-size Gen 1 Heap Size
- gen-2-size Gen 2 Heap Size
- loh-size LOH Heap Size
- alloc-rate Allocation Rate
- assembly-count Number of Assemblies Loaded
- exception-count Number of Exceptions per interval
- threadpool-thread-count Number of ThreadPool Threads
- monitor-lock-contention-count Monitor Lock Contention Count
- threadpool-queue-length ThreadPool Work Items Queue Length
- threadpool-completed-items-count ThreadPool Completed Work Items Count
- active-timer-count Active Timers Count
-
-Microsoft.AspNetCore.Hosting
- requests-per-second Request rate
- total-requests Total number of requests
- current-requests Current number of requests
- failed-requests Failed number of requests
-```
-
-> [!NOTE]
-> The `Microsoft.AspNetCore.Hosting` counters are displayed when there are processes identified that support these counters, for example; when an ASP.NET Core application is running on the host machine.
-
## dotnet-counters monitor
Displays periodically refreshing values of selected counters.
@@ -228,7 +180,7 @@ dotnet-counters monitor [-h|--help] [-p|--process-id] [-n|--name] [--diagnostic-
- **`--counters `**
- A comma-separated list of counters. Counters can be specified `provider_name[:counter_name]`. If the `provider_name` is used without a qualifying list of counters, then all counters from the provider are shown. To discover provider and counter names, use the [dotnet-counters list](#dotnet-counters-list) command. For [EventCounters](event-counters.md), `provider_name` is the name of the EventSource and for [Meters](metrics.md), `provider_name` is the name of the Meter.
+ A comma-separated list of counters. Counters can be specified `provider_name[:counter_name]`. If the `provider_name` is used without a qualifying list of counters, then all counters from the provider are shown. To discover provider and counter names, consult [built-in metrics docs](https://learn.microsoft.com/dotnet/core/diagnostics/built-in-metrics). For [EventCounters](event-counters.md), `provider_name` is the name of the EventSource and for [Meters](metrics.md), `provider_name` is the name of the Meter.
**`-- `**
@@ -257,44 +209,99 @@ dotnet-counters monitor [-h|--help] [-p|--process-id] [-n|--name] [--diagnostic-
> dotnet-counters monitor --process-id 1902 --refresh-interval 3 --counters System.Runtime
Press p to pause, r to resume, q to quit.
Status: Running
+ Name Current Value
+ [System.Runtime]
+ dotnet.assembly.count ({assembly}) 115
+ dotnet.gc.collections ({collection})
+ gc.heap.generation
+ ------------------
+ gen0 5
+ gen1 1
+ gen2 1
+ dotnet.gc.heap.total_allocated (By) 1.6947e+08
+ dotnet.gc.last_collection.heap.fragmentation.size (By)
+ gc.heap.generation
+ ------------------
+ gen0 0
+ gen1 348,248
+ gen2 0
+ loh 32
+ poh 0
+ dotnet.gc.last_collection.heap.size (By)
+ gc.heap.generation
+ ------------------
+ gen0 0
+ gen1 18,010,920
+ gen2 5,065,600
+ loh 98,384
+ poh 3,407,048
+ dotnet.gc.last_collection.memory.committed_size (By) 66,842,624
+ dotnet.gc.pause.time (s) 0.05
+ dotnet.jit.compilation.time (s) 1.317
+ dotnet.jit.compiled_il.size (By) 574,886
+ dotnet.jit.compiled_methods ({method}) 6,008
+ dotnet.monitor.lock_contentions ({contention}) 194
+ dotnet.process.cpu.count ({cpu}) 16
+ dotnet.process.cpu.time (s)
+ cpu.mode
+ --------
+ system 4.953
+ user 6.266
+ dotnet.process.memory.working_set (By) 1.3217e+08
+ dotnet.thread_pool.queue.length ({work_item}) 0
+ dotnet.thread_pool.thread.count ({thread}) 133
+ dotnet.thread_pool.work_item.count ({work_item}) 71,188
+ dotnet.timer.count ({timer}) 124
+ ```
+ > [!NOTE]
+ > If the app uses .NET version 8 or lower the [System.Runtime Meter](https://learn.microsoft.com/dotnet/core/diagnostics/built-in-metrics-runtime#systemruntime) didn't exist yet and dotnet-counters will fall back to display the older [System.Runtime EventCounters](https://learn.microsoft.com/dotnet/core/diagnostics/available-counters#systemruntime-counters) instead. The UI will look slightly different as shown below.
+
+ ```
[System.Runtime]
- % Time in GC since last GC (%) 0
- Allocation Rate (B / 1 sec) 5,376
- CPU Usage (%) 0
- Exception Count (Count / 1 sec) 0
- GC Fragmentation (%) 48.467
- GC Heap Size (MB) 0
- Gen 0 GC Count (Count / 1 sec) 1
- Gen 0 Size (B) 24
- Gen 1 GC Count (Count / 1 sec) 1
- Gen 1 Size (B) 24
- Gen 2 GC Count (Count / 1 sec) 1
- Gen 2 Size (B) 272,000
- IL Bytes Jitted (B) 19,449
- LOH Size (B) 19,640
- Monitor Lock Contention Count (Count / 1 sec) 0
- Number of Active Timers 0
- Number of Assemblies Loaded 7
- Number of Methods Jitted 166
- POH (Pinned Object Heap) Size (B) 24
- ThreadPool Completed Work Item Count (Count / 1 sec) 0
- ThreadPool Queue Length 0
- ThreadPool Thread Count 2
- Working Set (MB) 19
+ % Time in GC since last GC (%) 0
+ Allocation Rate (B / 1 sec) 5,376
+ CPU Usage (%) 0
+ Exception Count (Count / 1 sec) 0
+ GC Fragmentation (%) 48.467
+ GC Heap Size (MB) 0
+ Gen 0 GC Count (Count / 1 sec) 1
+ Gen 0 Size (B) 24
+ Gen 1 GC Count (Count / 1 sec) 1
+ Gen 1 Size (B) 24
+ Gen 2 GC Count (Count / 1 sec) 1
+ Gen 2 Size (B) 272,000
+ IL Bytes Jitted (B) 19,449
+ LOH Size (B) 19,640
+ Monitor Lock Contention Count (Count / 1 sec) 0
+ Number of Active Timers 0
+ Number of Assemblies Loaded 7
+ Number of Methods Jitted 166
+ POH (Pinned Object Heap) Size (B) 24
+ ThreadPool Completed Work Item Count (Count / 1 sec) 0
+ ThreadPool Queue Length 0
+ ThreadPool Thread Count 2
+ Working Set (MB) 19
```
-- Monitor just CPU usage and GC heap size from `System.Runtime`:
+- Monitor just GC collections and GC heap allocation from `System.Runtime`:
```dotnetcli
- > dotnet-counters monitor --process-id 1902 --counters System.Runtime[cpu-usage,gc-heap-size]
+ > dotnet-counters monitor --process-id 1902 --counters System.Runtime[dotnet.gc.collections,dotnet.gc.heap.total_allocated]
Press p to pause, r to resume, q to quit.
- Status: Running
+ Status: Running
+ Name Current Value
[System.Runtime]
- CPU Usage (%) 24
- GC Heap Size (MB) 811
+ dotnet.gc.collections ({collection})
+ gc.heap.generation
+ ------------------
+ gen0 0
+ gen1 0
+ gen2 0
+ dotnet.gc.heap.total_allocated (By) 9,943,384
+
```
- Monitor `EventCounter` values from user-defined `EventSource`. For more information, see [Tutorial: Measure performance using EventCounters in .NET Core](event-counter-perf.md).
@@ -306,121 +313,37 @@ dotnet-counters monitor [-h|--help] [-p|--process-id] [-n|--name] [--diagnostic-
request 100
```
-- View all well-known counters that are available in `dotnet-counters`:
-
- ```dotnetcli
- > dotnet-counters list
-
- Showing well-known counters for .NET (Core) version 3.1 only. Specific processes may support additional counters.
- System.Runtime
- cpu-usage The percent of process' CPU usage relative to all of the system CPU resources [0-100]
- working-set Amount of working set used by the process (MB)
- gc-heap-size Total heap size reported by the GC (MB)
- gen-0-gc-count Number of Gen 0 GCs between update intervals
- gen-1-gc-count Number of Gen 1 GCs between update intervals
- gen-2-gc-count Number of Gen 2 GCs between update intervals
- time-in-gc % time in GC since the last GC
- gen-0-size Gen 0 Heap Size
- gen-1-size Gen 1 Heap Size
- gen-2-size Gen 2 Heap Size
- loh-size LOH Size
- alloc-rate Number of bytes allocated in the managed heap between update intervals
- assembly-count Number of Assemblies Loaded
- exception-count Number of Exceptions / sec
- threadpool-thread-count Number of ThreadPool Threads
- monitor-lock-contention-count Number of times there were contention when trying to take the monitor lock between update intervals
- threadpool-queue-length ThreadPool Work Items Queue Length
- threadpool-completed-items-count ThreadPool Completed Work Items Count
- active-timer-count Number of timers that are currently active
-
- Microsoft.AspNetCore.Hosting
- requests-per-second Number of requests between update intervals
- total-requests Total number of requests
- current-requests Current number of requests
- failed-requests Failed number of requests
- ```
-
-- View all well-known counters that are available in `dotnet-counters` for .NET 5 apps:
-
- ```dotnetcli
- > dotnet-counters list --runtime-version 5.0
-
- Showing well-known counters for .NET (Core) version 5.0 only. Specific processes may support additional counters.
- System.Runtime
- cpu-usage The percent of process' CPU usage relative to all of the system CPU resources [0-100]
- working-set Amount of working set used by the process (MB)
- gc-heap-size Total heap size reported by the GC (MB)
- gen-0-gc-count Number of Gen 0 GCs between update intervals
- gen-1-gc-count Number of Gen 1 GCs between update intervals
- gen-2-gc-count Number of Gen 2 GCs between update intervals
- time-in-gc % time in GC since the last GC
- gen-0-size Gen 0 Heap Size
- gen-1-size Gen 1 Heap Size
- gen-2-size Gen 2 Heap Size
- loh-size LOH Size
- poh-size POH (Pinned Object Heap) Size
- alloc-rate Number of bytes allocated in the managed heap between update intervals
- gc-fragmentation GC Heap Fragmentation
- assembly-count Number of Assemblies Loaded
- exception-count Number of Exceptions / sec
- threadpool-thread-count Number of ThreadPool Threads
- monitor-lock-contention-count Number of times there were contention when trying to take the monitor lock between update intervals
- threadpool-queue-length ThreadPool Work Items Queue Length
- threadpool-completed-items-count ThreadPool Completed Work Items Count
- active-timer-count Number of timers that are currently active
- il-bytes-jitted Total IL bytes jitted
- methods-jitted-count Number of methods jitted
-
- Microsoft.AspNetCore.Hosting
- requests-per-second Number of requests between update intervals
- total-requests Total number of requests
- current-requests Current number of requests
- failed-requests Failed number of requests
-
- Microsoft-AspNetCore-Server-Kestrel
- connections-per-second Number of connections between update intervals
- total-connections Total Connections
- tls-handshakes-per-second Number of TLS Handshakes made between update intervals
- total-tls-handshakes Total number of TLS handshakes made
- current-tls-handshakes Number of currently active TLS handshakes
- failed-tls-handshakes Total number of failed TLS handshakes
- current-connections Number of current connections
- connection-queue-length Length of Kestrel Connection Queue
- request-queue-length Length total HTTP request queue
-
- System.Net.Http
- requests-started Total Requests Started
- requests-started-rate Number of Requests Started between update intervals
- requests-aborted Total Requests Aborted
- requests-aborted-rate Number of Requests Aborted between update intervals
- current-requests Current Requests
- ```
-
- Launch `my-aspnet-server.exe` and monitor the # of assemblies loaded from its startup:
```dotnetcli
- > dotnet-counters monitor --counters System.Runtime[assembly-count] -- my-aspnet-server.exe
-
+ > dotnet-counters monitor --counters System.Runtime[dotnet.assembly.count] -- my-aspnet-server.exe
Press p to pause, r to resume, q to quit.
- Status: Running
+ Status: Running
+ Name Current Value
[System.Runtime]
- Number of Assemblies Loaded 24
+ dotnet.assembly.count ({assembly}) 11
```
- Launch `my-aspnet-server.exe` with `arg1` and `arg2` as command-line arguments and monitor its working set and GC heap size from its startup:
```dotnetcli
- > dotnet-counters monitor --counters System.Runtime[working-set,gc-heap-size] -- my-aspnet-server.exe arg1 arg2
+ > dotnet-counters monitor --counters System.Runtime[dotnet.process.memory.working_set,dotnet.gc.last_collection.heap.size] -- my-aspnet-server.exe arg1 arg2
```
```output
- Press p to pause, r to resume, q to quit.
- Status: Running
-
+ Name Current Value
[System.Runtime]
- GC Heap Size (MB) 39
- Working Set (MB) 59
+ dotnet.gc.last_collection.heap.size (By)
+ gc.heap.generation
+ ------------------
+ gen0 560
+ gen1 462,720
+ gen2 0
+ loh 0
+ poh 8,184
+ dotnet.process.memory.working_set (By) 48,431,104
+
```
## dotnet-counters ps
diff --git a/docs/core/diagnostics/metrics-collection.md b/docs/core/diagnostics/metrics-collection.md
index 0c46afb63aaff..4ec1e83b11762 100644
--- a/docs/core/diagnostics/metrics-collection.md
+++ b/docs/core/diagnostics/metrics-collection.md
@@ -47,6 +47,8 @@ If the [dotnet-counters](dotnet-counters.md) tool isn't installed, run the follo
dotnet tool update -g dotnet-counters
```
+If your app is running a version of .NET older than .NET 9, the output UI of dotnet-counters will look slightly different than below; see [dotnet-counters](dotnet-counters.md) for details.
+
While the example app is running, launch [dotnet-counters](dotnet-counters.md). The following command shows an example of `dotnet-counters` monitoring all metrics from the `HatCo.HatStore` meter. The meter name is case-sensitive. Our sample app was metric-instr.exe, substitute this with the name of your sample app.
```dotnetcli
@@ -72,29 +74,52 @@ dotnet-counters monitor -n metric-instr
Output similar to the following is displayed:
```dotnetcli
-Press p to pause, r to resume, q to quit.
- Status: Running
-
-[System.Runtime]
- % Time in GC since last GC (%) 0
- Allocation Rate (B / 1 sec) 8,168
- CPU Usage (%) 0
- Exception Count (Count / 1 sec) 0
- GC Heap Size (MB) 2
- Gen 0 GC Count (Count / 1 sec) 0
- Gen 0 Size (B) 2,216,256
- Gen 1 GC Count (Count / 1 sec) 0
- Gen 1 Size (B) 423,392
- Gen 2 GC Count (Count / 1 sec) 0
- Gen 2 Size (B) 203,248
- LOH Size (B) 933,216
- Monitor Lock Contention Count (Count / 1 sec) 0
- Number of Active Timers 1
- Number of Assemblies Loaded 39
- ThreadPool Completed Work Item Count (Count / 1 sec) 0
- ThreadPool Queue Length 0
- ThreadPool Thread Count 3
- Working Set (MB) 30
+System.Runtime
+ Press p to pause, r to resume, q to quit.
+ Status: Running
+ Name Current Value
+ [System.Runtime]
+ dotnet.assembly.count ({assembly}) 11
+ dotnet.gc.collections ({collection})
+ gc.heap.generation
+ ------------------
+ gen0 0
+ gen1 0
+ gen2 0
+ dotnet.gc.heap.total_allocated (By) 1,376,024
+ dotnet.gc.last_collection.heap.fragmentation.size (By)
+ gc.heap.generation
+ ------------------
+ gen0 0
+ gen1 0
+ gen2 0
+ loh 0
+ poh 0
+ dotnet.gc.last_collection.heap.size (By)
+ gc.heap.generation
+ ------------------
+ gen0 0
+ gen1 0
+ gen2 0
+ loh 0
+ poh 0
+ dotnet.gc.last_collection.memory.committed_size (By) 0
+ dotnet.gc.pause.time (s) 0
+ dotnet.jit.compilation.time (s) 0.253
+ dotnet.jit.compiled_il.size (By) 79,536
+ dotnet.jit.compiled_methods ({method}) 743
+ dotnet.monitor.lock_contentions ({contention}) 0
+ dotnet.process.cpu.count ({cpu}) 22
+ dotnet.process.cpu.time (s)
+ cpu.mode
+ --------
+ system 0.125
+ user 46.453
+ dotnet.process.memory.working_set (By) 34,447,360
+ dotnet.thread_pool.queue.length ({work_item}) 0
+ dotnet.thread_pool.thread.count ({thread}) 0
+ dotnet.thread_pool.work_item.count ({work_item}) 0
+ dotnet.timer.count ({timer}) 0
```
For more information, see [dotnet-counters](dotnet-counters.md). To learn more about metrics in .NET, see [built-in metrics](built-in-metrics.md).
diff --git a/docs/core/diagnostics/metrics-instrumentation.md b/docs/core/diagnostics/metrics-instrumentation.md
index ec7b7955963ae..5098a389236ca 100644
--- a/docs/core/diagnostics/metrics-instrumentation.md
+++ b/docs/core/diagnostics/metrics-instrumentation.md
@@ -461,6 +461,7 @@ Name Current Value
[HatCo.Store]
hatco.store.hats_sold (Count)
product.color product.size
+ ------------- ------------
blue 19 73
red 12 146
```
@@ -507,6 +508,7 @@ Name Current Value
[HatCo.Store]
hatco.store.orders_pending
customer.country
+ ----------------
Italy 6
Mexico 1
Spain 3
diff --git a/docs/core/diagnostics/snippets/Microsoft.Diagnostics.NETCore.Client/csharp/Microsoft.Diagnostics.NETCore.Client.Samples.csproj b/docs/core/diagnostics/snippets/Microsoft.Diagnostics.NETCore.Client/csharp/Microsoft.Diagnostics.NETCore.Client.Samples.csproj
index 00ac0f2c5a30b..bab339a47564d 100644
--- a/docs/core/diagnostics/snippets/Microsoft.Diagnostics.NETCore.Client/csharp/Microsoft.Diagnostics.NETCore.Client.Samples.csproj
+++ b/docs/core/diagnostics/snippets/Microsoft.Diagnostics.NETCore.Client/csharp/Microsoft.Diagnostics.NETCore.Client.Samples.csproj
@@ -7,7 +7,7 @@
-
+
diff --git a/docs/core/testing/snippets/unit-testing-using-mstest/csharp/PrimeService.Tests/PrimeService.Tests.csproj b/docs/core/testing/snippets/unit-testing-using-mstest/csharp/PrimeService.Tests/PrimeService.Tests.csproj
index 4d49bdf54a8b0..dddfa3d2888a6 100644
--- a/docs/core/testing/snippets/unit-testing-using-mstest/csharp/PrimeService.Tests/PrimeService.Tests.csproj
+++ b/docs/core/testing/snippets/unit-testing-using-mstest/csharp/PrimeService.Tests/PrimeService.Tests.csproj
@@ -8,8 +8,8 @@
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/docs/core/tools/dotnet-tool-install.md b/docs/core/tools/dotnet-tool-install.md
index d8ea2002dba2d..b5c57947ad307 100644
--- a/docs/core/tools/dotnet-tool-install.md
+++ b/docs/core/tools/dotnet-tool-install.md
@@ -100,7 +100,7 @@ For more information, see [Install a local tool](global-tools.md#install-a-local
- **`--allow-roll-forward`**
- Allow tool to use a newer version of the .NET runtime if the runtime it targets isn't installed.
+ Available starting with .NET 9.0 SDK. Allow tool to use a newer version of the .NET runtime if the runtime it targets isn't installed.
- **`-a|--arch `**
@@ -207,6 +207,10 @@ For more information, see [Install a local tool](global-tools.md#install-a-local
Installs [dotnetsay](https://www.nuget.org/packages/dotnetsay/) as a global tool with the verbosity of minimal. The default verbosity for global tool is quiet.
+- **`dotnet tool install -g dotnetsay --allow-roll-forward`**
+
+ Installs [dotnetsay](https://www.nuget.org/packages/dotnetsay/) as a global tool and allows it to run on newer .NET versions if the target runtime isn't available.
+
## See also
- [.NET tools](global-tools.md)
diff --git a/docs/core/tools/dotnet-tool-run.md b/docs/core/tools/dotnet-tool-run.md
index 0989cfdca3879..cefab7d97fc3f 100644
--- a/docs/core/tools/dotnet-tool-run.md
+++ b/docs/core/tools/dotnet-tool-run.md
@@ -14,7 +14,7 @@ ms.date: 02/14/2020
## Synopsis
```dotnetcli
-dotnet tool run
+dotnet tool run [--allow-roll-forward]
dotnet tool run -h|--help
```
@@ -31,6 +31,10 @@ The `dotnet tool run` command searches tool manifest files that are in scope for
## Options
+- **`--allow-roll-forward`**
+
+ Available starting with .NET 9.0 SDK. Allow tool to use a newer version of the .NET runtime if the runtime it targets isn't installed.
+
[!INCLUDE [help](../../../includes/cli-help.md)]
## Example
@@ -39,6 +43,10 @@ The `dotnet tool run` command searches tool manifest files that are in scope for
Runs the `dotnetsay` local tool.
+- **`dotnet tool run dotnetsay --allow-roll-forward`**
+
+ Runs the `dotnetsay` local tool and allows it to run on newer .NET versions if the target runtime isn't available.
+
## See also
- [.NET tools](global-tools.md)
diff --git a/docs/core/tutorials/snippets/library-with-visual-studio/csharp/StringLibraryTest/StringLibraryTest.csproj b/docs/core/tutorials/snippets/library-with-visual-studio/csharp/StringLibraryTest/StringLibraryTest.csproj
index 5dfdd448b84fa..110b279cc5e07 100644
--- a/docs/core/tutorials/snippets/library-with-visual-studio/csharp/StringLibraryTest/StringLibraryTest.csproj
+++ b/docs/core/tutorials/snippets/library-with-visual-studio/csharp/StringLibraryTest/StringLibraryTest.csproj
@@ -7,7 +7,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/docs/core/tutorials/snippets/library-with-visual-studio/vb/StringLibraryTest/StringLibraryTest.vbproj b/docs/core/tutorials/snippets/library-with-visual-studio/vb/StringLibraryTest/StringLibraryTest.vbproj
index 8571e213bd33e..14dbecebbbd3d 100644
--- a/docs/core/tutorials/snippets/library-with-visual-studio/vb/StringLibraryTest/StringLibraryTest.vbproj
+++ b/docs/core/tutorials/snippets/library-with-visual-studio/vb/StringLibraryTest/StringLibraryTest.vbproj
@@ -8,8 +8,8 @@
-
-
+
+
diff --git a/docs/csharp/roslyn-sdk/tutorials/snippets/how-to-write-csharp-analyzer-code-fix/MakeConst/MakeConst.Test/MakeConst.Test.csproj b/docs/csharp/roslyn-sdk/tutorials/snippets/how-to-write-csharp-analyzer-code-fix/MakeConst/MakeConst.Test/MakeConst.Test.csproj
index 81c6d2107ae41..88445e7822658 100644
--- a/docs/csharp/roslyn-sdk/tutorials/snippets/how-to-write-csharp-analyzer-code-fix/MakeConst/MakeConst.Test/MakeConst.Test.csproj
+++ b/docs/csharp/roslyn-sdk/tutorials/snippets/how-to-write-csharp-analyzer-code-fix/MakeConst/MakeConst.Test/MakeConst.Test.csproj
@@ -9,8 +9,8 @@
-
-
+
+
diff --git a/samples/snippets/core/testing/unit-testing-vb-mstest/vb/PrimeService.Tests/PrimeService.Tests.vbproj b/samples/snippets/core/testing/unit-testing-vb-mstest/vb/PrimeService.Tests/PrimeService.Tests.vbproj
index 48f7873dbdafa..44d2d931b5a2c 100644
--- a/samples/snippets/core/testing/unit-testing-vb-mstest/vb/PrimeService.Tests/PrimeService.Tests.vbproj
+++ b/samples/snippets/core/testing/unit-testing-vb-mstest/vb/PrimeService.Tests/PrimeService.Tests.vbproj
@@ -8,8 +8,8 @@
-
-
+
+
diff --git a/samples/snippets/standard/data/sqlite/AggregateFunctionSample/AggregateFunctionSample.csproj b/samples/snippets/standard/data/sqlite/AggregateFunctionSample/AggregateFunctionSample.csproj
index 57dbb6e743144..77048208d6383 100644
--- a/samples/snippets/standard/data/sqlite/AggregateFunctionSample/AggregateFunctionSample.csproj
+++ b/samples/snippets/standard/data/sqlite/AggregateFunctionSample/AggregateFunctionSample.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/samples/snippets/standard/data/sqlite/AsyncSample/AsyncSample.csproj b/samples/snippets/standard/data/sqlite/AsyncSample/AsyncSample.csproj
index 57dbb6e743144..77048208d6383 100644
--- a/samples/snippets/standard/data/sqlite/AsyncSample/AsyncSample.csproj
+++ b/samples/snippets/standard/data/sqlite/AsyncSample/AsyncSample.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/samples/snippets/standard/data/sqlite/BackupSample/BackupSample.csproj b/samples/snippets/standard/data/sqlite/BackupSample/BackupSample.csproj
index 57dbb6e743144..77048208d6383 100644
--- a/samples/snippets/standard/data/sqlite/BackupSample/BackupSample.csproj
+++ b/samples/snippets/standard/data/sqlite/BackupSample/BackupSample.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/samples/snippets/standard/data/sqlite/BatchingSample/BatchingSample.csproj b/samples/snippets/standard/data/sqlite/BatchingSample/BatchingSample.csproj
index 57dbb6e743144..77048208d6383 100644
--- a/samples/snippets/standard/data/sqlite/BatchingSample/BatchingSample.csproj
+++ b/samples/snippets/standard/data/sqlite/BatchingSample/BatchingSample.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/samples/snippets/standard/data/sqlite/BulkInsertSample/BulkInsertSample.csproj b/samples/snippets/standard/data/sqlite/BulkInsertSample/BulkInsertSample.csproj
index 57dbb6e743144..77048208d6383 100644
--- a/samples/snippets/standard/data/sqlite/BulkInsertSample/BulkInsertSample.csproj
+++ b/samples/snippets/standard/data/sqlite/BulkInsertSample/BulkInsertSample.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/samples/snippets/standard/data/sqlite/CollationSample/CollationSample.csproj b/samples/snippets/standard/data/sqlite/CollationSample/CollationSample.csproj
index 57dbb6e743144..77048208d6383 100644
--- a/samples/snippets/standard/data/sqlite/CollationSample/CollationSample.csproj
+++ b/samples/snippets/standard/data/sqlite/CollationSample/CollationSample.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/samples/snippets/standard/data/sqlite/DapperSample/DapperSample.csproj b/samples/snippets/standard/data/sqlite/DapperSample/DapperSample.csproj
index 2f94e43c13343..de7f7950a4bb1 100644
--- a/samples/snippets/standard/data/sqlite/DapperSample/DapperSample.csproj
+++ b/samples/snippets/standard/data/sqlite/DapperSample/DapperSample.csproj
@@ -9,7 +9,7 @@
-
+
diff --git a/samples/snippets/standard/data/sqlite/DateAndTimeSample/DateAndTimeSample.csproj b/samples/snippets/standard/data/sqlite/DateAndTimeSample/DateAndTimeSample.csproj
index 57dbb6e743144..77048208d6383 100644
--- a/samples/snippets/standard/data/sqlite/DateAndTimeSample/DateAndTimeSample.csproj
+++ b/samples/snippets/standard/data/sqlite/DateAndTimeSample/DateAndTimeSample.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/samples/snippets/standard/data/sqlite/DeferredTransactionSample/DeferredTransactionSample.csproj b/samples/snippets/standard/data/sqlite/DeferredTransactionSample/DeferredTransactionSample.csproj
index 57dbb6e743144..77048208d6383 100644
--- a/samples/snippets/standard/data/sqlite/DeferredTransactionSample/DeferredTransactionSample.csproj
+++ b/samples/snippets/standard/data/sqlite/DeferredTransactionSample/DeferredTransactionSample.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/samples/snippets/standard/data/sqlite/DirtyReadSample/DirtyReadSample.csproj b/samples/snippets/standard/data/sqlite/DirtyReadSample/DirtyReadSample.csproj
index 57dbb6e743144..77048208d6383 100644
--- a/samples/snippets/standard/data/sqlite/DirtyReadSample/DirtyReadSample.csproj
+++ b/samples/snippets/standard/data/sqlite/DirtyReadSample/DirtyReadSample.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/samples/snippets/standard/data/sqlite/ExtensionsSample/ExtensionsSample.csproj b/samples/snippets/standard/data/sqlite/ExtensionsSample/ExtensionsSample.csproj
index 01ba8b42138d3..aee01b396b576 100644
--- a/samples/snippets/standard/data/sqlite/ExtensionsSample/ExtensionsSample.csproj
+++ b/samples/snippets/standard/data/sqlite/ExtensionsSample/ExtensionsSample.csproj
@@ -11,7 +11,7 @@
-
+
diff --git a/samples/snippets/standard/data/sqlite/HelloWorldSample/HelloWorldSample.csproj b/samples/snippets/standard/data/sqlite/HelloWorldSample/HelloWorldSample.csproj
index 57dbb6e743144..77048208d6383 100644
--- a/samples/snippets/standard/data/sqlite/HelloWorldSample/HelloWorldSample.csproj
+++ b/samples/snippets/standard/data/sqlite/HelloWorldSample/HelloWorldSample.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/samples/snippets/standard/data/sqlite/InteropSample/InteropSample.csproj b/samples/snippets/standard/data/sqlite/InteropSample/InteropSample.csproj
index 57dbb6e743144..77048208d6383 100644
--- a/samples/snippets/standard/data/sqlite/InteropSample/InteropSample.csproj
+++ b/samples/snippets/standard/data/sqlite/InteropSample/InteropSample.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/samples/snippets/standard/data/sqlite/RegularExpressionSample/RegularExpressionSample.csproj b/samples/snippets/standard/data/sqlite/RegularExpressionSample/RegularExpressionSample.csproj
index 57dbb6e743144..77048208d6383 100644
--- a/samples/snippets/standard/data/sqlite/RegularExpressionSample/RegularExpressionSample.csproj
+++ b/samples/snippets/standard/data/sqlite/RegularExpressionSample/RegularExpressionSample.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/samples/snippets/standard/data/sqlite/ResultMetadataSample/ResultMetadataSample.csproj b/samples/snippets/standard/data/sqlite/ResultMetadataSample/ResultMetadataSample.csproj
index 57dbb6e743144..77048208d6383 100644
--- a/samples/snippets/standard/data/sqlite/ResultMetadataSample/ResultMetadataSample.csproj
+++ b/samples/snippets/standard/data/sqlite/ResultMetadataSample/ResultMetadataSample.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/samples/snippets/standard/data/sqlite/SavepointSample/SavepointSample.csproj b/samples/snippets/standard/data/sqlite/SavepointSample/SavepointSample.csproj
index 57dbb6e743144..77048208d6383 100644
--- a/samples/snippets/standard/data/sqlite/SavepointSample/SavepointSample.csproj
+++ b/samples/snippets/standard/data/sqlite/SavepointSample/SavepointSample.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/samples/snippets/standard/data/sqlite/ScalarFunctionSample/ScalarFunctionSample.csproj b/samples/snippets/standard/data/sqlite/ScalarFunctionSample/ScalarFunctionSample.csproj
index 57dbb6e743144..77048208d6383 100644
--- a/samples/snippets/standard/data/sqlite/ScalarFunctionSample/ScalarFunctionSample.csproj
+++ b/samples/snippets/standard/data/sqlite/ScalarFunctionSample/ScalarFunctionSample.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/samples/snippets/standard/data/sqlite/SqliteProviderSample/SqliteProviderSample.csproj b/samples/snippets/standard/data/sqlite/SqliteProviderSample/SqliteProviderSample.csproj
index 1980ddef9f0b2..dd01346204712 100644
--- a/samples/snippets/standard/data/sqlite/SqliteProviderSample/SqliteProviderSample.csproj
+++ b/samples/snippets/standard/data/sqlite/SqliteProviderSample/SqliteProviderSample.csproj
@@ -8,8 +8,8 @@
-
-
+
+
diff --git a/samples/snippets/standard/data/sqlite/StreamingSample/StreamingSample.csproj b/samples/snippets/standard/data/sqlite/StreamingSample/StreamingSample.csproj
index 30f1d8e8b39dd..62bf8a1da618e 100644
--- a/samples/snippets/standard/data/sqlite/StreamingSample/StreamingSample.csproj
+++ b/samples/snippets/standard/data/sqlite/StreamingSample/StreamingSample.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/samples/snippets/standard/data/sqlite/SystemLibrarySample/SystemLibrarySample.csproj b/samples/snippets/standard/data/sqlite/SystemLibrarySample/SystemLibrarySample.csproj
index ac9afde600093..d772f5580e3da 100644
--- a/samples/snippets/standard/data/sqlite/SystemLibrarySample/SystemLibrarySample.csproj
+++ b/samples/snippets/standard/data/sqlite/SystemLibrarySample/SystemLibrarySample.csproj
@@ -8,7 +8,7 @@
-
+