From 71b55763660c5df3febffb8fbe194d3ad3d729c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:30:55 +0000 Subject: [PATCH 01/41] Bump the github-actions group with 3 updates (#56427) Bumps the github-actions group with 3 updates: [step-security/harden-runner](https://github.com/step-security/harden-runner), [ossf/scorecard-action](https://github.com/ossf/scorecard-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action). Updates `step-security/harden-runner` from 2.21.1 to 2.22.1 - [Release notes](https://github.com/step-security/harden-runner/releases) - [Commits](https://github.com/step-security/harden-runner/compare/v2.21.1...ccd8616d44fd3846e67624a50d5aad6d37bf2d25) Updates `ossf/scorecard-action` from 2.4.4 to 2.5.0 - [Release notes](https://github.com/ossf/scorecard-action/releases) - [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md) - [Commits](https://github.com/ossf/scorecard-action/compare/2d1146689b8cda280b9bc96326124645441f03bc...fa7117db83c52d787ae5a89f350999701505d78e) Updates `github/codeql-action/upload-sarif` from 4.38.3 to 4.39.0 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/24c54180a607b1449ed407dd24f251e4e9147c8d...6f2ac81f5cd81fe351a197ba0b00d91d03cd2aee) --- updated-dependencies: - dependency-name: step-security/harden-runner dependency-version: 2.22.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions - dependency-name: ossf/scorecard-action dependency-version: 2.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions - dependency-name: github/codeql-action/upload-sarif dependency-version: 4.39.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/dependabot-approve-merge.yml | 2 +- .github/workflows/scorecards.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dependabot-approve-merge.yml b/.github/workflows/dependabot-approve-merge.yml index 63636d559755b..40427eae726fb 100644 --- a/.github/workflows/dependabot-approve-merge.yml +++ b/.github/workflows/dependabot-approve-merge.yml @@ -11,7 +11,7 @@ jobs: if: ${{ github.actor == 'dependabot[bot]' && github.repository_owner == 'dotnet' && github.base_ref == 'main' }} steps: - name: Harden Runner - uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 + uses: step-security/harden-runner@ccd8616d44fd3846e67624a50d5aad6d37bf2d25 # v2.22.1 with: egress-policy: audit diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index dd07d4d9cdaa9..0ba506f1a76b3 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -41,7 +41,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@2d1146689b8cda280b9bc96326124645441f03bc # v2.4.4 + uses: ossf/scorecard-action@fa7117db83c52d787ae5a89f350999701505d78e # v2.5.0 with: results_file: results.sarif results_format: sarif @@ -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@24c54180a607b1449ed407dd24f251e4e9147c8d # v4.38.3 + uses: github/codeql-action/upload-sarif@6f2ac81f5cd81fe351a197ba0b00d91d03cd2aee # v4.39.0 with: sarif_file: results.sarif From e005e9423c66c943219451863193812d5b0584ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:37:51 +0000 Subject: [PATCH 02/41] Bump MSTest.TestFramework across 2 directories (#56434) --- updated-dependencies: - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../vb/PrimeService.Tests/PrimeService.Tests.vbproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 369a3c236d427..a568545d0d3fb 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 @@ -9,7 +9,7 @@ - + From 378eef9821737af76d1d524a8a2aaae459672f3a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:37:59 +0000 Subject: [PATCH 03/41] Bump xunit.runner.visualstudio across 6 directories (#56428) --- updated-dependencies: - dependency-name: xunit.runner.visualstudio dependency-version: 4.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: xunit.runner.visualstudio dependency-version: 4.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: xunit.runner.visualstudio dependency-version: 4.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: xunit.runner.visualstudio dependency-version: 4.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: xunit.runner.visualstudio dependency-version: 4.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: xunit.runner.visualstudio dependency-version: 4.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: xunit.runner.visualstudio dependency-version: 4.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../csharp/after/unit-testing-best-practices-after.csproj | 2 +- .../csharp/before/unit-testing-best-practices-before.csproj | 2 +- .../csharp/PrimeService.Tests/PrimeService.Tests.csproj | 2 +- .../csharp/test/NewTypesTests/NewTypesTests.csproj | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/samples/snippets/core/testing/unit-testing-best-practices/csharp/after/unit-testing-best-practices-after.csproj b/samples/snippets/core/testing/unit-testing-best-practices/csharp/after/unit-testing-best-practices-after.csproj index 3e8ef6358bb7f..2413438e2ac95 100644 --- a/samples/snippets/core/testing/unit-testing-best-practices/csharp/after/unit-testing-best-practices-after.csproj +++ b/samples/snippets/core/testing/unit-testing-best-practices/csharp/after/unit-testing-best-practices-after.csproj @@ -10,7 +10,7 @@ - + diff --git a/samples/snippets/core/testing/unit-testing-best-practices/csharp/before/unit-testing-best-practices-before.csproj b/samples/snippets/core/testing/unit-testing-best-practices/csharp/before/unit-testing-best-practices-before.csproj index 3e8ef6358bb7f..2413438e2ac95 100644 --- a/samples/snippets/core/testing/unit-testing-best-practices/csharp/before/unit-testing-best-practices-before.csproj +++ b/samples/snippets/core/testing/unit-testing-best-practices/csharp/before/unit-testing-best-practices-before.csproj @@ -10,7 +10,7 @@ - + diff --git a/samples/snippets/core/testing/unit-testing-using-dotnet-test/csharp/PrimeService.Tests/PrimeService.Tests.csproj b/samples/snippets/core/testing/unit-testing-using-dotnet-test/csharp/PrimeService.Tests/PrimeService.Tests.csproj index 65f2146f1f9f5..0890d497d2201 100644 --- a/samples/snippets/core/testing/unit-testing-using-dotnet-test/csharp/PrimeService.Tests/PrimeService.Tests.csproj +++ b/samples/snippets/core/testing/unit-testing-using-dotnet-test/csharp/PrimeService.Tests/PrimeService.Tests.csproj @@ -9,7 +9,7 @@ - + diff --git a/samples/snippets/core/tutorials/testing-with-cli/csharp/test/NewTypesTests/NewTypesTests.csproj b/samples/snippets/core/tutorials/testing-with-cli/csharp/test/NewTypesTests/NewTypesTests.csproj index 75981070c97a0..90cfc2e704a9b 100644 --- a/samples/snippets/core/tutorials/testing-with-cli/csharp/test/NewTypesTests/NewTypesTests.csproj +++ b/samples/snippets/core/tutorials/testing-with-cli/csharp/test/NewTypesTests/NewTypesTests.csproj @@ -8,7 +8,7 @@ - + From 8355123d6672cc580ab72d435cf608b7dec8129a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:38:33 +0000 Subject: [PATCH 04/41] Bump MSTest across 3 directories (#56429) --- updated-dependencies: - dependency-name: MSTest dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/ai/evaluation/snippets/evaluate-ai-responses/TestAI.csproj | 2 +- .../snippets/evaluate-safety/EvaluateResponseSafety.csproj | 2 +- .../snippets/evaluate-with-reporting/TestAIWithReporting.csproj | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/ai/evaluation/snippets/evaluate-ai-responses/TestAI.csproj b/docs/ai/evaluation/snippets/evaluate-ai-responses/TestAI.csproj index e3fa8612bd80f..e64017196eab7 100644 --- a/docs/ai/evaluation/snippets/evaluate-ai-responses/TestAI.csproj +++ b/docs/ai/evaluation/snippets/evaluate-ai-responses/TestAI.csproj @@ -18,7 +18,7 @@ - + diff --git a/docs/ai/evaluation/snippets/evaluate-safety/EvaluateResponseSafety.csproj b/docs/ai/evaluation/snippets/evaluate-safety/EvaluateResponseSafety.csproj index dbf5f9c9364c5..ebcfe2be8746c 100644 --- a/docs/ai/evaluation/snippets/evaluate-safety/EvaluateResponseSafety.csproj +++ b/docs/ai/evaluation/snippets/evaluate-safety/EvaluateResponseSafety.csproj @@ -19,7 +19,7 @@ - + diff --git a/docs/ai/evaluation/snippets/evaluate-with-reporting/TestAIWithReporting.csproj b/docs/ai/evaluation/snippets/evaluate-with-reporting/TestAIWithReporting.csproj index fbd1279ff6f59..eec08dc70516c 100644 --- a/docs/ai/evaluation/snippets/evaluate-with-reporting/TestAIWithReporting.csproj +++ b/docs/ai/evaluation/snippets/evaluate-with-reporting/TestAIWithReporting.csproj @@ -19,7 +19,7 @@ - + From 1f85e3ecb4b3fc1f0159737fa22e36569ca54dc5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:39:26 +0000 Subject: [PATCH 05/41] Bump Microsoft.Orleans.Sdk across 2 directories (#56432) --- updated-dependencies: - dependency-name: Microsoft.Orleans.Sdk dependency-version: 10.4.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: Microsoft.Orleans.Sdk dependency-version: 10.4.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: Microsoft.Orleans.Sdk dependency-version: 10.4.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/orleans/Directory.Build.props | 2 +- .../snippets/transactions/Abstractions/Abstractions.csproj | 2 +- .../snippets/minimal/GrainInterfaces/GrainInterfaces.csproj | 2 +- .../tutorials-and-samples/snippets/minimal/Grains/Grains.csproj | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/orleans/Directory.Build.props b/docs/orleans/Directory.Build.props index ff4279aa7dddd..f77de739a2a10 100644 --- a/docs/orleans/Directory.Build.props +++ b/docs/orleans/Directory.Build.props @@ -13,7 +13,7 @@ - + diff --git a/docs/orleans/grains/snippets/transactions/Abstractions/Abstractions.csproj b/docs/orleans/grains/snippets/transactions/Abstractions/Abstractions.csproj index 7e07127a34d4f..6944334df8bab 100644 --- a/docs/orleans/grains/snippets/transactions/Abstractions/Abstractions.csproj +++ b/docs/orleans/grains/snippets/transactions/Abstractions/Abstractions.csproj @@ -4,7 +4,7 @@ - + diff --git a/docs/orleans/tutorials-and-samples/snippets/minimal/GrainInterfaces/GrainInterfaces.csproj b/docs/orleans/tutorials-and-samples/snippets/minimal/GrainInterfaces/GrainInterfaces.csproj index 650052a5eb082..cc9adc51410c2 100644 --- a/docs/orleans/tutorials-and-samples/snippets/minimal/GrainInterfaces/GrainInterfaces.csproj +++ b/docs/orleans/tutorials-and-samples/snippets/minimal/GrainInterfaces/GrainInterfaces.csproj @@ -4,7 +4,7 @@ - + diff --git a/docs/orleans/tutorials-and-samples/snippets/minimal/Grains/Grains.csproj b/docs/orleans/tutorials-and-samples/snippets/minimal/Grains/Grains.csproj index 39ffbbef3c3c3..3852d702cd187 100644 --- a/docs/orleans/tutorials-and-samples/snippets/minimal/Grains/Grains.csproj +++ b/docs/orleans/tutorials-and-samples/snippets/minimal/Grains/Grains.csproj @@ -1,7 +1,7 @@ - + From ae13fa02fe601098b3211084fcdf98bf72beb0e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:40:44 +0000 Subject: [PATCH 06/41] Bump MSTest.TestFramework across 2 directories (#56440) --- updated-dependencies: - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../MakeConst/MakeConst.Test/MakeConst.Test.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 cce4bff313c36..617505c78a780 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 @@ -10,7 +10,7 @@ - + From 0c63f665859faa24fe9df8b0bd0148aa1f409d79 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:41:02 +0000 Subject: [PATCH 07/41] Bump xunit.runner.visualstudio in /docs/azure/sdk/snippets/unit-testing (#56439) --- updated-dependencies: - dependency-name: xunit.runner.visualstudio dependency-version: 4.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../azure/sdk/snippets/unit-testing/UnitTestingSampleApp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/azure/sdk/snippets/unit-testing/UnitTestingSampleApp.csproj b/docs/azure/sdk/snippets/unit-testing/UnitTestingSampleApp.csproj index fc635498d9089..87767e0d9dc2a 100644 --- a/docs/azure/sdk/snippets/unit-testing/UnitTestingSampleApp.csproj +++ b/docs/azure/sdk/snippets/unit-testing/UnitTestingSampleApp.csproj @@ -16,7 +16,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all From ba33f0ddf2792391e00de52b03ffc70c40589521 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:42:24 +0000 Subject: [PATCH 08/41] Bump Microsoft.Orleans.Serialization.MessagePack in /docs/orleans/host/configuration-guide/snippets/serialization (#56436) --- updated-dependencies: - dependency-name: Microsoft.Orleans.Serialization.MessagePack dependency-version: 10.4.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../snippets/serialization/serialization.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/orleans/host/configuration-guide/snippets/serialization/serialization.csproj b/docs/orleans/host/configuration-guide/snippets/serialization/serialization.csproj index 3276ab44195d8..4fe90e6c3ebb3 100644 --- a/docs/orleans/host/configuration-guide/snippets/serialization/serialization.csproj +++ b/docs/orleans/host/configuration-guide/snippets/serialization/serialization.csproj @@ -8,7 +8,7 @@ - + From dc02bec82f4c513cc36bb1a37d52a115a14b4a62 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:42:27 +0000 Subject: [PATCH 09/41] Bump Microsoft.Agents.AI.OpenAI in /docs/ai/snippets/prompt-engineering (#56430) --- updated-dependencies: - dependency-name: Microsoft.Agents.AI.OpenAI dependency-version: 1.24.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/ai/snippets/prompt-engineering/multi-turn-chat.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ai/snippets/prompt-engineering/multi-turn-chat.csproj b/docs/ai/snippets/prompt-engineering/multi-turn-chat.csproj index 2a99c3dd019ec..5af1dd1e5290c 100644 --- a/docs/ai/snippets/prompt-engineering/multi-turn-chat.csproj +++ b/docs/ai/snippets/prompt-engineering/multi-turn-chat.csproj @@ -10,7 +10,7 @@ - + - + all diff --git a/samples/snippets/core/testing/unit-testing-vb-nunit/vb/PrimeService.Tests/PrimeService.Tests.vbproj b/samples/snippets/core/testing/unit-testing-vb-nunit/vb/PrimeService.Tests/PrimeService.Tests.vbproj index 46863ab05b00e..dc348b5053aa8 100644 --- a/samples/snippets/core/testing/unit-testing-vb-nunit/vb/PrimeService.Tests/PrimeService.Tests.vbproj +++ b/samples/snippets/core/testing/unit-testing-vb-nunit/vb/PrimeService.Tests/PrimeService.Tests.vbproj @@ -9,7 +9,7 @@ - + From 0b408bc0acda95e7f944b87d55faa608780a264a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:42:41 +0000 Subject: [PATCH 11/41] Bump Swashbuckle.AspNetCore across 6 directories (#56437) --- updated-dependencies: - dependency-name: Swashbuckle.AspNetCore dependency-version: 10.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: Swashbuckle.AspNetCore dependency-version: 10.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: Swashbuckle.AspNetCore dependency-version: 10.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: Swashbuckle.AspNetCore dependency-version: 10.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: Swashbuckle.AspNetCore dependency-version: 10.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: Swashbuckle.AspNetCore dependency-version: 10.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/azure/sdk/snippets/authentication/Directory.Packages.props | 2 +- .../sdk/snippets/dependency-injection/Directory.Packages.props | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/azure/sdk/snippets/authentication/Directory.Packages.props b/docs/azure/sdk/snippets/authentication/Directory.Packages.props index 1a66b1408adda..5810c813035b0 100644 --- a/docs/azure/sdk/snippets/authentication/Directory.Packages.props +++ b/docs/azure/sdk/snippets/authentication/Directory.Packages.props @@ -14,7 +14,7 @@ - + diff --git a/docs/azure/sdk/snippets/dependency-injection/Directory.Packages.props b/docs/azure/sdk/snippets/dependency-injection/Directory.Packages.props index d75dddce56094..7159187e1b528 100644 --- a/docs/azure/sdk/snippets/dependency-injection/Directory.Packages.props +++ b/docs/azure/sdk/snippets/dependency-injection/Directory.Packages.props @@ -10,7 +10,7 @@ - + From 1403b3e3d4f3eaa36ef78baa047f22bddf76dc60 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:43:38 +0000 Subject: [PATCH 12/41] Bump xunit.runner.visualstudio across 3 directories (#56442) --- updated-dependencies: - dependency-name: xunit.runner.visualstudio dependency-version: 4.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: xunit.runner.visualstudio dependency-version: 4.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: xunit.runner.visualstudio dependency-version: 4.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../csharp-tests/timeprovider-testing-tests.csproj | 2 +- .../csharp/XUnit.TestProject/XUnit.Project.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/core/extensions/snippets/timeprovider-testing/csharp-tests/timeprovider-testing-tests.csproj b/docs/core/extensions/snippets/timeprovider-testing/csharp-tests/timeprovider-testing-tests.csproj index 4d5bbccf276b5..067a6dd7f03b5 100644 --- a/docs/core/extensions/snippets/timeprovider-testing/csharp-tests/timeprovider-testing-tests.csproj +++ b/docs/core/extensions/snippets/timeprovider-testing/csharp-tests/timeprovider-testing-tests.csproj @@ -13,7 +13,7 @@ - + diff --git a/docs/core/testing/snippets/order-unit-tests/csharp/XUnit.TestProject/XUnit.Project.csproj b/docs/core/testing/snippets/order-unit-tests/csharp/XUnit.TestProject/XUnit.Project.csproj index d37133e0e66f6..846dc1f988491 100644 --- a/docs/core/testing/snippets/order-unit-tests/csharp/XUnit.TestProject/XUnit.Project.csproj +++ b/docs/core/testing/snippets/order-unit-tests/csharp/XUnit.TestProject/XUnit.Project.csproj @@ -10,7 +10,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive From b9139329ef8e0d2de30a6cb6e283810300b2b003 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:43:45 +0000 Subject: [PATCH 13/41] Bump Microsoft.Diagnostics.NETCore.Client in /docs/core/diagnostics/snippets/Microsoft.Diagnostics.NETCore.Client/csharp (#56441) --- updated-dependencies: - dependency-name: Microsoft.Diagnostics.NETCore.Client dependency-version: 0.2.750501 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../csharp/Microsoft.Diagnostics.NETCore.Client.Samples.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 bee1c6a76c7ec..208a3edd1c828 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 @@ -6,7 +6,7 @@ - + From 663068581720bec19a9b04466d17ca9abba54a36 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:44:38 +0000 Subject: [PATCH 14/41] Bump MSTest.TestAdapter across 5 directories (#56443) Bumps MSTest.TestAdapter from 4.4.1 to 4.5.1 Bumps MSTest.TestFramework from 4.4.1 to 4.5.1 --- updated-dependencies: - dependency-name: MSTest.TestAdapter dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestAdapter dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestAdapter dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestAdapter dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestAdapter dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../csharp/MSTest.Project/MSTest.Project.csproj | 4 ++-- .../csharp/PrimeService.Tests/PrimeService.Tests.csproj | 4 ++-- .../vb/StringLibraryTest/StringLibraryTest.vbproj | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/core/testing/snippets/order-unit-tests/csharp/MSTest.Project/MSTest.Project.csproj b/docs/core/testing/snippets/order-unit-tests/csharp/MSTest.Project/MSTest.Project.csproj index 9287d86bcf29a..f2a761baa2b33 100644 --- a/docs/core/testing/snippets/order-unit-tests/csharp/MSTest.Project/MSTest.Project.csproj +++ b/docs/core/testing/snippets/order-unit-tests/csharp/MSTest.Project/MSTest.Project.csproj @@ -9,8 +9,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive 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 a691952acb4a6..23dea3a7a045f 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/tutorials/snippets/create-class-library/vb/StringLibraryTest/StringLibraryTest.vbproj b/docs/core/tutorials/snippets/create-class-library/vb/StringLibraryTest/StringLibraryTest.vbproj index 3e471b153832c..c8bc5d41ef308 100644 --- a/docs/core/tutorials/snippets/create-class-library/vb/StringLibraryTest/StringLibraryTest.vbproj +++ b/docs/core/tutorials/snippets/create-class-library/vb/StringLibraryTest/StringLibraryTest.vbproj @@ -8,8 +8,8 @@ - - + + From 8e760f8d1ab05c46c667da3b538fe02f441b3e65 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:47:31 +0000 Subject: [PATCH 15/41] Bump NUnit3TestAdapter across 2 directories (#56445) --- updated-dependencies: - dependency-name: NUnit3TestAdapter dependency-version: 6.3.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: NUnit3TestAdapter dependency-version: 6.3.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../csharp/NUnit.TestProject/NUnit.Project.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/core/testing/snippets/order-unit-tests/csharp/NUnit.TestProject/NUnit.Project.csproj b/docs/core/testing/snippets/order-unit-tests/csharp/NUnit.TestProject/NUnit.Project.csproj index a094a48ed0b0c..e690b33fc1051 100644 --- a/docs/core/testing/snippets/order-unit-tests/csharp/NUnit.TestProject/NUnit.Project.csproj +++ b/docs/core/testing/snippets/order-unit-tests/csharp/NUnit.TestProject/NUnit.Project.csproj @@ -9,7 +9,7 @@ - + all From e7d00575796136aa0646b94cbd816d3cb2200f43 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:47:37 +0000 Subject: [PATCH 16/41] Bump Microsoft.Orleans.Transactions in /docs/orleans/grains/snippets/transactions/Abstractions (#56374) --- updated-dependencies: - dependency-name: Microsoft.Orleans.Transactions dependency-version: 10.4.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget/Microsoft.Orleans.Transactions ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../snippets/transactions/Abstractions/Abstractions.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/orleans/grains/snippets/transactions/Abstractions/Abstractions.csproj b/docs/orleans/grains/snippets/transactions/Abstractions/Abstractions.csproj index 6944334df8bab..a33d3b40bb78b 100644 --- a/docs/orleans/grains/snippets/transactions/Abstractions/Abstractions.csproj +++ b/docs/orleans/grains/snippets/transactions/Abstractions/Abstractions.csproj @@ -5,7 +5,7 @@ - + From 6f2e8a107d0843c3540cdb8d132a2a0b39188d3b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:48:37 +0000 Subject: [PATCH 17/41] Bump MSTest across 5 directories (#56448) --- updated-dependencies: - dependency-name: MSTest dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../snippets/testcontext/csharp-cancellation/project.csproj | 2 +- docs/core/testing/snippets/testcontext/csharp/project.csproj | 2 +- .../csharp/CombinatorialExample.csproj | 2 +- .../vb/CombinatorialExample.vbproj | 2 +- .../csharp/StringLibraryTest/StringLibraryTest.csproj | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/core/testing/snippets/testcontext/csharp-cancellation/project.csproj b/docs/core/testing/snippets/testcontext/csharp-cancellation/project.csproj index b6a7be5818e12..033b0ad90b919 100644 --- a/docs/core/testing/snippets/testcontext/csharp-cancellation/project.csproj +++ b/docs/core/testing/snippets/testcontext/csharp-cancellation/project.csproj @@ -8,7 +8,7 @@ - + diff --git a/docs/core/testing/snippets/testcontext/csharp/project.csproj b/docs/core/testing/snippets/testcontext/csharp/project.csproj index 4169804b179de..c8d3ef939234d 100644 --- a/docs/core/testing/snippets/testcontext/csharp/project.csproj +++ b/docs/core/testing/snippets/testcontext/csharp/project.csproj @@ -8,7 +8,7 @@ - + diff --git a/docs/core/testing/snippets/unit-testing-mstest-writing-tests-data-driven/csharp/CombinatorialExample.csproj b/docs/core/testing/snippets/unit-testing-mstest-writing-tests-data-driven/csharp/CombinatorialExample.csproj index 3280af2d24ea7..952da7c0a584d 100644 --- a/docs/core/testing/snippets/unit-testing-mstest-writing-tests-data-driven/csharp/CombinatorialExample.csproj +++ b/docs/core/testing/snippets/unit-testing-mstest-writing-tests-data-driven/csharp/CombinatorialExample.csproj @@ -4,7 +4,7 @@ net10.0 enable enable - 4.4.1 + 4.5.1 $(RestoreAdditionalProjectSources);https://pkgs.dev.azure.com/dnceng/public/_packaging/test-tools/nuget/v3/index.json diff --git a/docs/core/testing/snippets/unit-testing-mstest-writing-tests-data-driven/vb/CombinatorialExample.vbproj b/docs/core/testing/snippets/unit-testing-mstest-writing-tests-data-driven/vb/CombinatorialExample.vbproj index 8a9c0096a05bc..e8f08f944a06d 100644 --- a/docs/core/testing/snippets/unit-testing-mstest-writing-tests-data-driven/vb/CombinatorialExample.vbproj +++ b/docs/core/testing/snippets/unit-testing-mstest-writing-tests-data-driven/vb/CombinatorialExample.vbproj @@ -3,7 +3,7 @@ net10.0 - 4.4.1 + 4.5.1 $(RestoreAdditionalProjectSources);https://pkgs.dev.azure.com/dnceng/public/_packaging/test-tools/nuget/v3/index.json diff --git a/docs/core/tutorials/snippets/create-class-library/csharp/StringLibraryTest/StringLibraryTest.csproj b/docs/core/tutorials/snippets/create-class-library/csharp/StringLibraryTest/StringLibraryTest.csproj index 4419a2f5d558e..b1a45e227dee8 100644 --- a/docs/core/tutorials/snippets/create-class-library/csharp/StringLibraryTest/StringLibraryTest.csproj +++ b/docs/core/tutorials/snippets/create-class-library/csharp/StringLibraryTest/StringLibraryTest.csproj @@ -10,7 +10,7 @@ - + From 6456df3fd3e0c858c660c648dd126695de95f83d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:49:00 +0000 Subject: [PATCH 18/41] Bump Microsoft.Orleans.Sdk and Microsoft.Orleans.Server (#56446) Bumps Microsoft.Orleans.Sdk from 10.3.1 to 10.4.0 Bumps Microsoft.Orleans.Server from 10.3.1 to 10.4.0 --- updated-dependencies: - dependency-name: Microsoft.Orleans.Sdk dependency-version: 10.4.0 dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: Microsoft.Orleans.Server dependency-version: 10.4.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../BroadcastChannel.Silo/BroadcastChannel.Silo.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/orleans/streaming/snippets/broadcastchannel/BroadcastChannel.Silo/BroadcastChannel.Silo.csproj b/docs/orleans/streaming/snippets/broadcastchannel/BroadcastChannel.Silo/BroadcastChannel.Silo.csproj index a2b69c20b8207..de1842e9617d4 100644 --- a/docs/orleans/streaming/snippets/broadcastchannel/BroadcastChannel.Silo/BroadcastChannel.Silo.csproj +++ b/docs/orleans/streaming/snippets/broadcastchannel/BroadcastChannel.Silo/BroadcastChannel.Silo.csproj @@ -7,7 +7,7 @@ - + From cd4d4367e412cf6ed697df81a092af3cb071ef56 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:49:24 +0000 Subject: [PATCH 19/41] Bump Azure.Storage.Blobs in /docs/core/whats-new/snippets/dotnet-9/csharp (#56450) --- updated-dependencies: - dependency-name: Azure.Storage.Blobs dependency-version: 12.30.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/core/whats-new/snippets/dotnet-9/csharp/Project.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/core/whats-new/snippets/dotnet-9/csharp/Project.csproj b/docs/core/whats-new/snippets/dotnet-9/csharp/Project.csproj index 72a26fbb64f3a..edb99bbb48c47 100644 --- a/docs/core/whats-new/snippets/dotnet-9/csharp/Project.csproj +++ b/docs/core/whats-new/snippets/dotnet-9/csharp/Project.csproj @@ -7,7 +7,7 @@ - + From 7a269e0b5df04b4db7ba508aa21374fb76bb5664 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:49:42 +0000 Subject: [PATCH 20/41] Bump Microsoft.Orleans.Sdk and Microsoft.Orleans.Server (#56449) Bumps Microsoft.Orleans.Sdk from 10.3.1 to 10.4.0 Bumps Microsoft.Orleans.Server from 10.3.1 to 10.4.0 --- updated-dependencies: - dependency-name: Microsoft.Orleans.Sdk dependency-version: 10.4.0 dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: Microsoft.Orleans.Server dependency-version: 10.4.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../tutorials-and-samples/snippets/helloworld/helloworld.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/orleans/tutorials-and-samples/snippets/helloworld/helloworld.csproj b/docs/orleans/tutorials-and-samples/snippets/helloworld/helloworld.csproj index 522510c13e88f..01573ab420d44 100644 --- a/docs/orleans/tutorials-and-samples/snippets/helloworld/helloworld.csproj +++ b/docs/orleans/tutorials-and-samples/snippets/helloworld/helloworld.csproj @@ -1,7 +1,7 @@ - + From 3031cdcdd5e9e22a59e52331174e6c0b932ea280 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 12:51:00 +0000 Subject: [PATCH 21/41] Bump xunit.runner.visualstudio in /samples/snippets/csharp/xunit-test (#56451) --- updated-dependencies: - dependency-name: xunit.runner.visualstudio dependency-version: 4.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- samples/snippets/csharp/xunit-test/xunit-test.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/csharp/xunit-test/xunit-test.csproj b/samples/snippets/csharp/xunit-test/xunit-test.csproj index 9c2036a655426..10e0460f1daa7 100644 --- a/samples/snippets/csharp/xunit-test/xunit-test.csproj +++ b/samples/snippets/csharp/xunit-test/xunit-test.csproj @@ -8,7 +8,7 @@ - + From 7967e6114542a9718e87de4084fdf53e7d20c318 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 13:02:03 +0000 Subject: [PATCH 22/41] Bump Microsoft.Orleans.Serialization.SystemTextJson in /docs/orleans/streaming/snippets/broadcastchannel (#56452) --- updated-dependencies: - dependency-name: Microsoft.Orleans.Serialization.SystemTextJson dependency-version: 10.4.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../BroadcastChannel.Silo/BroadcastChannel.Silo.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/orleans/streaming/snippets/broadcastchannel/BroadcastChannel.Silo/BroadcastChannel.Silo.csproj b/docs/orleans/streaming/snippets/broadcastchannel/BroadcastChannel.Silo/BroadcastChannel.Silo.csproj index de1842e9617d4..842860a9b0e78 100644 --- a/docs/orleans/streaming/snippets/broadcastchannel/BroadcastChannel.Silo/BroadcastChannel.Silo.csproj +++ b/docs/orleans/streaming/snippets/broadcastchannel/BroadcastChannel.Silo/BroadcastChannel.Silo.csproj @@ -9,7 +9,7 @@ - + From f8dc4a44bfa826e17e5f9149d1fe6376b62cede2 Mon Sep 17 00:00:00 2001 From: Mitchell Hwang <16830051+mdh1418@users.noreply.github.com> Date: Mon, 19 Oct 2026 10:15:39 -0400 Subject: [PATCH 23/41] [Diagnostics] Add EventPipe Buffer Mode and EventFilter and update Collect-Linux (#55628) * Document EventPipe buffering mode and Event ID filter client APIs Add Microsoft.Diagnostics.NETCore.Client reference for EventPipeBufferingMode, EventPipeProviderEventFilter, the new EventPipeSessionConfiguration and EventPipeProvider overloads and properties, and the UnknownCommandException and InvalidCommandArgumentException types. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Document --buffering-mode for dotnet-gcdump and dotnet-trace dotnet-gcdump collect/report default to non-lossy (Block) with automatic fallback on older runtimes; dotnet-trace collect adds an opt-in --buffering-mode (default Drop). Block requires a .NET 11+ target runtime. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Document non-lossy EventPipe buffering environment variables Add DOTNET_EventPipeBufferingMode and DOTNET_EventPipeOutputStreaming to the EventPipe environment-variable reference, and note the non-lossy opt-in on the circular-buffer guidance. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Sync buffering-mode docs to latest diagnostics and runtime changes Remove the --buffering-mode option from dotnet-gcdump (it now always collects non-lossy and falls back to lossy on pre-.NET 11 targets). Replace the dropped UnknownCommandException and InvalidCommandArgumentException with the new BadEncodingException and fix the UnsupportedCommandException base type. Clarify that non-lossy buffering is bounded by buffer capacity and can still drop events under host memory exhaustion or during shutdown, and correct the DOTNET_EventPipeBufferingMode invalid-value and streaming-session behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix punctuation in dotnet-gcdump non-lossy buffering note * Apply suggestions from code review Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com> * Remove preview wording from dotnet-trace collect-linux * Address EventPipe documentation feedback Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a5765868-3160-4052-b7cd-86df02acb53b * Document minimum dotnet-trace buffering-mode version Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dc30df3c-40b5-4458-bc84-fa38be1abff6 * Clarify block mode and dotnet-gcdump details Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dc30df3c-40b5-4458-bc84-fa38be1abff6 --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com> Copilot-Session: a5765868-3160-4052-b7cd-86df02acb53b Copilot-Session: dc30df3c-40b5-4458-bc84-fa38be1abff6 --- docs/core/diagnostics/dotnet-gcdump.md | 5 +- docs/core/diagnostics/dotnet-trace.md | 28 ++-- docs/core/diagnostics/eventpipe.md | 7 +- .../microsoft-diagnostics-netcore-client.md | 126 ++++++++++++++++-- 4 files changed, 137 insertions(+), 29 deletions(-) diff --git a/docs/core/diagnostics/dotnet-gcdump.md b/docs/core/diagnostics/dotnet-gcdump.md index 1cdf928238476..0d85d602db932 100644 --- a/docs/core/diagnostics/dotnet-gcdump.md +++ b/docs/core/diagnostics/dotnet-gcdump.md @@ -1,8 +1,9 @@ --- title: dotnet-gcdump diagnostic tool - .NET CLI description: Learn how to install and use dotnet-gcdump CLI tool to collect GC (Garbage Collector) dumps of live .NET processes using the .NET EventPipe. -ms.date: 06/03/2025 +ms.date: 08/24/2026 ms.topic: reference +ai-usage: ai-assisted --- # Heap analysis tool (dotnet-gcdump) @@ -253,7 +254,7 @@ dotnet-gcdump report [-h|--help] [-p|--process-id ] [-t|--report-type ] [--buffersize ] [--clreventlevel ] [--clrevents ] @@ -108,6 +110,15 @@ dotnet-trace collect ### Options +- **`--buffering-mode `** + + Available in `dotnet-trace` version 10.0.750501 and later. + + Sets how the runtime buffers events. Accepts `Drop` or `Block` (case-insensitive), and defaults to `Drop`. + + - `Drop` (default): Events are dropped when the buffer overflows. + - `Block`: Threads emitting events wait until there is room in the buffer to store them. Events may still be dropped under uncommon error conditions such as memory exhaustion. `Block` requires a .NET 11+ target runtime and can make the traced application slower because event-emitting threads pause while the buffer stays full. + - **`--buffersize `** Sets the size of the in-memory buffer, in megabytes. Default 256 MB. @@ -290,9 +301,6 @@ dotnet-trace collect ## dotnet-trace collect-linux -> [!NOTE] -> The `collect-linux` verb is a new preview feature and relies on an updated version of the .nettrace file format. The latest PerfView release supports these trace files, but other ways of using the trace file, such as [`convert`](#dotnet-trace-convert) and [`report`](#dotnet-trace-report), might not work yet. - Collects diagnostic traces using perf_events, a Linux OS technology. `collect-linux` enables the following additional features over [`collect`](#dotnet-trace-collect). | Feature | `collect` | `collect-linux` | @@ -731,12 +739,6 @@ This example captures CPU samples for all processes on the machine. Any processe ```output $ sudo dotnet-trace collect-linux - ========================================================================================== - The collect-linux verb is a new preview feature and relies on an updated version of the - .nettrace file format. The latest PerfView release supports these trace files but other - ways of using the trace file may not work yet. For more details, see the docs at - https://learn.microsoft.com/dotnet/core/diagnostics/dotnet-trace. - ========================================================================================== No providers, profiles, ClrEvents, or PerfEvents were specified, defaulting to trace profiles 'dotnet-common' + 'cpu-sampling'. Provider Name Keywords Level Enabled By @@ -760,12 +762,6 @@ For environments with multiple .NET versions installed, running `collect-linux` ```output $ dotnet-trace collect-linux --probe - ========================================================================================== - The collect-linux verb is a new preview feature and relies on an updated version of the - .nettrace file format. The latest PerfView release supports these trace files but other - ways of using the trace file may not work yet. For more details, see the docs at - https://learn.microsoft.com/dotnet/core/diagnostics/dotnet-trace. - ========================================================================================== Probing .NET processes for support of the EventPipe UserEvents IPC command used by collect-linux. Requires runtime '10.0.0' or later. .NET processes that support the command: 3802935 MyApp diff --git a/docs/core/diagnostics/eventpipe.md b/docs/core/diagnostics/eventpipe.md index 2018a61f87740..90a1c9cb209a6 100644 --- a/docs/core/diagnostics/eventpipe.md +++ b/docs/core/diagnostics/eventpipe.md @@ -3,6 +3,7 @@ title: EventPipe Overview description: Learn about EventPipe and how to use it for tracing your .NET applications to diagnose performance issues. ms.date: 10/12/2026 ms.topic: overview +ai-usage: ai-assisted --- # EventPipe @@ -80,7 +81,11 @@ However, you can use the following environment variables to set up an EventPipe * `DOTNET_EventPipeCircularMB`: A hexadecimal value that represents the size of EventPipe's internal buffer in megabytes. This configuration value is only used when EventPipe is configured to run via `DOTNET_EnableEventPipe`. The default buffer size is 1024MB which translates to this environment variable being set to `400`, since `0x400` == `1024`. > [!NOTE] - > If the target process writes events too frequently, it can overflow this buffer and some events might be dropped. If too many events are getting dropped, increase the buffer size to see if the number of dropped events reduces. If the number of dropped events does not decrease with a larger buffer size, it may be due to a slow reader preventing the target process' buffers from being flushed. + > If the target process writes events too frequently, it can overflow this buffer, and some events might be dropped. If the runtime drops too many events, set `DOTNET_EventPipeBufferingMode=1` with `DOTNET_EventPipeOutputStreaming=1` or increase the buffer size to see if the number of dropped events decreases. If the number of dropped events does not decrease with a larger buffer size, a slow reader might prevent the target process's buffers from being flushed. + +* `DOTNET_EventPipeBufferingMode`: Available in .NET 11 and later. This setting controls how the startup EventPipe session handles recording an event when the in-memory buffer is full. Set it to `0` (default) to drop events that would overflow the buffer, or `1` to pause event-writing threads until buffer space becomes available. `1` requires a streaming session (see `DOTNET_EventPipeOutputStreaming`). + +* `DOTNET_EventPipeOutputStreaming`: Set this to `1` to stream the startup EventPipe session's events to disk as quickly as possible after they occur. By default, events are stored in memory and not written to disk until the application is exiting. A streaming session is required for `DOTNET_EventPipeBufferingMode=1` to take effect. * `DOTNET_EventPipeProcNumbers`: Set this to `1` to enable capturing processor numbers in EventPipe event headers. The default value is `0`. diff --git a/docs/core/diagnostics/microsoft-diagnostics-netcore-client.md b/docs/core/diagnostics/microsoft-diagnostics-netcore-client.md index 01c03a8f71f60..4e47836ccd378 100644 --- a/docs/core/diagnostics/microsoft-diagnostics-netcore-client.md +++ b/docs/core/diagnostics/microsoft-diagnostics-netcore-client.md @@ -1,10 +1,11 @@ --- title: Microsoft.Diagnostics.NETCore.Client API description: In this article, you'll learn about the Microsoft.Diagnostics.NETCore.Client APIs. -ms.date: 12/08/2025 +ms.date: 08/24/2026 author: tommcdon ms.author: tommcdon ms.topic: reference +ai-usage: ai-assisted --- # Microsoft.Diagnostics.NETCore.Client API @@ -343,6 +344,13 @@ public sealed class EventPipeSessionConfiguration long rundownKeyword, bool requestStackwalk = true); + public EventPipeSessionConfiguration( + IEnumerable providers, + int circularBufferSizeMB, + long rundownKeyword, + bool requestStackwalk, + EventPipeBufferingMode bufferingMode); + public bool RequestRundown { get; } public int CircularBufferSizeInMB { get; } @@ -351,6 +359,8 @@ public sealed class EventPipeSessionConfiguration public long RundownKeyword { get; } + public EventPipeBufferingMode BufferingMode { get; } + public IReadOnlyCollection Providers { get; } } ``` @@ -362,6 +372,9 @@ Represents the configuration for an `EventPipeSession`. * `requestRundown` : If `true`, request rundown events from the runtime. * `requestStackwalk` : If `true`, record a stack trace for every emitted event. * `rundownKeyword` : The keyword mask used for rundown events. +* `bufferingMode` : The [`EventPipeBufferingMode`](#eventpipebufferingmode-enum) for the session. Use `Block` to request non-lossy collection. Passing `Block` requires a .NET 11+ target runtime; on an older runtime, `StartEventPipeSession` throws [`UnsupportedCommandException`](#unsupportedcommandexception). + +The `BufferingMode` property returns the buffering mode for the session. The default value, `Drop`, keeps the runtime's lossy buffer. ## EventPipeProvider class @@ -374,6 +387,13 @@ public class EventPipeProvider long keywords = 0, IDictionary arguments = null) + public EventPipeProvider( + string name, + EventLevel eventLevel, + long keywords, + IDictionary arguments, + EventPipeProviderEventFilter eventFilter) + public string Name { get; } public EventLevel EventLevel { get; } @@ -382,6 +402,8 @@ public class EventPipeProvider public IDictionary Arguments { get; } + public EventPipeProviderEventFilter EventFilter { get; } + public override string ToString(); public override bool Equals(object obj); @@ -402,9 +424,16 @@ public EventPipeProvider( EventLevel eventLevel, long keywords = 0, IDictionary arguments = null) + +public EventPipeProvider( + string name, + EventLevel eventLevel, + long keywords, + IDictionary arguments, + EventPipeProviderEventFilter eventFilter) ``` -Creates a new instance of `EventPipeProvider` with the given provider name, , keywords, and arguments. +Creates a new instance of `EventPipeProvider` with the given provider name, , keywords, and arguments. The second overload also takes an [`EventPipeProviderEventFilter`](#eventpipeprovidereventfilter-class) that filters which Event IDs the runtime enables for the provider. When you set an event filter, the session requires a .NET 10+ target runtime. ### Name property @@ -438,10 +467,64 @@ public IDictionary Arguments { get; } Gets an `IDictionary` of key-value pair strings representing optional arguments to be passed to `EventSource` representing the given `EventPipeProvider`. +### EventFilter property + +```csharp +public EventPipeProviderEventFilter EventFilter { get; } +``` + +Gets the optional [`EventPipeProviderEventFilter`](#eventpipeprovidereventfilter-class) that the runtime applies to this provider's Event IDs after the keyword and level filter. When the value is `null`, the runtime enables every Event ID that the keyword and level filter allows. + ### Remarks This class is immutable, because EventPipe does not allow a provider's configuration to be modified during an EventPipe session as of .NET Core 3.1. +## EventPipeProviderEventFilter class + +```csharp +public sealed class EventPipeProviderEventFilter +{ + public EventPipeProviderEventFilter( + bool enable, + IReadOnlyList eventIds); + + public bool Enable { get; } + + public IReadOnlyList EventIds { get; } +} +``` + +Represents an optional per-provider filter on Event IDs. The runtime applies the filter after the keyword and level filter of the associated [`EventPipeProvider`](#eventpipeprovider-class). Event filters require a .NET 10+ target runtime. + +### Constructor + +```csharp +public EventPipeProviderEventFilter( + bool enable, + IReadOnlyList eventIds); +``` + +Creates a new instance of `EventPipeProviderEventFilter`. + +* `enable` : If `true`, `eventIds` is an allow-list and the runtime enables only those Event IDs. If `false`, `eventIds` is a deny-list and the runtime enables every Event ID except those listed. An empty deny-list therefore enables all events. +* `eventIds` : The Event IDs to enable or disable, as determined by `enable`. + +### Enable property + +```csharp +public bool Enable { get; } +``` + +Gets a value that indicates whether [`EventIds`](#eventids-property) is an allow-list (`true`) or a deny-list (`false`). + +### EventIds property + +```csharp +public IReadOnlyList EventIds { get; } +``` + +Gets the list of Event IDs that the filter enables or disables. + ## EventPipeSession class ```csharp @@ -576,22 +659,29 @@ Represents the type of perf map behavior that can be enabled. * `JitDump` : Enable JIT dump perf map output. * `PerfMap` : Enable traditional perf map output. -## Exceptions - -Exceptions that are thrown from the library are of type `DiagnosticsClientException` or a derived type. +## EventPipeBufferingMode enum ```csharp -public class DiagnosticsClientException : Exception +public enum EventPipeBufferingMode +{ + Drop = 0, + Block = 1 +} ``` -### UnsupportedCommandException +Controls how the runtime's per-session event buffer behaves when it fills faster than the session drains it. + +* `Drop` : The runtime default. The session uses a buffer that drops events when it overflows, so collection is lossy. +* `Block` : Non-lossy collection. The runtime blocks event producers when the buffer is full instead of dropping events. Use it for collections that must be complete, such as a heap snapshot on a large heap. `Block` is non-lossy only up to the buffer's capacity, not against host memory exhaustion: if the runtime can't allocate the memory it needs to reserve buffer space, or during session shutdown, it drops the event instead of blocking. `Block` requires a .NET 11+ target runtime; on an older runtime, starting the session throws [`UnsupportedCommandException`](#unsupportedcommandexception). + +## Exceptions + +Exceptions that are thrown from the library are of type `DiagnosticsClientException` or a derived type. ```csharp -public class UnsupportedCommandException : DiagnosticsClientException +public class DiagnosticsClientException : Exception ``` -This may be thrown when the command is not supported by either the library or the target process's runtime. - ### UnsupportedProtocolException ```csharp @@ -616,6 +706,14 @@ public class ServerErrorException : DiagnosticsClientException This may be thrown when the runtime responds with an error to a given command. +### UnsupportedCommandException + +```csharp +public class UnsupportedCommandException : ServerErrorException +``` + +This exception is thrown when the command is not supported by either the library or the target process's runtime. + ### ProfilerAlreadyActiveException ```csharp @@ -623,3 +721,11 @@ public class ProfilerAlreadyActiveException : ServerErrorException ``` This exception is thrown when a profiler is already loaded into the target runtime and another attach is attempted. + +### BadEncodingException + +```csharp +public class BadEncodingException : ServerErrorException +``` + +This exception is thrown when the target runtime can't decode the command payload and rejects it. From a well-formed client, it usually means the runtime is too old to understand a newer configured option value, so it rejects the request while parsing. From 8d19c1df9f9ac62a68b8f1f7133f97530e1ff39d Mon Sep 17 00:00:00 2001 From: Adarsh Ramakrishna <69494124+adarsh6980@users.noreply.github.com> Date: Mon, 19 Oct 2026 15:23:31 +0100 Subject: [PATCH 24/41] Update struct field-initializer rule for C# 11 in using-constructors.md (#56425) Updated the explanation of struct constructors to reflect changes in C# 11 regarding field initializers and parameterless constructors. --- .../programming-guide/classes-and-structs/using-constructors.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/csharp/programming-guide/classes-and-structs/using-constructors.md b/docs/csharp/programming-guide/classes-and-structs/using-constructors.md index 917c90ff49b4f..6459e8f77ddf1 100644 --- a/docs/csharp/programming-guide/classes-and-structs/using-constructors.md +++ b/docs/csharp/programming-guide/classes-and-structs/using-constructors.md @@ -23,7 +23,7 @@ You can prevent a class from being instantiated by making the constructor privat For more information, see [Private Constructors](./private-constructors.md). -Constructors for [struct](../../language-reference/builtin-types/struct.md) types resemble class constructors. When a struct type is instantiated with `new`, the runtime invokes a constructor. When a `struct` is set to its `default` value, the runtime initializes all memory in the struct to 0. If you declare any field initializers in a `struct` type, you must supply a parameterless constructor. For more information, see the [Struct initialization and default values](../../language-reference/builtin-types/struct.md#struct-initialization-and-default-values) section of the [Structure types](../../language-reference/builtin-types/struct.md) article. +Constructors for [struct](../../language-reference/builtin-types/struct.md) types resemble class constructors. When a struct type is instantiated with `new`, the runtime invokes a constructor. When a `struct` is set to its `default` value, the runtime initializes all memory in the struct to 0. Beginning with C# 11, field initializers in a `struct` type run in any declared constructor, and the compiler initializes any fields that the constructor doesn't assign, so you don't need to declare a parameterless constructor. For more information, see the [Struct initialization and default values](../../language-reference/builtin-types/struct.md#struct-initialization-and-default-values) section of the [Structure types](../../language-reference/builtin-types/struct.md) article. The following code uses the parameterless constructor for , so that you're assured that the integer is initialized: From 8a0acda8db8d6971922b471f0bd39f773af1e815 Mon Sep 17 00:00:00 2001 From: "azure-sdk-automation[bot]" <191533747+azure-sdk-automation[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 10:48:50 -0400 Subject: [PATCH 25/41] Update package index with latest published versions (#56409) Co-authored-by: azure-sdk --- docs/azure/includes/dotnet-all.md | 41 ++++++++++++++++--------------- docs/azure/includes/dotnet-new.md | 27 ++++++++++---------- 2 files changed, 35 insertions(+), 33 deletions(-) diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md index 447b5d19681ed..881de691c433f 100644 --- a/docs/azure/includes/dotnet-all.md +++ b/docs/azure/includes/dotnet-all.md @@ -3,14 +3,14 @@ | Agent Server Optimization | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.AI.AgentServer.Optimization/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Optimization-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Optimization_1.0.0-beta.1/sdk/agentserver/Azure.AI.AgentServer.Optimization/) | | AI Agent Server - Agent Framework | NuGet [1.0.0-beta.11](https://www.nuget.org/packages/Azure.AI.AgentServer.AgentFramework/1.0.0-beta.11) | [docs](/dotnet/api/overview/azure/AI.AgentServer.AgentFramework-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.11](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.AgentFramework_1.0.0-beta.11/sdk/agentserver/Azure.AI.AgentServer.AgentFramework/) | | AI Agent Server - Contracts | NuGet [1.0.0-beta.11](https://www.nuget.org/packages/Azure.AI.AgentServer.Contracts/1.0.0-beta.11) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Contracts-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.11](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Contracts_1.0.0-beta.11/sdk/agentserver/Azure.AI.AgentServer.Contracts/) | -| AI Agent Server - Core | NuGet [1.0.0-beta.29](https://www.nuget.org/packages/Azure.AI.AgentServer.Core/1.0.0-beta.29) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Core-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.29](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Core_1.0.0-beta.29/sdk/agentserver/Azure.AI.AgentServer.Core/) | +| AI Agent Server - Core | NuGet [1.0.0-beta.30](https://www.nuget.org/packages/Azure.AI.AgentServer.Core/1.0.0-beta.30) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Core-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.30](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Core_1.0.0-beta.30/sdk/agentserver/Azure.AI.AgentServer.Core/) | | AI Agent Server - Invocations | NuGet [1.0.0-beta.7](https://www.nuget.org/packages/Azure.AI.AgentServer.Invocations/1.0.0-beta.7) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Invocations-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.7](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Invocations_1.0.0-beta.7/sdk/agentserver/Azure.AI.AgentServer.Invocations/) | -| AI Agent Server - Responses | NuGet [1.0.0-beta.8](https://www.nuget.org/packages/Azure.AI.AgentServer.Responses/1.0.0-beta.8) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Responses-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.8](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Responses_1.0.0-beta.8/sdk/agentserver/Azure.AI.AgentServer.Responses/) | +| AI Agent Server - Responses | NuGet [1.0.0-beta.9](https://www.nuget.org/packages/Azure.AI.AgentServer.Responses/1.0.0-beta.9) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Responses-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.9](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Responses_1.0.0-beta.9/sdk/agentserver/Azure.AI.AgentServer.Responses/) | | AI Agents Persistent | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.Agents.Persistent/1.1.0)
NuGet [1.2.0-beta.10](https://www.nuget.org/packages/Azure.AI.Agents.Persistent/1.2.0-beta.10) | [docs](/dotnet/api/overview/azure/AI.Agents.Persistent-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Agents.Persistent_1.1.0/sdk/ai/Azure.AI.Agents.Persistent/)
GitHub [1.2.0-beta.10](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Agents.Persistent_1.2.0-beta.10/sdk/ai/Azure.AI.Agents.Persistent/) | -| AI Extensions - OpenAI | NuGet [2.0.0](https://www.nuget.org/packages/Azure.AI.Extensions.OpenAI/2.0.0)
NuGet [3.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.Extensions.OpenAI/3.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.Extensions.OpenAI-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Extensions.OpenAI_2.0.0/sdk/ai/Azure.AI.Extensions.OpenAI/)
GitHub [3.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Extensions.OpenAI_3.0.0-beta.4/sdk/ai/Azure.AI.Extensions.OpenAI/) | -| AI Foundry | NuGet [2.0.1](https://www.nuget.org/packages/Azure.AI.Projects/2.0.1)
NuGet [3.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.Projects/3.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.Projects-readme) | GitHub [2.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects_2.0.1/sdk/ai/Azure.AI.Projects/)
GitHub [3.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects_3.0.0-beta.4/sdk/ai/Azure.AI.Projects/) | +| AI Extensions - OpenAI | NuGet [2.0.0](https://www.nuget.org/packages/Azure.AI.Extensions.OpenAI/2.0.0)
NuGet [3.0.0-beta.5](https://www.nuget.org/packages/Azure.AI.Extensions.OpenAI/3.0.0-beta.5) | [docs](/dotnet/api/overview/azure/AI.Extensions.OpenAI-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Extensions.OpenAI_2.0.0/sdk/ai/Azure.AI.Extensions.OpenAI/)
GitHub [3.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Extensions.OpenAI_3.0.0-beta.5/sdk/ai/Azure.AI.Extensions.OpenAI/) | +| AI Foundry | NuGet [2.0.1](https://www.nuget.org/packages/Azure.AI.Projects/2.0.1)
NuGet [3.0.0-beta.5](https://www.nuget.org/packages/Azure.AI.Projects/3.0.0-beta.5) | [docs](/dotnet/api/overview/azure/AI.Projects-readme) | GitHub [2.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects_2.0.1/sdk/ai/Azure.AI.Projects/)
GitHub [3.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects_3.0.0-beta.5/sdk/ai/Azure.AI.Projects/) | | AI Model Inference | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.AI.Inference/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/AI.Inference-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Inference_1.0.0-beta.5/sdk/ai/Azure.AI.Inference/) | -| AI Projects - Agents | NuGet [2.0.0](https://www.nuget.org/packages/Azure.AI.Projects.Agents/2.0.0)
NuGet [3.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.Projects.Agents/3.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.Projects.Agents-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects.Agents_2.0.0/sdk/ai/Azure.AI.Projects.Agents/)
GitHub [3.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects.Agents_3.0.0-beta.4/sdk/ai/Azure.AI.Projects.Agents/) | +| AI Projects - Agents | NuGet [2.0.0](https://www.nuget.org/packages/Azure.AI.Projects.Agents/2.0.0)
NuGet [3.0.0-beta.5](https://www.nuget.org/packages/Azure.AI.Projects.Agents/3.0.0-beta.5) | [docs](/dotnet/api/overview/azure/AI.Projects.Agents-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects.Agents_2.0.0/sdk/ai/Azure.AI.Projects.Agents/)
GitHub [3.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects.Agents_3.0.0-beta.5/sdk/ai/Azure.AI.Projects.Agents/) | | AI Projects - OpenAI | NuGet [2.0.0-beta.1](https://www.nuget.org/packages/Azure.AI.Projects.OpenAI/2.0.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.Projects.OpenAI-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [2.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects.OpenAI_2.0.0-beta.1/sdk/ai/Azure.AI.Projects.OpenAI/) | | Anomaly Detector | NuGet [3.0.0-preview.7](https://www.nuget.org/packages/Azure.AI.AnomalyDetector/3.0.0-preview.7) | [docs](/dotnet/api/overview/azure/AI.AnomalyDetector-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [3.0.0-preview.7](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AnomalyDetector_3.0.0-preview.7/sdk/anomalydetector/Azure.AI.AnomalyDetector/) | | App Configuration | NuGet [1.11.1](https://www.nuget.org/packages/Azure.Data.AppConfiguration/1.11.1)
NuGet [1.12.0-beta.1](https://www.nuget.org/packages/Azure.Data.AppConfiguration/1.12.0-beta.1) | [docs](/dotnet/api/overview/azure/Data.AppConfiguration-readme) | GitHub [1.11.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Data.AppConfiguration_1.11.1/sdk/appconfiguration/Azure.Data.AppConfiguration/)
GitHub [1.12.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Data.AppConfiguration_1.12.0-beta.1/sdk/appconfiguration/Azure.Data.AppConfiguration/) | @@ -30,8 +30,8 @@ | Communication Rooms | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Communication.Rooms/1.2.0) | [docs](/dotnet/api/overview/azure/Communication.Rooms-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Rooms_1.2.0/sdk/communication/Azure.Communication.Rooms/) | | Communication SMS | NuGet [1.0.2](https://www.nuget.org/packages/Azure.Communication.Sms/1.0.2)
NuGet [1.1.0-beta.3](https://www.nuget.org/packages/Azure.Communication.Sms/1.1.0-beta.3) | [docs](/dotnet/api/overview/azure/Communication.Sms-readme) | GitHub [1.0.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Sms_1.0.2/sdk/communication/Azure.Communication.Sms/)
GitHub [1.1.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Sms_1.1.0-beta.3/sdk/communication/Azure.Communication.Sms/) | | Compute Batch | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Compute.Batch/1.0.0) | [docs](/dotnet/api/overview/azure/Compute.Batch-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Compute.Batch_1.0.0/sdk/batch/Azure.Compute.Batch/) | -| Confidential Ledger | NuGet [1.3.0](https://www.nuget.org/packages/Azure.Security.ConfidentialLedger/1.3.0)
NuGet [2.0.0-beta.5](https://www.nuget.org/packages/Azure.Security.ConfidentialLedger/2.0.0-beta.5) | [docs](/dotnet/api/overview/azure/Security.ConfidentialLedger-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.ConfidentialLedger_1.3.0/sdk/confidentialledger/Azure.Security.ConfidentialLedger/)
GitHub [2.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.ConfidentialLedger_2.0.0-beta.5/sdk/confidentialledger/Azure.Security.ConfidentialLedger/) | -| Container Registry | NuGet [1.3.0](https://www.nuget.org/packages/Azure.Containers.ContainerRegistry/1.3.0) | [docs](/dotnet/api/overview/azure/Containers.ContainerRegistry-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Containers.ContainerRegistry_1.3.0/sdk/containerregistry/Azure.Containers.ContainerRegistry/) | +| Confidential Ledger | NuGet [1.3.0](https://www.nuget.org/packages/Azure.Security.ConfidentialLedger/1.3.0)
NuGet [2.0.0-beta.6](https://www.nuget.org/packages/Azure.Security.ConfidentialLedger/2.0.0-beta.6) | [docs](/dotnet/api/overview/azure/Security.ConfidentialLedger-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.ConfidentialLedger_1.3.0/sdk/confidentialledger/Azure.Security.ConfidentialLedger/)
GitHub [2.0.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.ConfidentialLedger_2.0.0-beta.6/sdk/confidentialledger/Azure.Security.ConfidentialLedger/) | +| Container Registry | NuGet [1.4.0](https://www.nuget.org/packages/Azure.Containers.ContainerRegistry/1.4.0) | [docs](/dotnet/api/overview/azure/Containers.ContainerRegistry-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Containers.ContainerRegistry_1.4.0/sdk/containerregistry/Azure.Containers.ContainerRegistry/) | | Content Safety | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.ContentSafety/1.0.0)
NuGet [1.1.0-beta.1](https://www.nuget.org/packages/Azure.AI.ContentSafety/1.1.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.ContentSafety-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.ContentSafety_1.0.0/sdk/contentsafety/Azure.AI.ContentSafety/)
GitHub [1.1.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.ContentSafety_1.1.0-beta.1/sdk/contentsafety/Azure.AI.ContentSafety/) | | Content Understanding | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.ContentUnderstanding/1.1.0)
NuGet [1.2.0-beta.3](https://www.nuget.org/packages/Azure.AI.ContentUnderstanding/1.2.0-beta.3) | [docs](/dotnet/api/overview/azure/AI.ContentUnderstanding-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.ContentUnderstanding_1.1.0/sdk/contentunderstanding/Azure.AI.ContentUnderstanding/)
GitHub [1.2.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.ContentUnderstanding_1.2.0-beta.3/sdk/contentunderstanding/Azure.AI.ContentUnderstanding/) | | Conversational Language Understanding | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.Language.Conversations/1.1.0)
NuGet [2.0.0-beta.5](https://www.nuget.org/packages/Azure.AI.Language.Conversations/2.0.0-beta.5) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_1.1.0/sdk/cognitivelanguage/Azure.AI.Language.Conversations/)
GitHub [2.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_2.0.0-beta.5/sdk/cognitivelanguage/Azure.AI.Language.Conversations/) | @@ -167,7 +167,7 @@ | Provisioning - Container Apps | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Provisioning.AppContainers/1.2.0)
NuGet [1.3.0-beta.2](https://www.nuget.org/packages/Azure.Provisioning.AppContainers/1.3.0-beta.2) | [docs](/dotnet/api/overview/azure/Provisioning.AppContainers-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AppContainers_1.2.0/sdk/containerapps/Azure.Provisioning.AppContainers/)
GitHub [1.3.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AppContainers_1.3.0-beta.2/sdk/containerapps/Azure.Provisioning.AppContainers/) | | Provisioning - Container Instances | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.ContainerInstance/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.ContainerInstance-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ContainerInstance_1.0.0-beta.1/sdk/containerinstance/Azure.Provisioning.ContainerInstance/) | | Provisioning - Container Registry | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Provisioning.ContainerRegistry/1.1.0) | [docs](/dotnet/api/overview/azure/Provisioning.ContainerRegistry-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ContainerRegistry_1.1.0/sdk/provisioning/Azure.Provisioning.ContainerRegistry/) | -| Provisioning - Container Service | NuGet [1.0.0-beta.6](https://www.nuget.org/packages/Azure.Provisioning.ContainerService/1.0.0-beta.6) | [docs](/dotnet/api/overview/azure/Provisioning.ContainerService-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ContainerService_1.0.0-beta.6/sdk/containerservice/Azure.Provisioning.ContainerService/) | +| Provisioning - Container Service | NuGet [1.0.0-beta.7](https://www.nuget.org/packages/Azure.Provisioning.ContainerService/1.0.0-beta.7) | [docs](/dotnet/api/overview/azure/Provisioning.ContainerService-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.7](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ContainerService_1.0.0-beta.7/sdk/containerservice/Azure.Provisioning.ContainerService/) | | Provisioning - Content Delivery Network | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.Provisioning.Cdn/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/Provisioning.Cdn-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Cdn_1.0.0-beta.4/sdk/cdn/Azure.Provisioning.Cdn/) | | Provisioning - Cosmos DB | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Provisioning.CosmosDB/1.0.0)
NuGet [1.1.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.CosmosDB/1.1.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.CosmosDB-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.CosmosDB_1.0.0/sdk/provisioning/Azure.Provisioning.CosmosDB/)
GitHub [1.1.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.CosmosDB_1.1.0-beta.1/sdk/provisioning/Azure.Provisioning.CosmosDB/) | | Provisioning - Cost Management | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.CostManagement/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.CostManagement-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.CostManagement_1.0.0-beta.1/sdk/costmanagement/Azure.Provisioning.CostManagement/) | @@ -213,7 +213,7 @@ | Provisioning - SignalR | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Provisioning.SignalR/1.1.0)
NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.SignalR/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.SignalR-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.SignalR_1.1.0/sdk/signalr/Azure.Provisioning.SignalR/)
GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.SignalR_1.2.0-beta.1/sdk/signalr/Azure.Provisioning.SignalR/) | | Provisioning - SQL | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Provisioning.Sql/1.1.0)
NuGet [1.2.0-beta.3](https://www.nuget.org/packages/Azure.Provisioning.Sql/1.2.0-beta.3) | [docs](/dotnet/api/overview/azure/Provisioning.Sql-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Sql_1.1.0/sdk/sqlmanagement/Azure.Provisioning.Sql/)
GitHub [1.2.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Sql_1.2.0-beta.3/sdk/sqlmanagement/Azure.Provisioning.Sql/) | | Provisioning - Standby Pool | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.StandbyPool/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.StandbyPool-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.StandbyPool_1.0.0-beta.1/sdk/standbypool/Azure.Provisioning.StandbyPool/) | -| Provisioning - Storage | NuGet [1.1.2](https://www.nuget.org/packages/Azure.Provisioning.Storage/1.1.2)
NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.Provisioning.Storage/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/Provisioning.Storage-readme) | GitHub [1.1.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Storage_1.1.2/sdk/provisioning/Azure.Provisioning.Storage/)
GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Storage_1.2.0-beta.2/sdk/provisioning/Azure.Provisioning.Storage/) | +| Provisioning - Storage | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Provisioning.Storage/1.2.0) | [docs](/dotnet/api/overview/azure/Provisioning.Storage-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Storage_1.2.0/sdk/provisioning/Azure.Provisioning.Storage/) | | Provisioning - Subscription | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.Subscription/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.Subscription-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Subscription_1.0.0-beta.1/sdk/subscription/Azure.Provisioning.Subscription/) | | Provisioning - Traffic Manager | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.TrafficManager/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.TrafficManager-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.TrafficManager_1.0.0-beta.1/sdk/trafficmanager/Azure.Provisioning.TrafficManager/) | | Provisioning - Web PubSub | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Provisioning.WebPubSub/1.1.0) | [docs](/dotnet/api/overview/azure/Provisioning.WebPubSub-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.WebPubSub_1.1.0/sdk/provisioning/Azure.Provisioning.WebPubSub/) | @@ -247,7 +247,7 @@ | Resource Management - Carbon Optimization | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.CarbonOptimization/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.CarbonOptimization-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CarbonOptimization_1.0.1/sdk/carbon/Azure.ResourceManager.CarbonOptimization/) | | Resource Management - Certificate Registration | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.CertificateRegistration/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.CertificateRegistration-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CertificateRegistration_1.0.0/sdk/certificateregistration/Azure.ResourceManager.CertificateRegistration/) | | Resource Management - Chaos | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Chaos/1.1.1)
NuGet [1.2.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.Chaos/1.2.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.Chaos-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Chaos_1.1.1/sdk/chaos/Azure.ResourceManager.Chaos/)
GitHub [1.2.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Chaos_1.2.0-beta.3/sdk/chaos/Azure.ResourceManager.Chaos/) | -| Resource Management - Cloud Health | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.CloudHealth/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.CloudHealth-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CloudHealth_1.0.0-beta.5/sdk/cloudhealth/Azure.ResourceManager.CloudHealth/) | +| Resource Management - Cloud Health | NuGet [1.0.0-beta.6](https://www.nuget.org/packages/Azure.ResourceManager.CloudHealth/1.0.0-beta.6) | [docs](/dotnet/api/overview/azure/ResourceManager.CloudHealth-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.CloudHealth_1.0.0-beta.6/sdk/cloudhealth/Azure.ResourceManager.CloudHealth/) | | Resource Management - Cognitive Services | NuGet [1.6.0](https://www.nuget.org/packages/Azure.ResourceManager.CognitiveServices/1.6.0) | [docs](/dotnet/api/overview/azure/ResourceManager.CognitiveServices-readme) | GitHub [1.6.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CognitiveServices_1.6.0/sdk/cognitiveservices/Azure.ResourceManager.CognitiveServices/) | | Resource Management - Communication | NuGet [1.3.1](https://www.nuget.org/packages/Azure.ResourceManager.Communication/1.3.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Communication-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Communication_1.3.1/sdk/communication/Azure.ResourceManager.Communication/) | | Resource Management - Commvaultcontentstore | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.CommvaultContentStore/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.CommvaultContentStore-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CommvaultContentStore_1.0.0-beta.1/sdk/commvaultcontentstore/Azure.ResourceManager.CommvaultContentStore/) | @@ -312,7 +312,7 @@ | Resource Management - Edge Order | NuGet [1.1.2](https://www.nuget.org/packages/Azure.ResourceManager.EdgeOrder/1.1.2) | [docs](/dotnet/api/overview/azure/ResourceManager.EdgeOrder-readme) | GitHub [1.1.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EdgeOrder_1.1.2/sdk/edgeorder/Azure.ResourceManager.EdgeOrder/) | | Resource Management - Edge Zones | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.EdgeZones/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.EdgeZones-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EdgeZones_1.0.0/sdk/edgezones/Azure.ResourceManager.EdgeZones/) | | Resource Management - Elastic | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Elastic/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Elastic-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Elastic_1.1.1/sdk/elastic/Azure.ResourceManager.Elastic/) | -| Resource Management - Elastic SAN | NuGet [1.2.1](https://www.nuget.org/packages/Azure.ResourceManager.ElasticSan/1.2.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ElasticSan-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ElasticSan_1.2.1/sdk/elasticsan/Azure.ResourceManager.ElasticSan/) | +| Resource Management - Elastic SAN | NuGet [1.2.1](https://www.nuget.org/packages/Azure.ResourceManager.ElasticSan/1.2.1)
NuGet [1.3.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ElasticSan/1.3.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ElasticSan-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ElasticSan_1.2.1/sdk/elasticsan/Azure.ResourceManager.ElasticSan/)
GitHub [1.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ElasticSan_1.3.0-beta.1/sdk/elasticsan/Azure.ResourceManager.ElasticSan/) | | Resource Management - Enclave | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.Enclave/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Enclave-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Enclave_1.0.0/sdk/enclave/Azure.ResourceManager.Enclave/) | | Resource Management - Energy Services | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.ResourceManager.EnergyServices/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/ResourceManager.EnergyServices-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.EnergyServices_1.0.0-beta.4/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.3](https://www.nuget.org/packages/Azure.ResourceManager.EventGrid/1.2.0-beta.3) | [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.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EventGrid_1.2.0-beta.3/sdk/eventgrid/Azure.ResourceManager.EventGrid/) | @@ -342,7 +342,7 @@ | Resource Management - IoT Firmware Defense | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.IotFirmwareDefense/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.IotFirmwareDefense-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.IotFirmwareDefense_1.1.1/sdk/iot/Azure.ResourceManager.IotFirmwareDefense/) | | Resource Management - IoT Hub | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.IotHub/1.1.1)
NuGet [1.2.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.IotHub/1.2.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.IotHub-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.IotHub_1.1.1/sdk/iothub/Azure.ResourceManager.IotHub/)
GitHub [1.2.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.IotHub_1.2.0-beta.5/sdk/iothub/Azure.ResourceManager.IotHub/) | | Resource Management - IoT Operations | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.IotOperations/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.IotOperations-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.IotOperations_1.2.0/sdk/iotoperations/Azure.ResourceManager.IotOperations/) | -| Resource Management - Key Vault | NuGet [1.4.0](https://www.nuget.org/packages/Azure.ResourceManager.KeyVault/1.4.0) | [docs](/dotnet/api/overview/azure/ResourceManager.KeyVault-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.KeyVault_1.4.0/sdk/keyvault/Azure.ResourceManager.KeyVault/) | +| Resource Management - Key Vault | NuGet [1.5.0](https://www.nuget.org/packages/Azure.ResourceManager.KeyVault/1.5.0) | [docs](/dotnet/api/overview/azure/ResourceManager.KeyVault-readme) | GitHub [1.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.KeyVault_1.5.0/sdk/keyvault/Azure.ResourceManager.KeyVault/) | | Resource Management - Kubernetes Configuration | NuGet [1.2.1](https://www.nuget.org/packages/Azure.ResourceManager.KubernetesConfiguration/1.2.1) | [docs](/dotnet/api/overview/azure/ResourceManager.KubernetesConfiguration-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.KubernetesConfiguration_1.2.1/sdk/kubernetesconfiguration/Azure.ResourceManager.KubernetesConfiguration/) | | Resource Management - Kubernetes Configuration - Extensions | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.KubernetesConfiguration.Extensions/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.KubernetesConfiguration.Extensions-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.KubernetesConfiguration.Extensions_1.0.0/sdk/kubernetesconfiguration/Azure.ResourceManager.KubernetesConfiguration.Extensions/) | | Resource Management - Kubernetesconfiguration.Extensiontypes | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.KubernetesConfiguration.ExtensionTypes/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.KubernetesConfiguration.ExtensionTypes-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.KubernetesConfiguration.ExtensionTypes_1.0.0-beta.1/sdk/kubernetesconfiguration/Azure.ResourceManager.KubernetesConfiguration.ExtensionTypes/) | @@ -448,7 +448,7 @@ | Resource Management - Storage | NuGet [1.8.0](https://www.nuget.org/packages/Azure.ResourceManager.Storage/1.8.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Storage-readme) | GitHub [1.8.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Storage_1.8.0/sdk/storage/Azure.ResourceManager.Storage/) | | Resource Management - Storage Actions | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.StorageActions/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageActions-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageActions_1.0.1/sdk/storageactions/Azure.ResourceManager.StorageActions/) | | Resource Management - Storage Cache | NuGet [1.6.0](https://www.nuget.org/packages/Azure.ResourceManager.StorageCache/1.6.0) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageCache-readme) | GitHub [1.6.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageCache_1.6.0/sdk/storagecache/Azure.ResourceManager.StorageCache/) | -| Resource Management - Storage Discovery | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.StorageDiscovery/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageDiscovery-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageDiscovery_1.0.1/sdk/storagediscovery/Azure.ResourceManager.StorageDiscovery/) | +| Resource Management - Storage Discovery | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.StorageDiscovery/1.0.1)
NuGet [1.1.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.StorageDiscovery/1.1.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageDiscovery-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageDiscovery_1.0.1/sdk/storagediscovery/Azure.ResourceManager.StorageDiscovery/)
GitHub [1.1.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageDiscovery_1.1.0-beta.1/sdk/storagediscovery/Azure.ResourceManager.StorageDiscovery/) | | Resource Management - Storage Mover | NuGet [1.5.0](https://www.nuget.org/packages/Azure.ResourceManager.StorageMover/1.5.0) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageMover-readme) | GitHub [1.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageMover_1.5.0/sdk/storagemover/Azure.ResourceManager.StorageMover/) | | Resource Management - Storage Pool | NuGet [1.1.2](https://www.nuget.org/packages/Azure.ResourceManager.StoragePool/1.1.2) | [docs](/dotnet/api/overview/azure/ResourceManager.StoragePool-readme) | GitHub [1.1.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StoragePool_1.1.2/sdk/storagepool/Azure.ResourceManager.StoragePool/) | | Resource Management - Storage Sync | NuGet [1.4.0](https://www.nuget.org/packages/Azure.ResourceManager.StorageSync/1.4.0) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageSync-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageSync_1.4.0/sdk/storagesync/Azure.ResourceManager.StorageSync/) | @@ -471,6 +471,7 @@ | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.Fabric/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.Fabric-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Fabric_1.0.0-beta.1/sdk/fabric/Azure.Provisioning.Fabric/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.Sphere/1.0.0-beta.1) | | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Sphere_1.0.0-beta.1/sdk/sphere/Azure.Provisioning.Sphere/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.VerifiedId/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.VerifiedId-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.VerifiedId_1.0.0-beta.1/sdk/verifiedid/Azure.Provisioning.VerifiedId/) | +| unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.Compute.WorkloadManager/1.0.0-beta.1) | | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Compute.WorkloadManager_1.0.0-beta.1/sdk/compute/Azure.ResourceManager.Compute.WorkloadManager/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.PlatformValidation/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.PlatformValidation-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.PlatformValidation_1.0.0-beta.1/sdk/platformvalidation/Azure.ResourceManager.PlatformValidation/) | | .NET Function Templates | NuGet [1.0.1](https://www.nuget.org/packages/Azure.Functions.Cli.Workloads.Templates.DotNet/1.0.1) | | | | .NET Stack | NuGet [1.0.0-preview.1](https://www.nuget.org/packages/Azure.Functions.Cli.Workloads.DotNet/1.0.0-preview.1) | | | @@ -498,13 +499,13 @@ | Cosmos DB QueryPlanInterop - Windows | NuGet [1.0.5](https://www.nuget.org/packages/Microsoft.Azure.Cosmos.QueryPlanInterop.Windows/1.0.5) | | | | DotNetty | NuGet [0.7.6](https://www.nuget.org/packages/DotNetty.Common/0.7.6) | | | | Extension Bundles | NuGet [4.42.0-preview.2](https://www.nuget.org/packages/Azure.Functions.Cli.Workloads.ExtensionBundles/4.42.0-preview.2) | | | -| Fabric MCP | NuGet [1.4.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp/1.4.0) | | | -| Fabric MCP | NuGet [1.4.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.linux-arm64/1.4.0) | | | -| Fabric MCP | NuGet [1.4.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.linux-x64/1.4.0) | | | -| Fabric MCP | NuGet [1.4.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.osx-arm64/1.4.0) | | | -| Fabric MCP | NuGet [1.4.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.osx-x64/1.4.0) | | | -| Fabric MCP | NuGet [1.4.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.win-arm64/1.4.0) | | | -| Fabric MCP | NuGet [1.4.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.win-x64/1.4.0) | | | +| Fabric MCP | NuGet [1.5.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp/1.5.0) | | | +| Fabric MCP | NuGet [1.5.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.linux-arm64/1.5.0) | | | +| Fabric MCP | NuGet [1.5.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.linux-x64/1.5.0) | | | +| Fabric MCP | NuGet [1.5.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.osx-arm64/1.5.0) | | | +| Fabric MCP | NuGet [1.5.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.osx-x64/1.5.0) | | | +| Fabric MCP | NuGet [1.5.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.win-arm64/1.5.0) | | | +| Fabric MCP | NuGet [1.5.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.win-x64/1.5.0) | | | | Functions Connector Extension | NuGet [0.4.1-alpha](https://www.nuget.org/packages/Microsoft.Azure.Functions.Extensions.Connector/0.4.1-alpha) | | | | Functions Extension MCP | NuGet [1.6.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Extensions.Mcp/1.6.0) | | | | Functions Host | NuGet [4.1048.200-preview.3](https://www.nuget.org/packages/Azure.Functions.Cli.Workloads.Host.linux-arm64/4.1048.200-preview.3) | | | diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md index 914debecd3d22..d008035907cc6 100644 --- a/docs/azure/includes/dotnet-new.md +++ b/docs/azure/includes/dotnet-new.md @@ -3,14 +3,14 @@ | Agent Server Optimization | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.AI.AgentServer.Optimization/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Optimization-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Optimization_1.0.0-beta.1/sdk/agentserver/Azure.AI.AgentServer.Optimization/) | | AI Agent Server - Agent Framework | NuGet [1.0.0-beta.11](https://www.nuget.org/packages/Azure.AI.AgentServer.AgentFramework/1.0.0-beta.11) | [docs](/dotnet/api/overview/azure/AI.AgentServer.AgentFramework-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.11](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.AgentFramework_1.0.0-beta.11/sdk/agentserver/Azure.AI.AgentServer.AgentFramework/) | | AI Agent Server - Contracts | NuGet [1.0.0-beta.11](https://www.nuget.org/packages/Azure.AI.AgentServer.Contracts/1.0.0-beta.11) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Contracts-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.11](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Contracts_1.0.0-beta.11/sdk/agentserver/Azure.AI.AgentServer.Contracts/) | -| AI Agent Server - Core | NuGet [1.0.0-beta.29](https://www.nuget.org/packages/Azure.AI.AgentServer.Core/1.0.0-beta.29) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Core-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.29](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Core_1.0.0-beta.29/sdk/agentserver/Azure.AI.AgentServer.Core/) | +| AI Agent Server - Core | NuGet [1.0.0-beta.30](https://www.nuget.org/packages/Azure.AI.AgentServer.Core/1.0.0-beta.30) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Core-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.30](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Core_1.0.0-beta.30/sdk/agentserver/Azure.AI.AgentServer.Core/) | | AI Agent Server - Invocations | NuGet [1.0.0-beta.7](https://www.nuget.org/packages/Azure.AI.AgentServer.Invocations/1.0.0-beta.7) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Invocations-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.7](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Invocations_1.0.0-beta.7/sdk/agentserver/Azure.AI.AgentServer.Invocations/) | -| AI Agent Server - Responses | NuGet [1.0.0-beta.8](https://www.nuget.org/packages/Azure.AI.AgentServer.Responses/1.0.0-beta.8) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Responses-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.8](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Responses_1.0.0-beta.8/sdk/agentserver/Azure.AI.AgentServer.Responses/) | +| AI Agent Server - Responses | NuGet [1.0.0-beta.9](https://www.nuget.org/packages/Azure.AI.AgentServer.Responses/1.0.0-beta.9) | [docs](/dotnet/api/overview/azure/AI.AgentServer.Responses-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.9](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AgentServer.Responses_1.0.0-beta.9/sdk/agentserver/Azure.AI.AgentServer.Responses/) | | AI Agents Persistent | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.Agents.Persistent/1.1.0)
NuGet [1.2.0-beta.10](https://www.nuget.org/packages/Azure.AI.Agents.Persistent/1.2.0-beta.10) | [docs](/dotnet/api/overview/azure/AI.Agents.Persistent-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Agents.Persistent_1.1.0/sdk/ai/Azure.AI.Agents.Persistent/)
GitHub [1.2.0-beta.10](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Agents.Persistent_1.2.0-beta.10/sdk/ai/Azure.AI.Agents.Persistent/) | -| AI Extensions - OpenAI | NuGet [2.0.0](https://www.nuget.org/packages/Azure.AI.Extensions.OpenAI/2.0.0)
NuGet [3.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.Extensions.OpenAI/3.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.Extensions.OpenAI-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Extensions.OpenAI_2.0.0/sdk/ai/Azure.AI.Extensions.OpenAI/)
GitHub [3.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Extensions.OpenAI_3.0.0-beta.4/sdk/ai/Azure.AI.Extensions.OpenAI/) | -| AI Foundry | NuGet [2.0.1](https://www.nuget.org/packages/Azure.AI.Projects/2.0.1)
NuGet [3.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.Projects/3.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.Projects-readme) | GitHub [2.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects_2.0.1/sdk/ai/Azure.AI.Projects/)
GitHub [3.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects_3.0.0-beta.4/sdk/ai/Azure.AI.Projects/) | +| AI Extensions - OpenAI | NuGet [2.0.0](https://www.nuget.org/packages/Azure.AI.Extensions.OpenAI/2.0.0)
NuGet [3.0.0-beta.5](https://www.nuget.org/packages/Azure.AI.Extensions.OpenAI/3.0.0-beta.5) | [docs](/dotnet/api/overview/azure/AI.Extensions.OpenAI-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Extensions.OpenAI_2.0.0/sdk/ai/Azure.AI.Extensions.OpenAI/)
GitHub [3.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Extensions.OpenAI_3.0.0-beta.5/sdk/ai/Azure.AI.Extensions.OpenAI/) | +| AI Foundry | NuGet [2.0.1](https://www.nuget.org/packages/Azure.AI.Projects/2.0.1)
NuGet [3.0.0-beta.5](https://www.nuget.org/packages/Azure.AI.Projects/3.0.0-beta.5) | [docs](/dotnet/api/overview/azure/AI.Projects-readme) | GitHub [2.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects_2.0.1/sdk/ai/Azure.AI.Projects/)
GitHub [3.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects_3.0.0-beta.5/sdk/ai/Azure.AI.Projects/) | | AI Model Inference | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.AI.Inference/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/AI.Inference-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Inference_1.0.0-beta.5/sdk/ai/Azure.AI.Inference/) | -| AI Projects - Agents | NuGet [2.0.0](https://www.nuget.org/packages/Azure.AI.Projects.Agents/2.0.0)
NuGet [3.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.Projects.Agents/3.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.Projects.Agents-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects.Agents_2.0.0/sdk/ai/Azure.AI.Projects.Agents/)
GitHub [3.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects.Agents_3.0.0-beta.4/sdk/ai/Azure.AI.Projects.Agents/) | +| AI Projects - Agents | NuGet [2.0.0](https://www.nuget.org/packages/Azure.AI.Projects.Agents/2.0.0)
NuGet [3.0.0-beta.5](https://www.nuget.org/packages/Azure.AI.Projects.Agents/3.0.0-beta.5) | [docs](/dotnet/api/overview/azure/AI.Projects.Agents-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects.Agents_2.0.0/sdk/ai/Azure.AI.Projects.Agents/)
GitHub [3.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects.Agents_3.0.0-beta.5/sdk/ai/Azure.AI.Projects.Agents/) | | AI Projects - OpenAI | NuGet [2.0.0-beta.1](https://www.nuget.org/packages/Azure.AI.Projects.OpenAI/2.0.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.Projects.OpenAI-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [2.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects.OpenAI_2.0.0-beta.1/sdk/ai/Azure.AI.Projects.OpenAI/) | | Anomaly Detector | NuGet [3.0.0-preview.7](https://www.nuget.org/packages/Azure.AI.AnomalyDetector/3.0.0-preview.7) | [docs](/dotnet/api/overview/azure/AI.AnomalyDetector-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [3.0.0-preview.7](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AnomalyDetector_3.0.0-preview.7/sdk/anomalydetector/Azure.AI.AnomalyDetector/) | | App Configuration | NuGet [1.11.1](https://www.nuget.org/packages/Azure.Data.AppConfiguration/1.11.1)
NuGet [1.12.0-beta.1](https://www.nuget.org/packages/Azure.Data.AppConfiguration/1.12.0-beta.1) | [docs](/dotnet/api/overview/azure/Data.AppConfiguration-readme) | GitHub [1.11.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Data.AppConfiguration_1.11.1/sdk/appconfiguration/Azure.Data.AppConfiguration/)
GitHub [1.12.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Data.AppConfiguration_1.12.0-beta.1/sdk/appconfiguration/Azure.Data.AppConfiguration/) | @@ -34,8 +34,8 @@ | Communication Rooms | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Communication.Rooms/1.2.0) | [docs](/dotnet/api/overview/azure/Communication.Rooms-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Rooms_1.2.0/sdk/communication/Azure.Communication.Rooms/) | | Communication SMS | NuGet [1.0.2](https://www.nuget.org/packages/Azure.Communication.Sms/1.0.2)
NuGet [1.1.0-beta.3](https://www.nuget.org/packages/Azure.Communication.Sms/1.1.0-beta.3) | [docs](/dotnet/api/overview/azure/Communication.Sms-readme) | GitHub [1.0.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Sms_1.0.2/sdk/communication/Azure.Communication.Sms/)
GitHub [1.1.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Sms_1.1.0-beta.3/sdk/communication/Azure.Communication.Sms/) | | Compute Batch | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Compute.Batch/1.0.0) | [docs](/dotnet/api/overview/azure/Compute.Batch-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Compute.Batch_1.0.0/sdk/batch/Azure.Compute.Batch/) | -| Confidential Ledger | NuGet [1.3.0](https://www.nuget.org/packages/Azure.Security.ConfidentialLedger/1.3.0)
NuGet [2.0.0-beta.5](https://www.nuget.org/packages/Azure.Security.ConfidentialLedger/2.0.0-beta.5) | [docs](/dotnet/api/overview/azure/Security.ConfidentialLedger-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.ConfidentialLedger_1.3.0/sdk/confidentialledger/Azure.Security.ConfidentialLedger/)
GitHub [2.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.ConfidentialLedger_2.0.0-beta.5/sdk/confidentialledger/Azure.Security.ConfidentialLedger/) | -| Container Registry | NuGet [1.3.0](https://www.nuget.org/packages/Azure.Containers.ContainerRegistry/1.3.0) | [docs](/dotnet/api/overview/azure/Containers.ContainerRegistry-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Containers.ContainerRegistry_1.3.0/sdk/containerregistry/Azure.Containers.ContainerRegistry/) | +| Confidential Ledger | NuGet [1.3.0](https://www.nuget.org/packages/Azure.Security.ConfidentialLedger/1.3.0)
NuGet [2.0.0-beta.6](https://www.nuget.org/packages/Azure.Security.ConfidentialLedger/2.0.0-beta.6) | [docs](/dotnet/api/overview/azure/Security.ConfidentialLedger-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.ConfidentialLedger_1.3.0/sdk/confidentialledger/Azure.Security.ConfidentialLedger/)
GitHub [2.0.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.ConfidentialLedger_2.0.0-beta.6/sdk/confidentialledger/Azure.Security.ConfidentialLedger/) | +| Container Registry | NuGet [1.4.0](https://www.nuget.org/packages/Azure.Containers.ContainerRegistry/1.4.0) | [docs](/dotnet/api/overview/azure/Containers.ContainerRegistry-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Containers.ContainerRegistry_1.4.0/sdk/containerregistry/Azure.Containers.ContainerRegistry/) | | Content Safety | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.ContentSafety/1.0.0)
NuGet [1.1.0-beta.1](https://www.nuget.org/packages/Azure.AI.ContentSafety/1.1.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.ContentSafety-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.ContentSafety_1.0.0/sdk/contentsafety/Azure.AI.ContentSafety/)
GitHub [1.1.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.ContentSafety_1.1.0-beta.1/sdk/contentsafety/Azure.AI.ContentSafety/) | | Content Understanding | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.ContentUnderstanding/1.1.0)
NuGet [1.2.0-beta.3](https://www.nuget.org/packages/Azure.AI.ContentUnderstanding/1.2.0-beta.3) | [docs](/dotnet/api/overview/azure/AI.ContentUnderstanding-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.ContentUnderstanding_1.1.0/sdk/contentunderstanding/Azure.AI.ContentUnderstanding/)
GitHub [1.2.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.ContentUnderstanding_1.2.0-beta.3/sdk/contentunderstanding/Azure.AI.ContentUnderstanding/) | | Conversational Language Understanding | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.Language.Conversations/1.1.0)
NuGet [2.0.0-beta.5](https://www.nuget.org/packages/Azure.AI.Language.Conversations/2.0.0-beta.5) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_1.1.0/sdk/cognitivelanguage/Azure.AI.Language.Conversations/)
GitHub [2.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_2.0.0-beta.5/sdk/cognitivelanguage/Azure.AI.Language.Conversations/) | @@ -180,7 +180,7 @@ | Provisioning - Container Apps | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Provisioning.AppContainers/1.2.0)
NuGet [1.3.0-beta.2](https://www.nuget.org/packages/Azure.Provisioning.AppContainers/1.3.0-beta.2) | [docs](/dotnet/api/overview/azure/Provisioning.AppContainers-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AppContainers_1.2.0/sdk/containerapps/Azure.Provisioning.AppContainers/)
GitHub [1.3.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AppContainers_1.3.0-beta.2/sdk/containerapps/Azure.Provisioning.AppContainers/) | | Provisioning - Container Instances | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.ContainerInstance/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.ContainerInstance-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ContainerInstance_1.0.0-beta.1/sdk/containerinstance/Azure.Provisioning.ContainerInstance/) | | Provisioning - Container Registry | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Provisioning.ContainerRegistry/1.1.0) | [docs](/dotnet/api/overview/azure/Provisioning.ContainerRegistry-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ContainerRegistry_1.1.0/sdk/provisioning/Azure.Provisioning.ContainerRegistry/) | -| Provisioning - Container Service | NuGet [1.0.0-beta.6](https://www.nuget.org/packages/Azure.Provisioning.ContainerService/1.0.0-beta.6) | [docs](/dotnet/api/overview/azure/Provisioning.ContainerService-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ContainerService_1.0.0-beta.6/sdk/containerservice/Azure.Provisioning.ContainerService/) | +| Provisioning - Container Service | NuGet [1.0.0-beta.7](https://www.nuget.org/packages/Azure.Provisioning.ContainerService/1.0.0-beta.7) | [docs](/dotnet/api/overview/azure/Provisioning.ContainerService-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.7](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ContainerService_1.0.0-beta.7/sdk/containerservice/Azure.Provisioning.ContainerService/) | | Provisioning - Content Delivery Network | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.Provisioning.Cdn/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/Provisioning.Cdn-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Cdn_1.0.0-beta.4/sdk/cdn/Azure.Provisioning.Cdn/) | | Provisioning - Cosmos DB | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Provisioning.CosmosDB/1.0.0)
NuGet [1.1.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.CosmosDB/1.1.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.CosmosDB-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.CosmosDB_1.0.0/sdk/provisioning/Azure.Provisioning.CosmosDB/)
GitHub [1.1.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.CosmosDB_1.1.0-beta.1/sdk/provisioning/Azure.Provisioning.CosmosDB/) | | Provisioning - Cost Management | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.CostManagement/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.CostManagement-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.CostManagement_1.0.0-beta.1/sdk/costmanagement/Azure.Provisioning.CostManagement/) | @@ -227,7 +227,7 @@ | Provisioning - SignalR | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Provisioning.SignalR/1.1.0)
NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.SignalR/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.SignalR-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.SignalR_1.1.0/sdk/signalr/Azure.Provisioning.SignalR/)
GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.SignalR_1.2.0-beta.1/sdk/signalr/Azure.Provisioning.SignalR/) | | Provisioning - SQL | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Provisioning.Sql/1.1.0)
NuGet [1.2.0-beta.3](https://www.nuget.org/packages/Azure.Provisioning.Sql/1.2.0-beta.3) | [docs](/dotnet/api/overview/azure/Provisioning.Sql-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Sql_1.1.0/sdk/sqlmanagement/Azure.Provisioning.Sql/)
GitHub [1.2.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Sql_1.2.0-beta.3/sdk/sqlmanagement/Azure.Provisioning.Sql/) | | Provisioning - Standby Pool | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.StandbyPool/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.StandbyPool-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.StandbyPool_1.0.0-beta.1/sdk/standbypool/Azure.Provisioning.StandbyPool/) | -| Provisioning - Storage | NuGet [1.1.2](https://www.nuget.org/packages/Azure.Provisioning.Storage/1.1.2)
NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.Provisioning.Storage/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/Provisioning.Storage-readme) | GitHub [1.1.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Storage_1.1.2/sdk/provisioning/Azure.Provisioning.Storage/)
GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Storage_1.2.0-beta.2/sdk/provisioning/Azure.Provisioning.Storage/) | +| Provisioning - Storage | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Provisioning.Storage/1.2.0) | [docs](/dotnet/api/overview/azure/Provisioning.Storage-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Storage_1.2.0/sdk/provisioning/Azure.Provisioning.Storage/) | | Provisioning - Subscription | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.Subscription/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.Subscription-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Subscription_1.0.0-beta.1/sdk/subscription/Azure.Provisioning.Subscription/) | | Provisioning - Traffic Manager | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.TrafficManager/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.TrafficManager-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.TrafficManager_1.0.0-beta.1/sdk/trafficmanager/Azure.Provisioning.TrafficManager/) | | Provisioning - Web PubSub | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Provisioning.WebPubSub/1.1.0) | [docs](/dotnet/api/overview/azure/Provisioning.WebPubSub-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.WebPubSub_1.1.0/sdk/provisioning/Azure.Provisioning.WebPubSub/) | @@ -264,7 +264,7 @@ | Resource Management - Carbon Optimization | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.CarbonOptimization/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.CarbonOptimization-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CarbonOptimization_1.0.1/sdk/carbon/Azure.ResourceManager.CarbonOptimization/) | | Resource Management - Certificate Registration | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.CertificateRegistration/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.CertificateRegistration-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CertificateRegistration_1.0.0/sdk/certificateregistration/Azure.ResourceManager.CertificateRegistration/) | | Resource Management - Chaos | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Chaos/1.1.1)
NuGet [1.2.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.Chaos/1.2.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.Chaos-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Chaos_1.1.1/sdk/chaos/Azure.ResourceManager.Chaos/)
GitHub [1.2.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Chaos_1.2.0-beta.3/sdk/chaos/Azure.ResourceManager.Chaos/) | -| Resource Management - Cloud Health | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.CloudHealth/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.CloudHealth-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CloudHealth_1.0.0-beta.5/sdk/cloudhealth/Azure.ResourceManager.CloudHealth/) | +| Resource Management - Cloud Health | NuGet [1.0.0-beta.6](https://www.nuget.org/packages/Azure.ResourceManager.CloudHealth/1.0.0-beta.6) | [docs](/dotnet/api/overview/azure/ResourceManager.CloudHealth-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.CloudHealth_1.0.0-beta.6/sdk/cloudhealth/Azure.ResourceManager.CloudHealth/) | | Resource Management - Cognitive Services | NuGet [1.6.0](https://www.nuget.org/packages/Azure.ResourceManager.CognitiveServices/1.6.0) | [docs](/dotnet/api/overview/azure/ResourceManager.CognitiveServices-readme) | GitHub [1.6.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CognitiveServices_1.6.0/sdk/cognitiveservices/Azure.ResourceManager.CognitiveServices/) | | Resource Management - Communication | NuGet [1.3.1](https://www.nuget.org/packages/Azure.ResourceManager.Communication/1.3.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Communication-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Communication_1.3.1/sdk/communication/Azure.ResourceManager.Communication/) | | Resource Management - Commvaultcontentstore | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.CommvaultContentStore/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.CommvaultContentStore-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CommvaultContentStore_1.0.0-beta.1/sdk/commvaultcontentstore/Azure.ResourceManager.CommvaultContentStore/) | @@ -329,7 +329,7 @@ | Resource Management - Edge Order | NuGet [1.1.2](https://www.nuget.org/packages/Azure.ResourceManager.EdgeOrder/1.1.2) | [docs](/dotnet/api/overview/azure/ResourceManager.EdgeOrder-readme) | GitHub [1.1.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EdgeOrder_1.1.2/sdk/edgeorder/Azure.ResourceManager.EdgeOrder/) | | Resource Management - Edge Zones | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.EdgeZones/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.EdgeZones-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EdgeZones_1.0.0/sdk/edgezones/Azure.ResourceManager.EdgeZones/) | | Resource Management - Elastic | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Elastic/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Elastic-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Elastic_1.1.1/sdk/elastic/Azure.ResourceManager.Elastic/) | -| Resource Management - Elastic SAN | NuGet [1.2.1](https://www.nuget.org/packages/Azure.ResourceManager.ElasticSan/1.2.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ElasticSan-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ElasticSan_1.2.1/sdk/elasticsan/Azure.ResourceManager.ElasticSan/) | +| Resource Management - Elastic SAN | NuGet [1.2.1](https://www.nuget.org/packages/Azure.ResourceManager.ElasticSan/1.2.1)
NuGet [1.3.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ElasticSan/1.3.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ElasticSan-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ElasticSan_1.2.1/sdk/elasticsan/Azure.ResourceManager.ElasticSan/)
GitHub [1.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ElasticSan_1.3.0-beta.1/sdk/elasticsan/Azure.ResourceManager.ElasticSan/) | | Resource Management - Enclave | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.Enclave/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Enclave-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Enclave_1.0.0/sdk/enclave/Azure.ResourceManager.Enclave/) | | Resource Management - Energy Services | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.ResourceManager.EnergyServices/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/ResourceManager.EnergyServices-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.EnergyServices_1.0.0-beta.4/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.3](https://www.nuget.org/packages/Azure.ResourceManager.EventGrid/1.2.0-beta.3) | [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.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.EventGrid_1.2.0-beta.3/sdk/eventgrid/Azure.ResourceManager.EventGrid/) | @@ -361,7 +361,7 @@ | Resource Management - IoT Firmware Defense | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.IotFirmwareDefense/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.IotFirmwareDefense-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.IotFirmwareDefense_1.1.1/sdk/iot/Azure.ResourceManager.IotFirmwareDefense/) | | Resource Management - IoT Hub | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.IotHub/1.1.1)
NuGet [1.2.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.IotHub/1.2.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.IotHub-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.IotHub_1.1.1/sdk/iothub/Azure.ResourceManager.IotHub/)
GitHub [1.2.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.IotHub_1.2.0-beta.5/sdk/iothub/Azure.ResourceManager.IotHub/) | | Resource Management - IoT Operations | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.IotOperations/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.IotOperations-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.IotOperations_1.2.0/sdk/iotoperations/Azure.ResourceManager.IotOperations/) | -| Resource Management - Key Vault | NuGet [1.4.0](https://www.nuget.org/packages/Azure.ResourceManager.KeyVault/1.4.0) | [docs](/dotnet/api/overview/azure/ResourceManager.KeyVault-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.KeyVault_1.4.0/sdk/keyvault/Azure.ResourceManager.KeyVault/) | +| Resource Management - Key Vault | NuGet [1.5.0](https://www.nuget.org/packages/Azure.ResourceManager.KeyVault/1.5.0) | [docs](/dotnet/api/overview/azure/ResourceManager.KeyVault-readme) | GitHub [1.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.KeyVault_1.5.0/sdk/keyvault/Azure.ResourceManager.KeyVault/) | | Resource Management - Kubernetes Configuration | NuGet [1.2.1](https://www.nuget.org/packages/Azure.ResourceManager.KubernetesConfiguration/1.2.1) | [docs](/dotnet/api/overview/azure/ResourceManager.KubernetesConfiguration-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.KubernetesConfiguration_1.2.1/sdk/kubernetesconfiguration/Azure.ResourceManager.KubernetesConfiguration/) | | Resource Management - Kubernetes Configuration - Extensions | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.KubernetesConfiguration.Extensions/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.KubernetesConfiguration.Extensions-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.KubernetesConfiguration.Extensions_1.0.0/sdk/kubernetesconfiguration/Azure.ResourceManager.KubernetesConfiguration.Extensions/) | | Resource Management - Kubernetesconfiguration.Extensiontypes | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.KubernetesConfiguration.ExtensionTypes/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.KubernetesConfiguration.ExtensionTypes-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.KubernetesConfiguration.ExtensionTypes_1.0.0-beta.1/sdk/kubernetesconfiguration/Azure.ResourceManager.KubernetesConfiguration.ExtensionTypes/) | @@ -475,7 +475,7 @@ | Resource Management - Storage | NuGet [1.8.0](https://www.nuget.org/packages/Azure.ResourceManager.Storage/1.8.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Storage-readme) | GitHub [1.8.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Storage_1.8.0/sdk/storage/Azure.ResourceManager.Storage/) | | Resource Management - Storage Actions | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.StorageActions/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageActions-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageActions_1.0.1/sdk/storageactions/Azure.ResourceManager.StorageActions/) | | Resource Management - Storage Cache | NuGet [1.6.0](https://www.nuget.org/packages/Azure.ResourceManager.StorageCache/1.6.0) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageCache-readme) | GitHub [1.6.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageCache_1.6.0/sdk/storagecache/Azure.ResourceManager.StorageCache/) | -| Resource Management - Storage Discovery | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.StorageDiscovery/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageDiscovery-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageDiscovery_1.0.1/sdk/storagediscovery/Azure.ResourceManager.StorageDiscovery/) | +| Resource Management - Storage Discovery | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.StorageDiscovery/1.0.1)
NuGet [1.1.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.StorageDiscovery/1.1.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageDiscovery-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageDiscovery_1.0.1/sdk/storagediscovery/Azure.ResourceManager.StorageDiscovery/)
GitHub [1.1.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageDiscovery_1.1.0-beta.1/sdk/storagediscovery/Azure.ResourceManager.StorageDiscovery/) | | Resource Management - Storage Mover | NuGet [1.5.0](https://www.nuget.org/packages/Azure.ResourceManager.StorageMover/1.5.0) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageMover-readme) | GitHub [1.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageMover_1.5.0/sdk/storagemover/Azure.ResourceManager.StorageMover/) | | Resource Management - Storage Pool | NuGet [1.1.2](https://www.nuget.org/packages/Azure.ResourceManager.StoragePool/1.1.2) | [docs](/dotnet/api/overview/azure/ResourceManager.StoragePool-readme) | GitHub [1.1.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StoragePool_1.1.2/sdk/storagepool/Azure.ResourceManager.StoragePool/) | | Resource Management - Storage Sync | NuGet [1.4.0](https://www.nuget.org/packages/Azure.ResourceManager.StorageSync/1.4.0) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageSync-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageSync_1.4.0/sdk/storagesync/Azure.ResourceManager.StorageSync/) | @@ -501,4 +501,5 @@ | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.Fabric/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.Fabric-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Fabric_1.0.0-beta.1/sdk/fabric/Azure.Provisioning.Fabric/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.Sphere/1.0.0-beta.1) | | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Sphere_1.0.0-beta.1/sdk/sphere/Azure.Provisioning.Sphere/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.VerifiedId/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.VerifiedId-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.VerifiedId_1.0.0-beta.1/sdk/verifiedid/Azure.Provisioning.VerifiedId/) | +| unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.Compute.WorkloadManager/1.0.0-beta.1) | | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Compute.WorkloadManager_1.0.0-beta.1/sdk/compute/Azure.ResourceManager.Compute.WorkloadManager/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.PlatformValidation/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.PlatformValidation-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.PlatformValidation_1.0.0-beta.1/sdk/platformvalidation/Azure.ResourceManager.PlatformValidation/) | From f9146443a660d824a1eb0047fa394db507e9d76d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 14:53:11 +0000 Subject: [PATCH 26/41] Bump Azure.Storage.Blobs across 12 directories (#56435) --- updated-dependencies: - dependency-name: Azure.Storage.Blobs dependency-version: 12.30.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: Azure.Storage.Blobs dependency-version: 12.30.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: Azure.Storage.Blobs dependency-version: 12.30.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: Azure.Storage.Blobs dependency-version: 12.30.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: Azure.Storage.Blobs dependency-version: 12.30.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: Azure.Storage.Blobs dependency-version: 12.30.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: Azure.Storage.Blobs dependency-version: 12.30.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: Azure.Storage.Blobs dependency-version: 12.30.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: Azure.Storage.Blobs dependency-version: 12.30.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: Azure.Storage.Blobs dependency-version: 12.30.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: Azure.Storage.Blobs dependency-version: 12.30.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: Azure.Storage.Blobs dependency-version: 12.30.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/azure/sdk/snippets/authentication/Directory.Packages.props | 2 +- .../sdk/snippets/dependency-injection/Directory.Packages.props | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/azure/sdk/snippets/authentication/Directory.Packages.props b/docs/azure/sdk/snippets/authentication/Directory.Packages.props index 5810c813035b0..1653f52a2c356 100644 --- a/docs/azure/sdk/snippets/authentication/Directory.Packages.props +++ b/docs/azure/sdk/snippets/authentication/Directory.Packages.props @@ -11,7 +11,7 @@ - + diff --git a/docs/azure/sdk/snippets/dependency-injection/Directory.Packages.props b/docs/azure/sdk/snippets/dependency-injection/Directory.Packages.props index 7159187e1b528..25b6fac5c6b62 100644 --- a/docs/azure/sdk/snippets/dependency-injection/Directory.Packages.props +++ b/docs/azure/sdk/snippets/dependency-injection/Directory.Packages.props @@ -6,7 +6,7 @@ - + From fa2e2074e3493a96ecb1477f0e8036f2e111b1cc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 09:12:44 -0700 Subject: [PATCH 27/41] Bump MSTest.TestAdapter across 2 directories (#56433) Bumps MSTest.TestAdapter from 4.4.1 to 4.5.1 Bumps MSTest.TestFramework from 4.4.1 to 4.5.1 --- updated-dependencies: - dependency-name: MSTest.TestAdapter dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestAdapter dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bill Wagner --- .../vb/PrimeService.Tests/PrimeService.Tests.vbproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 a568545d0d3fb..07f3af38a3c4c 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,7 +8,7 @@ - + From 00528d08c1557e17a7b00f99f67b37c4bef288ce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 09:13:18 -0700 Subject: [PATCH 28/41] Bump MSTest.TestFramework across 8 directories (#56444) --- updated-dependencies: - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestFramework dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bill Wagner --- .../csharp/UIAutomationExample/UIAutomationExample.csproj | 2 +- .../vb/UIAutomationExample/UIAutomationExample.vbproj | 2 +- .../snippets/dotnet-8/csharp/ConsoleApp/Project.csproj | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/core/testing/snippets/unit-testing-mstest-ui-automation/csharp/UIAutomationExample/UIAutomationExample.csproj b/docs/core/testing/snippets/unit-testing-mstest-ui-automation/csharp/UIAutomationExample/UIAutomationExample.csproj index 35df0fb7b8a0a..d6aebadffe177 100644 --- a/docs/core/testing/snippets/unit-testing-mstest-ui-automation/csharp/UIAutomationExample/UIAutomationExample.csproj +++ b/docs/core/testing/snippets/unit-testing-mstest-ui-automation/csharp/UIAutomationExample/UIAutomationExample.csproj @@ -11,7 +11,7 @@
- + diff --git a/docs/core/testing/snippets/unit-testing-mstest-ui-automation/vb/UIAutomationExample/UIAutomationExample.vbproj b/docs/core/testing/snippets/unit-testing-mstest-ui-automation/vb/UIAutomationExample/UIAutomationExample.vbproj index 08d4d3ca14ca6..86f5ee8a31059 100644 --- a/docs/core/testing/snippets/unit-testing-mstest-ui-automation/vb/UIAutomationExample/UIAutomationExample.vbproj +++ b/docs/core/testing/snippets/unit-testing-mstest-ui-automation/vb/UIAutomationExample/UIAutomationExample.vbproj @@ -11,7 +11,7 @@ - + diff --git a/docs/core/whats-new/snippets/dotnet-8/csharp/ConsoleApp/Project.csproj b/docs/core/whats-new/snippets/dotnet-8/csharp/ConsoleApp/Project.csproj index be3af8522864b..c31c028bf56c6 100644 --- a/docs/core/whats-new/snippets/dotnet-8/csharp/ConsoleApp/Project.csproj +++ b/docs/core/whats-new/snippets/dotnet-8/csharp/ConsoleApp/Project.csproj @@ -12,7 +12,7 @@ - + From f03e40ed5884171be6d158bc035aa447c686434a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 09:14:22 -0700 Subject: [PATCH 29/41] Bump MSTest.TestAdapter across 2 directories (#56438) --- updated-dependencies: - dependency-name: MSTest.TestAdapter dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: MSTest.TestAdapter dependency-version: 4.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bill Wagner --- .../MakeConst/MakeConst.Test/MakeConst.Test.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 617505c78a780..822cc158cb678 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,7 +9,7 @@ - + From 16364303450f35eef18d790f8bbeb87375e2a5aa Mon Sep 17 00:00:00 2001 From: Jaroslav Ruzicka <14963300+rosebyte@users.noreply.github.com> Date: Mon, 19 Oct 2026 19:00:12 +0200 Subject: [PATCH 30/41] Add tracing configuration docs (#55758) --- .../distributed-tracing-configuration.md | 191 ++++++++++++++++++ docs/core/diagnostics/distributed-tracing.md | 1 + .../appsettings.json | 26 +++ .../csharp/Program.cs | 52 +++++ .../csharp/TracingConfiguration.csproj | 14 ++ .../vb/Program.vb | 71 +++++++ .../vb/TracingConfiguration.vbproj | 16 ++ docs/navigate/tools-diagnostics/toc.yml | 2 + 8 files changed, 373 insertions(+) create mode 100644 docs/core/diagnostics/distributed-tracing-configuration.md create mode 100644 docs/core/diagnostics/snippets/distributed-tracing-configuration/appsettings.json create mode 100644 docs/core/diagnostics/snippets/distributed-tracing-configuration/csharp/Program.cs create mode 100644 docs/core/diagnostics/snippets/distributed-tracing-configuration/csharp/TracingConfiguration.csproj create mode 100644 docs/core/diagnostics/snippets/distributed-tracing-configuration/vb/Program.vb create mode 100644 docs/core/diagnostics/snippets/distributed-tracing-configuration/vb/TracingConfiguration.vbproj diff --git a/docs/core/diagnostics/distributed-tracing-configuration.md b/docs/core/diagnostics/distributed-tracing-configuration.md new file mode 100644 index 0000000000000..8fa0c5794f9eb --- /dev/null +++ b/docs/core/diagnostics/distributed-tracing-configuration.md @@ -0,0 +1,191 @@ +--- +title: Configure distributed tracing in .NET +description: Learn how to register tracing listeners and configure activity rules in .NET. +ms.date: 08/27/2026 +ai-usage: ai-assisted +dev_langs: + - "csharp" + - "vb" +--- + +# Configure distributed tracing in .NET + +In .NET 11 and later, the `Microsoft.Extensions.Diagnostics.Tracing` APIs let you register instances and use rules to select the and instances that each listener receives. Define rules in code or load them from . + +> [!IMPORTANT] +> Tracing rules affect only listeners registered through this tracing infrastructure. They don't affect unrelated `ActivityListener` instances, including listeners that telemetry exporters create and manage. Configure those listeners or exporters separately. + +## Register tracing + +The APIs are available in the [`Microsoft.Extensions.Diagnostics`](https://www.nuget.org/packages/Microsoft.Extensions.Diagnostics) package. Apps that reference the `Microsoft.AspNetCore.App` shared framework already include the assembly. + +Call on an . In the callback: + +- Call to register each listener. The listener name identifies the listener in configuration rules. +- Configure the listener's sampling and notification delegates through . The tracing infrastructure owns `ShouldListenTo`, source subscriptions, and the listener lifetime. +- Call with the configuration section that contains the rules. For a section named `Tracing`, pass `configuration.GetSection("Tracing")`. + +The [complete sample](#run-the-sample) shows all three calls. A .NET host activates tracing subscriptions when the host starts. If you use dependency injection without a host, resolve the registered to construct the listeners and activate their subscriptions. The complete sample resolves the factory directly. + +## Configure tracing + +Set tracing rules through configuration or in code. If no rule matches a listener, source, operation, and scope, tracing remains disabled for that combination. + +### Configure tracing without code + +For apps that use configuration, add a `Tracing` section to *appsettings.json* or another [configuration provider](../extensions/configuration-providers.md). Then pass that section to `AddConfiguration`: + +```csharp +tracing.AddConfiguration(configuration.GetSection("Tracing")); +``` + +The following example shows the supported rule sections and rule levels: + +:::code language="json" source="./snippets/distributed-tracing-configuration/appsettings.json"::: + +Add rules directly under an `EnabledTracing`, `EnabledGlobalTracing`, or `EnabledLocalTracing` section. Don't add a `Rules` level. + +#### Rule sections + +Choose a rule section based on the source scope and whether the rule targets one listener: + +| Section | Matching listeners | Matching activity sources | +|---|---|---| +| `EnabledTracing` | All registered listeners. | Global and local sources. | +| `EnabledGlobalTracing` | All registered listeners. | Global sources only. | +| `EnabledLocalTracing` | All registered listeners. | Local sources only. | +| `{Listener}:EnabledTracing` | The named listener. | Global and local sources. | +| `{Listener}:EnabledGlobalTracing` | The named listener. | Global sources only. | +| `{Listener}:EnabledLocalTracing` | The named listener. | Local sources only. | + +Listener names match the names passed to `AddListener`. Section names and listener names aren't case-sensitive. + +#### Rule levels + +Under any rule section, use one of the following key forms: + +| Key form | Rule level | Match | +|---|---|---| +| `Default` | Default. | Every source and operation. | +| `{SourceName}` | Activity source. | Every operation from matching sources. | +| `{SourceName}:Default` | Activity source. | Every operation from matching sources. This form lets a source also contain operation rules. | +| `{SourceName}:{OperationName}` | Operation. | The named operation from matching sources. | + +Set each leaf value to `true` to enable the match or `false` to disable it. For example, the preceding configuration: + +- Disables tracing by default. +- Enables sources whose names start with `Contoso`. +- Enables `Contoso.Orders`, but disables its `HealthCheck` operation. +- Enables a source pattern that starts with `Contoso.` and ends with `.Storage`. +- Adds rules that apply only to global sources, local sources, or the listener named `Console`. + +Use `Default` as a Boolean leaf. If `Default` contains operation children, the configuration treats `Default` as a literal activity-source name. + +### Configure tracing with code + +Call and on the passed to `AddTracing`. + +## [C#](#tab/csharp) + +```csharp +tracing.EnableTracing(sourceName: "Contoso"); +tracing.DisableTracing( + sourceName: "Contoso.Orders", + operationName: "HealthCheck"); +``` + +## [Visual Basic](#tab/visual-basic) + +```vb +tracing.EnableTracing(sourceName:="Contoso") +tracing.DisableTracing( + sourceName:="Contoso.Orders", + operationName:="HealthCheck") +``` + +--- + +Omit `sourceName`, `operationName`, or `listenerName` to match all values at that level. By default, a programmatic rule applies to both global and local sources. Pass , , or both through the `scopes` argument to narrow the rule. + +Configuration rules and programmatic rules form one ordered rule set. If equally specific rules conflict, the rule added last wins. The order of calls in the `AddTracing` callback therefore matters when `AddConfiguration`, `EnableTracing`, and `DisableTracing` add equally specific rules. + +## Match activity-source names + +Source names, operation names, and listener names use case-insensitive ordinal comparison. Source-name rules support these match forms: + +- An empty source name matches every source. +- A source name without a wildcard matches by prefix. For example, `Contoso` matches `Contoso.Orders` and `ContosoPayments`; the matcher doesn't require a separator after the prefix. +- A source name with one `*` wildcard matches a prefix and suffix. For example, `Contoso.*.Storage` matches `Contoso.Orders.Storage`, but not `Contoso.Orders.Api`. +- A source name of `*` matches every source. + +Operation names match exactly. They don't use prefix or wildcard matching. + +## Apply rule precedence + +For each listener, source, operation, and scope combination, the tracing infrastructure chooses one matching rule. It compares matching rules in this order: + +- A listener-specific rule takes precedence over a rule for all listeners. +- A source rule takes precedence over a default rule. If two source expressions match, the longer expression takes precedence. The comparison uses the expression length, including a `*` wildcard. +- An operation rule takes precedence over a source-level rule. +- A global-only or local-only rule takes precedence over a rule that covers both scopes. +- The last rule takes precedence when all preceding factors are equal. + +The comparison stops at the first difference. For example, a listener-specific default rule takes precedence over a source-specific rule that applies to all listeners because listener specificity is evaluated first. + +Operation rules also control source subscriptions. A listener subscribes to a source that's disabled by default when an operation rule enables at least one operation from that source. The listener then returns and skips its callbacks for disabled operations. + +## Choose global or local activity sources + +The tracing infrastructure distinguishes two activity-source scopes: + +- A *global* source is an `ActivitySource` created through its constructor. `EnabledGlobalTracing` rules apply to these sources. +- A *local* source is an `ActivitySource` created by the `ActivitySourceFactory` resolved from dependency injection. `EnabledLocalTracing` rules apply to sources created by that factory. + +Use when you want the dependency injection container to manage the source and its tracing listeners. A factory's listeners ignore local sources created by a different factory. Rules in `EnabledTracing` apply to both source types. + +These scopes restrict only the listeners that `AddTracing` registers. An independent `ActivityListener` uses its own `ShouldListenTo` and sampling callbacks, even for an activity source created by `ActivitySourceFactory`. + +## Reload tracing configuration + +`AddConfiguration` subscribes to the change token from the supplied configuration. When a [configuration provider](../extensions/configuration-providers.md) supports reload and reports a change, the tracing infrastructure: + +- Rebuilds the rule set. +- Refreshes each registered listener's source subscriptions. +- Applies the updated rules to subsequent activities. + +The app can keep using the same `ActivitySource` instances after a reload. Subsequent activities use the updated rules. + +For a mutable provider that doesn't report changes automatically, update the configuration and call . The complete sample uses this approach with the in-memory configuration provider. + +## Handle invalid configuration + +Tracing configuration parses values with . It accepts `true` and `false` without regard to case and permits surrounding whitespace. It doesn't accept `1`, `0`, `yes`, or `on`. + +The configuration loader silently ignores a leaf value that isn't a valid Boolean. It also ignores unknown or malformed sections that don't match the supported schema. Check key names carefully because these cases don't produce an exception. + +A source expression can contain at most one `*` wildcard. A rule with more than one wildcard throws an when the rule is materialized, either during app startup or after configuration reload. For programmatic rules, also causes an . + +## Run the sample + +The following .NET 11 console app creates one enabled operation and one disabled operation. It then updates the disabled operation's rule, calls `Reload`, and starts the operation again through the same local `ActivitySource`. + +:::code language="csharp" source="./snippets/distributed-tracing-configuration/csharp/Program.cs" id="TracingConfiguration"::: +:::code language="vb" source="./snippets/distributed-tracing-configuration/vb/Program.vb" id="TracingConfiguration"::: + +The C# and Visual Basic samples produce the same result: + +```console +Before reload: +Listener started: EnabledOperation +EnabledOperation: enabled +DisabledOperation: disabled +After reload: +Listener started: DisabledOperation +DisabledOperation: enabled +``` + +## See also + +- [Distributed tracing overview](distributed-tracing.md) +- [Configuration in .NET](../extensions/configuration.md) +- [Activity tracing configuration in What's new in .NET 11](../whats-new/dotnet-11/libraries.md#activity-tracing-configuration) diff --git a/docs/core/diagnostics/distributed-tracing.md b/docs/core/diagnostics/distributed-tracing.md index 2c4db47b4f30a..71417c236989c 100644 --- a/docs/core/diagnostics/distributed-tracing.md +++ b/docs/core/diagnostics/distributed-tracing.md @@ -34,6 +34,7 @@ is a full-featured service provided by Microsoft. For more information, see [Col For more information, see [Understand distributed tracing concepts](distributed-tracing-concepts.md) and the following guides: +- [Configure distributed tracing](distributed-tracing-configuration.md) - [Collect distributed traces with custom logic](distributed-tracing-collection-walkthroughs.md#collect-traces-using-custom-logic) - [Adding custom distributed trace instrumentation](distributed-tracing-instrumentation-walkthroughs.md) diff --git a/docs/core/diagnostics/snippets/distributed-tracing-configuration/appsettings.json b/docs/core/diagnostics/snippets/distributed-tracing-configuration/appsettings.json new file mode 100644 index 0000000000000..2286350d8593c --- /dev/null +++ b/docs/core/diagnostics/snippets/distributed-tracing-configuration/appsettings.json @@ -0,0 +1,26 @@ +{ + "Tracing": { + "EnabledTracing": { + "Default": false, + "Contoso": true, + "Contoso.Orders": { + "Default": true, + "HealthCheck": false + }, + "Contoso.*.Storage": true + }, + "EnabledGlobalTracing": { + "System.Net.Http": true + }, + "EnabledLocalTracing": { + "Contoso.Workers": true + }, + "Console": { + "EnabledLocalTracing": { + "Contoso.Orders": { + "Submit": false + } + } + } + } +} diff --git a/docs/core/diagnostics/snippets/distributed-tracing-configuration/csharp/Program.cs b/docs/core/diagnostics/snippets/distributed-tracing-configuration/csharp/Program.cs new file mode 100644 index 0000000000000..803a6da837625 --- /dev/null +++ b/docs/core/diagnostics/snippets/distributed-tracing-configuration/csharp/Program.cs @@ -0,0 +1,52 @@ +// +using System.Diagnostics; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Diagnostics.Tracing; + +IConfigurationRoot configuration = new ConfigurationBuilder() + .AddInMemoryCollection(new Dictionary + { + ["Tracing:EnabledTracing:Default"] = "false", + ["Tracing:EnabledTracing:Contoso.Orders:Default"] = "true", + ["Tracing:EnabledTracing:Contoso.Orders:DisabledOperation"] = "false", + }) + .Build(); + +ServiceCollection services = new(); +services.AddTracing(tracing => +{ + tracing.AddListener("Console", listener => + { + listener.Sample = static (ref ActivityCreationOptions _) => + ActivitySamplingResult.AllData; + listener.SampleUsingParentId = static (ref ActivityCreationOptions _) => + ActivitySamplingResult.AllData; + listener.ActivityStarted = activity => + Console.WriteLine($"Listener started: {activity.OperationName}"); + }); + tracing.AddConfiguration(configuration.GetSection("Tracing")); +}); + +using ServiceProvider serviceProvider = services.BuildServiceProvider(); +ActivitySourceFactory factory = + serviceProvider.GetRequiredService(); +using ActivitySource source = factory.Create("Contoso.Orders"); + +Console.WriteLine("Before reload:"); +WriteResult(source, "EnabledOperation"); +WriteResult(source, "DisabledOperation"); + +configuration["Tracing:EnabledTracing:Contoso.Orders:DisabledOperation"] = "true"; +configuration.Reload(); + +Console.WriteLine("After reload:"); +WriteResult(source, "DisabledOperation"); + +static void WriteResult(ActivitySource source, string operationName) +{ + using Activity? activity = source.StartActivity(operationName); + string state = activity is null ? "disabled" : "enabled"; + Console.WriteLine($"{operationName}: {state}"); +} +// diff --git a/docs/core/diagnostics/snippets/distributed-tracing-configuration/csharp/TracingConfiguration.csproj b/docs/core/diagnostics/snippets/distributed-tracing-configuration/csharp/TracingConfiguration.csproj new file mode 100644 index 0000000000000..1cdbbe9eee51c --- /dev/null +++ b/docs/core/diagnostics/snippets/distributed-tracing-configuration/csharp/TracingConfiguration.csproj @@ -0,0 +1,14 @@ + + + + Exe + net11.0 + enable + enable + + + + + + + diff --git a/docs/core/diagnostics/snippets/distributed-tracing-configuration/vb/Program.vb b/docs/core/diagnostics/snippets/distributed-tracing-configuration/vb/Program.vb new file mode 100644 index 0000000000000..c7e811f7b2ac7 --- /dev/null +++ b/docs/core/diagnostics/snippets/distributed-tracing-configuration/vb/Program.vb @@ -0,0 +1,71 @@ +' +Imports System.Diagnostics +Imports Microsoft.Extensions.Configuration +Imports Microsoft.Extensions.DependencyInjection +Imports Microsoft.Extensions.Diagnostics.Tracing + +Module Program + Sub Main() + Dim initialData As New Dictionary(Of String, String) From { + {"Tracing:EnabledTracing:Default", "false"}, + {"Tracing:EnabledTracing:Contoso.Orders:Default", "true"}, + {"Tracing:EnabledTracing:Contoso.Orders:DisabledOperation", "false"} + } + + Dim configuration As IConfigurationRoot = + New ConfigurationBuilder().AddInMemoryCollection(initialData).Build() + + Dim services As New ServiceCollection() + services.AddTracing( + Sub(tracing) + tracing.AddListener( + "Console", + Sub(listener) + listener.Sample = AddressOf SampleActivity + listener.SampleUsingParentId = AddressOf SampleActivityUsingParentId + listener.ActivityStarted = + Sub(activity) Console.WriteLine( + $"Listener started: {activity.OperationName}") + End Sub) + tracing.AddConfiguration(configuration.GetSection("Tracing")) + End Sub) + + Using serviceProvider As ServiceProvider = services.BuildServiceProvider() + Dim factory As ActivitySourceFactory = + serviceProvider.GetRequiredService(Of ActivitySourceFactory)() + + Using source As ActivitySource = factory.Create("Contoso.Orders") + Console.WriteLine("Before reload:") + WriteResult(source, "EnabledOperation") + WriteResult(source, "DisabledOperation") + + configuration( + "Tracing:EnabledTracing:Contoso.Orders:DisabledOperation") = "true" + configuration.Reload() + + Console.WriteLine("After reload:") + WriteResult(source, "DisabledOperation") + End Using + End Using + End Sub + + Private Function SampleActivity( + ByRef options As ActivityCreationOptions(Of ActivityContext) + ) As ActivitySamplingResult + Return ActivitySamplingResult.AllData + End Function + + Private Function SampleActivityUsingParentId( + ByRef options As ActivityCreationOptions(Of String) + ) As ActivitySamplingResult + Return ActivitySamplingResult.AllData + End Function + + Private Sub WriteResult(source As ActivitySource, operationName As String) + Using activity As Activity = source.StartActivity(operationName) + Dim state As String = If(activity Is Nothing, "disabled", "enabled") + Console.WriteLine($"{operationName}: {state}") + End Using + End Sub +End Module +' diff --git a/docs/core/diagnostics/snippets/distributed-tracing-configuration/vb/TracingConfiguration.vbproj b/docs/core/diagnostics/snippets/distributed-tracing-configuration/vb/TracingConfiguration.vbproj new file mode 100644 index 0000000000000..58b602facb2ab --- /dev/null +++ b/docs/core/diagnostics/snippets/distributed-tracing-configuration/vb/TracingConfiguration.vbproj @@ -0,0 +1,16 @@ + + + + Exe + net11.0 + TracingConfiguration + On + On + On + + + + + + + diff --git a/docs/navigate/tools-diagnostics/toc.yml b/docs/navigate/tools-diagnostics/toc.yml index 00d0ddb079d2a..941a2f583fd2e 100644 --- a/docs/navigate/tools-diagnostics/toc.yml +++ b/docs/navigate/tools-diagnostics/toc.yml @@ -586,6 +586,8 @@ items: - name: Overview href: ../../core/diagnostics/distributed-tracing.md displayName: distributed tracing + - name: Configuration + href: ../../core/diagnostics/distributed-tracing-configuration.md - name: Concepts href: ../../core/diagnostics/distributed-tracing-concepts.md - name: Instrumentation From 1849a1ad230506569f38b3a64418d555aef8a124 Mon Sep 17 00:00:00 2001 From: Marc Paine Date: Mon, 19 Oct 2026 10:08:52 -0700 Subject: [PATCH 31/41] Update cli-tool-source.md with source option note (#56408) --- docs/core/tools/includes/cli-tool-source.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/core/tools/includes/cli-tool-source.md b/docs/core/tools/includes/cli-tool-source.md index 555b9e061227f..87b21b25546f5 100644 --- a/docs/core/tools/includes/cli-tool-source.md +++ b/docs/core/tools/includes/cli-tool-source.md @@ -5,3 +5,6 @@ ms.topic: include **`--source `** Specifies the source for NuGet packages. + +> [!CAUTION] +> This option completely replaces existing NuGet configuration, including Package Source Mapping. From 015d8a2f5ab6e2e2495a4f0aca3ba8e7fa5d909a Mon Sep 17 00:00:00 2001 From: Bill Wagner Date: Mon, 19 Oct 2026 13:20:41 -0400 Subject: [PATCH 32/41] Fix typo in union scaffolding section (#56454) The union types in C# 15 aren't discriminated unions. We shouldn't call them that. --- docs/core/whats-new/dotnet-11/overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/core/whats-new/dotnet-11/overview.md b/docs/core/whats-new/dotnet-11/overview.md index b88cf93eb17ca..5949ddd8a8e74 100644 --- a/docs/core/whats-new/dotnet-11/overview.md +++ b/docs/core/whats-new/dotnet-11/overview.md @@ -40,7 +40,7 @@ The .NET 11 libraries include new APIs for: - New numeric APIs, including IEEE 754 decimal floating-point types (, , and ), for delimiter-aware parsing, and generic . - System.Text.Json improvements, including C# and F# union support, JSON Lines (JSONL) output, expanded polymorphism and source generation, new naming and ignore controls, and built-in numeric converters and collection contracts. - Built-in OpenTelemetry metrics for . -- Discriminated-union scaffolding (`UnionAttribute` and `IUnion`) in . +- Union scaffolding (`UnionAttribute` and `IUnion`) in . - Tar archive format selection and GNU sparse format 1.0 support. - `Console` support for the `FORCE_COLOR` environment variable. - TLS handshake hardening, certificate-validation alerts on Linux, channel binding validation on Unix, and an experimental caller-driven TLS session API (`TlsBufferSession` and `TlsSocketSession`). From 6a9dfae8adfb1a0d54639400a45ad6cb949384b8 Mon Sep 17 00:00:00 2001 From: Jesse Squire Date: Mon, 19 Oct 2026 10:33:30 -0700 Subject: [PATCH 33/41] [CODEOWNERS] Replace Jesse with Jonathan (#56456) * [CODEOWNERS] Replace Jesse with Jonathan The focus of these changes is to change ownership of Azure SDK for .NET items from Jesse to Jonathan * Removing alexwolfmsft --- .github/CODEOWNERS | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index a49189804a887..51d43cbc463a9 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -70,28 +70,28 @@ ############### Azure ################ # Azure Guide -/docs/azure/ @alexwolfmsft @dotnet/docs +/docs/azure/ @dotnet/docs # Azure SDK package list /docs/azure/includes/ @dotnet/docs # Azure SDK catch-all entry -/docs/azure/sdk/ @jsquire @alexwolfmsft @dotnet/docs +/docs/azure/sdk/ @JonathanGiles @dotnet/docs # Azure SDK authentication topics -/docs/azure/sdk/authentication/ @JonathanCrd @dotnet/docs @alexwolfmsft +/docs/azure/sdk/authentication/ @JonathanCrd @dotnet/docs # Azure SDK miscellaneous topics -/docs/azure/sdk/azure-sdk-configure-proxy.md @JoshLove-msft @jsquire @alexwolfmsft @dotnet/docs -/docs/azure/sdk/azure-sdk-for-net.md @jsquire @alexwolfmsft @dotnet/docs -/docs/azure/sdk/dependency-injection.md @JoshLove-msft @jsquire @alexwolfmsft @m-nash @dotnet/docs -/docs/azure/sdk/logging.md @JoshLove-msft @jsquire @alexwolfmsft @dotnet/docs -/docs/azure/sdk/packages.md @jsquire @alexwolfmsft @dotnet/docs -/docs/azure/sdk/pagination.md @JoshLove-msft @jsquire @alexwolfmsft @dotnet/docs -/docs/azure/sdk/protocol-convenience-methods.md @jsquire @alexwolfmsft @dotnet/docs -/docs/azure/sdk/resource-management.md @ArthurMa1978 @m-nash @alexwolfmsft @dotnet/docs -/docs/azure/sdk/thread-safety.md @JoshLove-msft @jsquire @alexwolfmsft @dotnet/docs -/docs/azure/sdk/unit-testing-mocking.md @JoshLove-msft @jsquire @alexwolfmsft @dotnet/docs +/docs/azure/sdk/azure-sdk-configure-proxy.md @JoshLove-msft @JonathanGiles @dotnet/docs +/docs/azure/sdk/azure-sdk-for-net.md @JonathanGiles @dotnet/docs +/docs/azure/sdk/dependency-injection.md @JoshLove-msft @JonathanGiles @m-nash @dotnet/docs +/docs/azure/sdk/logging.md @JoshLove-msft @JonathanGiles @dotnet/docs +/docs/azure/sdk/packages.md @JonathanGiles @dotnet/docs +/docs/azure/sdk/pagination.md @JoshLove-msft @JonathanGiles @dotnet/docs +/docs/azure/sdk/protocol-convenience-methods.md @JonathanGiles @dotnet/docs +/docs/azure/sdk/resource-management.md @ArthurMa1978 @m-nash @dotnet/docs +/docs/azure/sdk/thread-safety.md @JoshLove-msft @JonathanGiles @dotnet/docs +/docs/azure/sdk/unit-testing-mocking.md @JoshLove-msft @JonathanGiles @dotnet/docs ############### Fundamentals ################ From 7a5a9cf8549d2356a135e1686949f4f205cc4843 Mon Sep 17 00:00:00 2001 From: Bill Wagner Date: Mon, 19 Oct 2026 16:04:15 -0400 Subject: [PATCH 34/41] Start on building fundamentals sections (#56333) * First draft to create a new section First draft of next set of work. * Clarify descriptions in iterator and local functions articles Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * 2nd draft Draft created after first complete review. * Yet another draft. I think this one is getting better. * Apply batched suggestions from code review Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com> * Apply suggestion from @gewarren --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com> --- .openpublishing.redirection.csharp.json | 30 +- .../advanced-topics/expression-trees/index.md | 2 +- .../fundamentals/building-software/index.md | 53 +++ .../building-software/iterators.md | 95 +++++ .../fundamentals/building-software/lambdas.md | 122 ++++++ .../building-software/local-functions.md | 97 +++++ .../snippets/iterators/Program.cs | 33 ++ .../snippets/iterators/iterators.csproj | 3 +- .../snippets/lambdas/Program.cs | 49 +++ .../snippets/lambdas/lambdas.csproj | 11 + .../snippets/local-functions/Program.cs | 67 ++++ .../local-functions/local-functions.csproj | 5 +- .../snippets/overview/Program.cs | 42 +++ .../snippets/overview/overview.csproj | 11 + .../tutorials/system-command-line.md | 4 +- .../fundamentals/types/delegates-lambdas.md | 1 + docs/csharp/iterators.md | 177 --------- .../builtin-types/collections.md | 2 +- .../builtin-types/ref-struct.md | 4 +- .../language-reference/builtin-types/void.md | 2 +- .../expression-tree-restrictions.md | 2 +- .../compiler-messages/foreach-diagnostics.md | 2 +- .../lambda-expression-errors.md | 4 +- .../local-function-errors.md | 4 +- .../compiler-messages/ref-modifiers-errors.md | 4 +- .../language-reference/keywords/static.md | 2 +- .../operators/lambda-expressions.md | 2 +- .../operators/lambda-operator.md | 2 +- .../exception-handling-statements.md | 2 +- .../statements/iteration-statements.md | 2 +- .../language-reference/statements/yield.md | 5 +- docs/csharp/methods.md | 2 +- .../classes-and-structs/local-functions.md | 169 --------- .../classes-and-structs/methods.md | 2 +- .../local-functions/IteratorWithLocal.cs | 39 -- .../local-functions/IteratorWithoutLocal.cs | 35 -- .../snippets/local-functions/Program.cs | 141 ------- .../programming-guide/concepts/index.md | 2 +- .../programming-guide/concepts/iterators.md | 357 ------------------ docs/csharp/snippets/iterators/Generators.cs | 126 ------- docs/csharp/snippets/iterators/Program.cs | 60 --- docs/csharp/toc.yml | 16 +- .../tips-for-java-developers.md | 2 +- .../tips-for-javascript-developers.md | 2 +- docs/csharp/tutorials/working-with-linq.md | 2 +- .../whats-new/csharp-version-history.md | 6 +- .../code-analysis/style-rules/ide0039.md | 2 +- .../code-analysis/style-rules/ide0061.md | 2 +- .../code-analysis/style-rules/ide0062.md | 2 +- docs/samples-and-tutorials/index.md | 2 +- .../how-to-speed-up-small-loop-bodies.md | 2 +- 51 files changed, 660 insertions(+), 1152 deletions(-) create mode 100644 docs/csharp/fundamentals/building-software/index.md create mode 100644 docs/csharp/fundamentals/building-software/iterators.md create mode 100644 docs/csharp/fundamentals/building-software/lambdas.md create mode 100644 docs/csharp/fundamentals/building-software/local-functions.md create mode 100644 docs/csharp/fundamentals/building-software/snippets/iterators/Program.cs rename docs/csharp/{ => fundamentals/building-software}/snippets/iterators/iterators.csproj (80%) create mode 100644 docs/csharp/fundamentals/building-software/snippets/lambdas/Program.cs create mode 100644 docs/csharp/fundamentals/building-software/snippets/lambdas/lambdas.csproj create mode 100644 docs/csharp/fundamentals/building-software/snippets/local-functions/Program.cs rename docs/csharp/{programming-guide/classes-and-structs => fundamentals/building-software}/snippets/local-functions/local-functions.csproj (55%) create mode 100644 docs/csharp/fundamentals/building-software/snippets/overview/Program.cs create mode 100644 docs/csharp/fundamentals/building-software/snippets/overview/overview.csproj delete mode 100644 docs/csharp/iterators.md delete mode 100644 docs/csharp/programming-guide/classes-and-structs/local-functions.md delete mode 100644 docs/csharp/programming-guide/classes-and-structs/snippets/local-functions/IteratorWithLocal.cs delete mode 100644 docs/csharp/programming-guide/classes-and-structs/snippets/local-functions/IteratorWithoutLocal.cs delete mode 100644 docs/csharp/programming-guide/classes-and-structs/snippets/local-functions/Program.cs delete mode 100644 docs/csharp/programming-guide/concepts/iterators.md delete mode 100644 docs/csharp/snippets/iterators/Generators.cs delete mode 100644 docs/csharp/snippets/iterators/Program.cs diff --git a/.openpublishing.redirection.csharp.json b/.openpublishing.redirection.csharp.json index e2727bba8d563..5f00a9065e869 100644 --- a/.openpublishing.redirection.csharp.json +++ b/.openpublishing.redirection.csharp.json @@ -88,6 +88,22 @@ "source_path_from_root": "/docs/csharp/fundamentals/functional/discards.md", "redirect_url": "/dotnet/csharp/fundamentals/patterns/discards" }, + { + "source_path_from_root": "/docs/csharp/fundamentals/functional/index.md", + "redirect_url": "/dotnet/csharp/fundamentals/building-software/index" + }, + { + "source_path_from_root": "/docs/csharp/fundamentals/functional/iterators.md", + "redirect_url": "/dotnet/csharp/fundamentals/building-software/iterators" + }, + { + "source_path_from_root": "/docs/csharp/fundamentals/functional/lambdas.md", + "redirect_url": "/dotnet/csharp/fundamentals/building-software/lambdas" + }, + { + "source_path_from_root": "/docs/csharp/fundamentals/functional/local-functions.md", + "redirect_url": "/dotnet/csharp/fundamentals/building-software/local-functions" + }, { "source_path_from_root": "/docs/csharp/fundamentals/functional/pattern-matching.md", "redirect_url": "/dotnet/csharp/fundamentals/patterns/pattern-matching" @@ -242,6 +258,10 @@ "source_path_from_root": "/docs/csharp/interop.md", "redirect_url": "/dotnet/csharp/advanced-topics/interop/index" }, + { + "source_path_from_root": "/docs/csharp/iterators.md", + "redirect_url": "/dotnet/csharp/fundamentals/building-software/iterators" + }, { "source_path_from_root": "/docs/csharp/lambda-expressions.md", "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" @@ -1822,7 +1842,7 @@ }, { "source_path_from_root": "/docs/csharp/local-functions-vs-lambdas.md", - "redirect_url": "/dotnet/csharp/programming-guide/classes-and-structs/local-functions" + "redirect_url": "/dotnet/csharp/fundamentals/building-software/local-functions" }, { "source_path_from_root": "/docs/csharp/methods-lambda-expressions.md", @@ -3472,6 +3492,10 @@ "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/inheritance.md", "redirect_url": "/dotnet/csharp/fundamentals/object-oriented/inheritance" }, + { + "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/local-functions.md", + "redirect_url": "/dotnet/csharp/fundamentals/building-software/local-functions" + }, { "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/objects.md", "redirect_url": "/dotnet/csharp/fundamentals/object-oriented/objects" @@ -3667,6 +3691,10 @@ "source_path_from_root": "/docs/csharp/programming-guide/concepts/expression-trees/index.md", "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/index" }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/iterators.md", + "redirect_url": "/dotnet/csharp/fundamentals/building-software/iterators" + }, { "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/adding-elements-attributes-and-nodes-to-an-xml-tree.md", "redirect_url": "/dotnet/standard/linq/add-elements-attributes-nodes-xml-tree", diff --git a/docs/csharp/advanced-topics/expression-trees/index.md b/docs/csharp/advanced-topics/expression-trees/index.md index c305d240df990..9eccdcdfa6475 100644 --- a/docs/csharp/advanced-topics/expression-trees/index.md +++ b/docs/csharp/advanced-topics/expression-trees/index.md @@ -47,7 +47,7 @@ Expression trees don't support new expression node types. It would be a breaking - [Conditional methods](../../language-reference/preprocessor-directives.md#conditional-compilation) removed from the output - [`base` access](../../language-reference/keywords/base.md) - Method group expressions, including [*address-of* (`&`)](../../language-reference/operators/pointer-related-operators.md) a method group, and anonymous method expressions -- References to [local functions](../../programming-guide/classes-and-structs/local-functions.md) +- References to [local functions](../../fundamentals/building-software/local-functions.md) - Statements, including assignment (`=`) and statement bodied expressions - [Partial methods](../../language-reference/keywords/partial-member.md) with only a defining declaration - [Unsafe pointer operations](../../language-reference/unsafe-code.md#pointer-types) diff --git a/docs/csharp/fundamentals/building-software/index.md b/docs/csharp/fundamentals/building-software/index.md new file mode 100644 index 0000000000000..42e4e47e87098 --- /dev/null +++ b/docs/csharp/fundamentals/building-software/index.md @@ -0,0 +1,53 @@ +--- +title: "Building software" +description: Compare valid approaches to C# algorithms and understand how code communicates design intent to developers and coding agents. +ms.date: 10/15/2026 +ms.topic: overview +ai-usage: ai-generated +--- + +# Build software + +Often several algorithms or implementations can solve the same task correctly. The code you choose communicates a design. Developers and coding agents who read your code use its structure to infer your intent: what each operation needs, where it belongs, and when it runs. + +> [!TIP] +> This article is part of the **Fundamentals** section for developers who know basic C# expressions, statements, and methods. If you're new to programming, start with the [Get started](../../tour-of-csharp/tutorials/index.md) tutorials first. + +This section compares valid approaches to algorithms and explains subtle differences in their behavior and how readers interpret them. You'll combine familiar language elements, such as types, expressions, statements, and methods, and choose forms that communicate the design you intend. + +## Compare behavior and design intent + +Before choosing an implementation, consider how other code will use it. That code is the *caller*: it supplies inputs, invokes your operation, and uses the results. Does it need a completed result immediately, or can it process values one at a time? Is a helper part of this operation alone, or will other operations use it too? These questions help you compare both the behavior you need and the design your code communicates. + +A short inline operation shows readers the steps at the point of use. For example, `Where(task => task.Priority > 3)` makes the filtering rule immediately visible. A named helper, as in `Where(IsUrgent)`, emphasizes the rule's purpose and lets readers inspect its details separately. Choose based on whether the steps or their purpose best explain the surrounding code. + +Where you declare a helper communicates its intended scope. A local function inside `ShowDashboard` indicates that the helper belongs to that operation and prevents other members from calling it. A private method on the containing type makes the helper available to other members, suggesting that you expect reuse elsewhere in the type. Both can organize the same calculation, but they lead readers to different expectations about its role. + +How you supply a helper's inputs communicates its dependencies. Passing a limit as a parameter, such as `IsUrgent(task, minimumPriority)`, makes that input visible at each call. A local function or lambda can instead *capture* `minimumPriority`, using the variable from its surrounding scope without receiving it as an argument. Capture connects the helper to the containing operation's context; explicit parameters make the supplied data easier to identify. Use a `static` local function or lambda when you want to enforce that it doesn't capture surrounding state. + +How you return results communicates when the work happens. A method that builds and returns a collection completes that work before the caller receives the collection. An iterator produces elements as the caller requests them, so the caller can stop before all elements are produced. Both might produce the same values, but callers need to understand whether they're receiving completed results or a sequence whose computation still lies ahead. + +For each choice, first identify the behavior the calling code needs. Then consider what another developer or coding agent will infer from the name, scope, inputs, and result. Choose a form that makes those expectations match your design, and explain important behavior that the code's shape alone doesn't reveal. The goal is to make a deliberate choice between valid alternatives, not to apply one form everywhere. + +## Read design choices in an example + +The following example illustrates how several choices communicate different parts of a design. It displays tasks that are urgent and ready to start. A `ProjectTask` holds a task's title, priority, and blocked status. + +:::code language="csharp" source="snippets/overview/Program.cs" id="CombineTechniques"::: + +Each choice keeps a different part of the work clear: + +- The lambda passed to `Where` puts a short priority rule beside the operation that uses it. +- The local function `FormatTask` names a formatting step that belongs only to `ShowDashboard`. +- The iterator `ReadyTasks` lets callers consume ready tasks without creating an intermediate collection. +- The `foreach` loop makes the final action, writing each result, explicit. + +For comparison, `Where(static task => !task.IsBlocked)` could replace `ReadyTasks` because this readiness test is a simple filter. Both forms defer the filter until enumeration. The lambda puts the rule at the call site; `ReadyTasks` gives the rule a name. Choose between them based on which information helps readers understand the caller. + +The articles that follow use comparisons like these to explain when each approach fits and what readers can infer from your choice. + +## Next steps + +- [Pass behavior with lambda expressions](lambdas.md) +- [Organize helper logic with local functions](local-functions.md) +- [Produce sequences with iterators](iterators.md) diff --git a/docs/csharp/fundamentals/building-software/iterators.md b/docs/csharp/fundamentals/building-software/iterators.md new file mode 100644 index 0000000000000..9417c25d0b1b1 --- /dev/null +++ b/docs/csharp/fundamentals/building-software/iterators.md @@ -0,0 +1,95 @@ +--- +title: "Iterators" +description: Learn how C# iterator methods produce IEnumerable sequences with yield return and yield break for use with foreach. +ms.date: 10/15/2026 +ms.topic: concept-article +ai-usage: ai-generated +--- + +# Iterators + +Choose an iterator when you want to return a sequence whose elements callers can consume one at a time, without first building the complete result in a collection. This approach fits generated values, filters with custom control flow, and sequences that callers might stop reading early. Compared with a completed collection, an iterator changes when the work happens, not just how you write it. + +> [!TIP] +> This article teaches synchronous iterators for developers who know methods, loops, and collections. For complete `yield` syntax and restrictions, see the [`yield` statement reference](../../language-reference/statements/yield.md). + +An *iterator method* produces a sequence of values one at a time. This article focuses on iterator methods that return , whose values callers usually consume with a `foreach` statement. + +## Produce elements with `yield return` + +Use `yield return` to provide the next element in the sequence. The following iterator selects acceptable temperature readings from a sensor. In this scenario, `-1` marks the end of the sensor data. + +:::code language="csharp" source="snippets/iterators/Program.cs" id="IteratorMethod"::: + +`SelectTemperatures` returns `IEnumerable`, which represents a sequence of `int` values. Each `yield return reading` provides one value to the `foreach` loop. After the caller handles that value, the iterator continues with the next input. + +Use the generic `IEnumerable` form for most modern C# code. The type argument, such as `int`, tells callers which element type the sequence contains. + +## End the sequence with `yield break` + +Use `yield break` to end an iterator before control reaches the end of the method. In the example, the sentinel value `-1` means that no more readings are available: + +```csharp +if (reading == -1) +{ + yield break; +} +``` + +The iterator also ends naturally when execution reaches the end of its body. Use `yield break` when a condition should stop element production immediately. + +## Consume an iterator with `foreach` + +An iterator exposes the same `IEnumerable` shape as many .NET collections. Callers can use `foreach` without knowing how the sequence produces its elements: + +```csharp +foreach (int temperature in SelectTemperatures(readings, 25)) +{ + Console.WriteLine($"Accepted: {temperature}°C"); +} +``` + +The caller requests each element as the loop advances. The iterator keeps its position between requests and continues after the previous `yield return`. + +## Understand deferred element production + +Calling an iterator method doesn't run its body immediately. The method starts to produce elements when the caller begins enumeration. This behavior is called *deferred execution*. + +The example prints `Sequence created.` before any `Checking ...` messages. The iterator starts checking readings only when the `foreach` loop asks for its first element. + +Deferred execution has practical effects: + +- The caller can begin processing before the iterator produces every element. +- The iterator can stop early with `yield break`. +- A caller that never enumerates the sequence doesn't run the iterator body. +- Each new enumeration runs the iterator again. + +Make deferred execution clear in the method's purpose and documentation. Readers can't infer execution timing from `IEnumerable` alone because both iterators and collections can expose that interface. Keep element production free of unrelated side effects because callers might enumerate the sequence later or more than once. The example's diagnostic messages illustrate that timing. + +## Choose an iterator or collection + +Return an iterator when values naturally arrive one at a time or when the caller doesn't need the complete result immediately. Return a completed collection when callers need a stable snapshot, indexed access, or repeated enumeration without recalculating the elements. + +Both approaches can return the same elements. The iterator leaves element production under the caller's control; a method that builds a collection completes that work before it returns. + +Use an ordinary loop when you want to perform an action for each item without returning a sequence. For a standard filter or transformation, prefer a LINQ operation such as `Where` or `Select`; write an iterator when custom element-production logic is clearer as a series of statements. + +Iterator methods compose with LINQ because both use `IEnumerable`. For example, a caller can add another filter: + +```csharp +var comfortableReadings = SelectTemperatures(readings, 25) + .Where(static temperature => temperature >= 18); +``` + +The iterator and LINQ operation remain deferred until code enumerates `comfortableReadings`. + +For asynchronous sequences, see [Generate and consume asynchronous streams](../../asynchronous-programming/generate-consume-asynchronous-stream.md). For custom enumeration patterns and all `yield` restrictions, use the [language reference](../../language-reference/statements/yield.md). + +## See also + +- [Building software](index.md) +- [Lambda expressions](lambdas.md) +- [Local functions](local-functions.md) +- [`foreach` statement](../../language-reference/statements/iteration-statements.md#the-foreach-statement) +- [`yield` statement](../../language-reference/statements/yield.md) +- [LINQ](../statements/linq.md) diff --git a/docs/csharp/fundamentals/building-software/lambdas.md b/docs/csharp/fundamentals/building-software/lambdas.md new file mode 100644 index 0000000000000..98d432e93c125 --- /dev/null +++ b/docs/csharp/fundamentals/building-software/lambdas.md @@ -0,0 +1,122 @@ +--- +title: "Lambda expressions" +description: Learn how to pass behavior with C# lambda expressions, write parameter and body forms, capture variables, and choose between lambdas, method groups, and local functions. +ms.date: 10/15/2026 +ms.topic: concept-article +ai-usage: ai-generated +--- + +# Lambda expressions + +Choose a lambda expression when you want to pass a short operation to another method and the operation is clearest beside the call that uses it. An inline rule shows readers how you select or transform items; a named method lets them follow the operation's purpose before they inspect its details. + +> [!TIP] +> This article teaches practical choices for developers who know C# methods and collections. For the complete lambda syntax and rules, see the [lambda expressions reference](../../language-reference/operators/lambda-expressions.md). + +A *lambda expression* is an unnamed function that you write where another piece of code needs behavior. + +The following lambda accepts a session and returns whether the session has open seats: + +```csharp +session => session.Registered < session.Capacity +``` + +The `=>` operator separates the parameters on the left from the body on the right. Read it as "goes to." + +## Pass behavior to a method + +Many .NET APIs accept a delegate, which is a type that represents behavior with a particular parameter list and return type. A lambda provides that behavior. For an introduction to delegate types such as `Func` and `Action`, see [Lambda expressions, delegates, and events](../types/delegates-lambdas.md). + +The following example works with workshop sessions. A `WorkshopSession` contains a title, duration, capacity, and registration count. + +:::code language="csharp" source="snippets/lambdas/Program.cs" id="PassBehavior"::: + +The first lambda tells `Where` which sessions to keep. The second tells `OrderBy` which value to sort by. The methods receive behavior without knowing the details of either rule. + +## Choose a parameter form + +Choose the shortest parameter form that stays clear: + +```csharp +session => session.DurationMinutes <= 60 +``` + +For one parameter, omit parentheses when the compiler can infer the type. Use empty parentheses for no parameters: + +```csharp +() => DateTime.Now +``` + +Use parentheses for two or more parameters: + +```csharp +(left, right) => left + right +``` + +Usually, the method that receives the lambda supplies enough information for the compiler to infer parameter types. Write explicit types when inference needs help or when the types improve clarity: + +```csharp +(WorkshopSession session) => session.Title +``` + +The [lambda expressions reference](../../language-reference/operators/lambda-expressions.md#input-parameters-of-a-lambda-expression) covers parameter modifiers, attributes, default values, and other specialized forms. + +## Choose an expression or statement body + +Use an *expression lambda* when one expression calculates the result: + +```csharp +session => session.Registered < session.Capacity +``` + +Use a *statement lambda* when the operation needs more than one statement. Enclose the body in braces, and include `return` when the lambda returns a value: + +:::code language="csharp" source="snippets/lambdas/Program.cs" id="StatementBody"::: + +Keep statement lambdas brief. When the body needs several steps or the same logic appears more than once, give the behavior a descriptive name with a local function or regular method. + +## Capture values from the surrounding scope + +A lambda can use a variable declared in the surrounding method. This use is called *capture*. In the first example, the selection lambda captures `maximumMinutes`: + +```csharp +int maximumMinutes = 60; +var shortSessions = sessions.Where( + session => session.DurationMinutes <= maximumMinutes); +``` + +Capture helps a short rule use local context. The lambda captures the variable itself, not a copy of its value. If the variable changes before the lambda runs, the lambda sees the current value. + +Make the needed context easy to identify. If a lambda doesn't need surrounding state, add `static` to prevent accidental capture and make that independence visible to readers: + +```csharp +var openSessions = sessions.Where( + static session => session.Registered < session.Capacity); +``` + +A static lambda can use its parameters, values it declares, constants, and static members. It can't use local variables or instance state from the surrounding code. + +## Choose a lambda, method group, or local function + +Several C# forms can supply behavior to a delegate parameter: + +- Use a **lambda expression** for short behavior that reads clearly beside the call. +- Use a **method group** when an existing method has the required signature and its name explains the behavior. +- Use a **local function** when the containing member needs reusable named logic, recursion, or a body that's too large for an inline lambda. +- Use a **regular method** when multiple members need the behavior. + +A *method group* is a method name without its argument list. The compiler converts the matching method to the required delegate type: + +:::code language="csharp" source="snippets/lambdas/Program.cs" id="MethodGroup"::: + +`Where(HasOpenSeats)` communicates the same rule as `Where(session => HasOpenSeats(session))` with less code. The method name tells readers what the rule tests; an inline comparison shows how it tests that rule. Keep the lambda wrapper when it adds an argument, combines operations, or makes the call clearer. + +For a detailed local comparison, see [Local functions](local-functions.md#choose-a-local-function-or-lambda-expression). + +## See also + +- [Building software](index.md) +- [Local functions](local-functions.md) +- [Lambda expressions reference](../../language-reference/operators/lambda-expressions.md) +- [Lambda expressions, delegates, and events](../types/delegates-lambdas.md) +- [LINQ](../statements/linq.md) diff --git a/docs/csharp/fundamentals/building-software/local-functions.md b/docs/csharp/fundamentals/building-software/local-functions.md new file mode 100644 index 0000000000000..7680c44ee186e --- /dev/null +++ b/docs/csharp/fundamentals/building-software/local-functions.md @@ -0,0 +1,97 @@ +--- +title: "Local functions" +description: Learn how C# local functions keep named helper logic near its caller, capture local state, and support recursion. +ms.date: 10/15/2026 +ms.topic: concept-article +ai-usage: ai-generated +--- + +# Local functions + +Choose a local function when you want to give helper logic a descriptive name and only one member needs that helper. Compared with a method on the containing type, a local function tells readers that the helper belongs to this operation. Its name lets readers follow the main flow before they inspect the details. + +> [!TIP] +> This article teaches practical use of local functions for developers who know how to write methods. For declaration details and diagnostic rules, see [Local function declarations](~/_csharpstandard/standard/statements.md#1364-local-function-declarations). + +A *local function* is a named function declared inside another member, such as a method or constructor. Its name is in scope only within that member. + +The following shape declares and calls a local function: + +```csharp +string CreateMessage(string name) +{ + return AddGreeting(name); + + string AddGreeting(string value) => $"Hello, {value}!"; +} +``` + +`AddGreeting` stays inside `CreateMessage`. Other members of the type can't call it. + +## Keep helper logic near its caller + +Local functions let the main flow state what happens while helper functions explain individual steps. The following example creates a reading plan. It uses a local function to add one week's assignment at a time. + +:::code language="csharp" source="snippets/local-functions/Program.cs" id="NearbyHelper"::: + +A `ReadingWeek` records a week number and the range of chapters assigned for that week. `AddWeek` belongs only to `CreateReadingPlan`, so its local scope communicates that relationship. + +You can declare a local function before or after the statements that call it. Place it where readers can follow the main flow without losing context. + +## Use parameters or capture local state + +A non-static local function can use parameters and local variables from its containing member. This use is called *capture*. In the reading-plan example, `AddWeek` captures: + +- `bookTitle`, `chapterCount`, and `chaptersPerWeek` from the `CreateReadingPlan` parameters. +- `plan` from a local variable. + +Capture is useful when the helper naturally belongs to the surrounding operation. Keep the captured values few and obvious. If the helper can receive all its data through parameters, consider a `static` local function: + +```csharp +static int LastChapter(int firstChapter, int chaptersPerWeek, int chapterCount) => + Math.Min(firstChapter + chaptersPerWeek - 1, chapterCount); +``` + +A static local function can't capture local variables, parameters, or instance state from the containing member. Its parameters make the supplied data explicit, while capture lets a helper use the context of its containing operation. + +## Use recursion when the problem repeats itself + +*Recursion* occurs when a function calls itself with a smaller part of the problem. `AddWeek` in the example adds one week, then calls itself with the first chapter for the next week. + +Every recursive function needs a condition that stops the calls. `AddWeek` stops when `firstChapter` exceeds `chapterCount`: + +```csharp +if (firstChapter > chapterCount) +{ + return; +} +``` + +Local functions work well for recursion because their names are in scope throughout the containing member. Prefer a loop when it expresses the repeated work more directly. Choose recursion when the recursive structure makes the algorithm easier to understand. + +## Choose a local function or lambda expression + +Local functions and lambda expressions can both use surrounding variables, but they communicate different intent: + +| Choose | When | +| --- | --- | +| Local function | The helper benefits from a name, has several statements, needs recursion, or is called from more than one place in the containing member. | +| Lambda expression | You pass short behavior directly to another method or store it in a delegate variable. | + +The following code uses both forms: + +:::code language="csharp" source="snippets/local-functions/Program.cs" id="LocalAndLambda"::: + +`IsShortWeek` gives the rule passed to `Where` a descriptive name. The lambda passed to `Select` performs one short transformation at its point of use. Both forms supply behavior to another method here. A local function can also be a helper you call directly, as `AddWeek` is in the reading-plan example. + +Use a regular method instead of a local function when several members need the helper. Use a lambda instead when the behavior is short and its purpose is clear from the receiving method. + +Local functions can also be iterator functions that contain `yield return`. For that use, see [Iterators](iterators.md). + +## See also + +- [Building software](index.md) +- [Lambda expressions](lambdas.md) +- [Methods](../../methods.md) +- [Local function compiler diagnostics](../../language-reference/compiler-messages/local-function-errors.md) +- [Use local function instead of lambda (style rule IDE0039)](../../../fundamentals/code-analysis/style-rules/ide0039.md) diff --git a/docs/csharp/fundamentals/building-software/snippets/iterators/Program.cs b/docs/csharp/fundamentals/building-software/snippets/iterators/Program.cs new file mode 100644 index 0000000000000..d7f97444cc8c2 --- /dev/null +++ b/docs/csharp/fundamentals/building-software/snippets/iterators/Program.cs @@ -0,0 +1,33 @@ +// +int[] readings = [21, 27, 24, -1, 19]; + +IEnumerable acceptedReadings = + SelectTemperatures(readings, maximum: 25); + +Console.WriteLine("Sequence created."); + +foreach (int temperature in acceptedReadings) +{ + Console.WriteLine($"Accepted: {temperature}°C"); +} + +static IEnumerable SelectTemperatures( + IEnumerable readings, + int maximum) +{ + foreach (int reading in readings) + { + Console.WriteLine($"Checking {reading}°C"); + + if (reading == -1) + { + yield break; + } + + if (reading <= maximum) + { + yield return reading; + } + } +} +// diff --git a/docs/csharp/snippets/iterators/iterators.csproj b/docs/csharp/fundamentals/building-software/snippets/iterators/iterators.csproj similarity index 80% rename from docs/csharp/snippets/iterators/iterators.csproj rename to docs/csharp/fundamentals/building-software/snippets/iterators/iterators.csproj index f704bf4988fa6..6bd724ac1a4bf 100644 --- a/docs/csharp/snippets/iterators/iterators.csproj +++ b/docs/csharp/fundamentals/building-software/snippets/iterators/iterators.csproj @@ -2,9 +2,10 @@ Exe - net8.0 + net10.0 enable enable + diff --git a/docs/csharp/fundamentals/building-software/snippets/lambdas/Program.cs b/docs/csharp/fundamentals/building-software/snippets/lambdas/Program.cs new file mode 100644 index 0000000000000..960a8469e5d8d --- /dev/null +++ b/docs/csharp/fundamentals/building-software/snippets/lambdas/Program.cs @@ -0,0 +1,49 @@ +var sessions = new[] +{ + new WorkshopSession("Build a tiny game", 60, 20, 18), + new WorkshopSession("Explore cloud architecture", 90, 30, 22), + new WorkshopSession("Debug with confidence", 45, 16, 16), +}; + +// +int maximumMinutes = 60; + +var shortSessions = sessions + .Where(session => session.DurationMinutes <= maximumMinutes) + .OrderBy(session => session.Title); + +foreach (WorkshopSession session in shortSessions) +{ + Console.WriteLine(session.Title); +} +// + +// +var descriptions = sessions.Select(session => +{ + int seatsLeft = session.Capacity - session.Registered; + string availability = seatsLeft > 0 ? $"{seatsLeft} seats left" : "full"; + return $"{session.Title}: {availability}"; +}); + +Console.WriteLine(string.Join(Environment.NewLine, descriptions)); +// + +// +var openSessions = sessions.Where(HasOpenSeats); + +foreach (WorkshopSession session in openSessions) +{ + Console.WriteLine($"Open: {session.Title}"); +} + +static bool HasOpenSeats(WorkshopSession session) => + session.Registered < session.Capacity; +// + +record WorkshopSession( + string Title, + int DurationMinutes, + int Capacity, + int Registered); + diff --git a/docs/csharp/fundamentals/building-software/snippets/lambdas/lambdas.csproj b/docs/csharp/fundamentals/building-software/snippets/lambdas/lambdas.csproj new file mode 100644 index 0000000000000..6bd724ac1a4bf --- /dev/null +++ b/docs/csharp/fundamentals/building-software/snippets/lambdas/lambdas.csproj @@ -0,0 +1,11 @@ + + + + Exe + net10.0 + enable + enable + + + + diff --git a/docs/csharp/fundamentals/building-software/snippets/local-functions/Program.cs b/docs/csharp/fundamentals/building-software/snippets/local-functions/Program.cs new file mode 100644 index 0000000000000..4eb1d1d8fdd86 --- /dev/null +++ b/docs/csharp/fundamentals/building-software/snippets/local-functions/Program.cs @@ -0,0 +1,67 @@ +// +IReadOnlyList plan = + CreateReadingPlan("The Long Way Home", chapterCount: 10, chaptersPerWeek: 3); + +foreach (ReadingWeek week in plan) +{ + Console.WriteLine( + $"Week {week.Number}: {week.BookTitle}, chapters {week.FirstChapter}-{week.LastChapter}"); +} + +static IReadOnlyList CreateReadingPlan( + string bookTitle, + int chapterCount, + int chaptersPerWeek) +{ + var plan = new List(); + AddWeek(firstChapter: 1); + return plan; + + void AddWeek(int firstChapter) + { + if (firstChapter > chapterCount) + { + return; + } + + int lastChapter = Math.Min( + firstChapter + chaptersPerWeek - 1, + chapterCount); + + plan.Add(new ReadingWeek( + plan.Count + 1, + bookTitle, + firstChapter, + lastChapter)); + + AddWeek(lastChapter + 1); + } +} +// + +// +static IEnumerable DescribeShortWeeks( + IEnumerable plan, + int maximumChapters) +{ + return plan + .Where(IsShortWeek) + .Select(week => $"Week {week.Number}: {week.FirstChapter}-{week.LastChapter}"); + + bool IsShortWeek(ReadingWeek week) => + week.LastChapter - week.FirstChapter + 1 <= maximumChapters; +} + +Console.WriteLine("Short weeks:"); +foreach (string description in DescribeShortWeeks(plan, maximumChapters: 2)) +{ + Console.WriteLine(description); +} +// + +record ReadingWeek( + int Number, + string BookTitle, + int FirstChapter, + int LastChapter); + diff --git a/docs/csharp/programming-guide/classes-and-structs/snippets/local-functions/local-functions.csproj b/docs/csharp/fundamentals/building-software/snippets/local-functions/local-functions.csproj similarity index 55% rename from docs/csharp/programming-guide/classes-and-structs/snippets/local-functions/local-functions.csproj rename to docs/csharp/fundamentals/building-software/snippets/local-functions/local-functions.csproj index da9773c921219..6bd724ac1a4bf 100644 --- a/docs/csharp/programming-guide/classes-and-structs/snippets/local-functions/local-functions.csproj +++ b/docs/csharp/fundamentals/building-software/snippets/local-functions/local-functions.csproj @@ -2,11 +2,10 @@ Exe - net8.0 + net10.0 enable enable - local_functions - local_functions.Program + diff --git a/docs/csharp/fundamentals/building-software/snippets/overview/Program.cs b/docs/csharp/fundamentals/building-software/snippets/overview/Program.cs new file mode 100644 index 0000000000000..c1124cf0c4ca6 --- /dev/null +++ b/docs/csharp/fundamentals/building-software/snippets/overview/Program.cs @@ -0,0 +1,42 @@ +// +var tasks = new[] +{ + new ProjectTask("Confirm venue", Priority: 3, IsBlocked: false), + new ProjectTask("Print badges", Priority: 2, IsBlocked: true), + new ProjectTask("Test microphones", Priority: 2, IsBlocked: false), +}; + +ShowDashboard("Community meetup", tasks, minimumPriority: 2); + +static void ShowDashboard( + string projectName, + IEnumerable tasks, + int minimumPriority) +{ + var urgentTasks = tasks.Where( + task => task.Priority >= minimumPriority); + + foreach (ProjectTask task in ReadyTasks(urgentTasks)) + { + Console.WriteLine(FormatTask(task)); + } + + string FormatTask(ProjectTask task) => + $"{projectName}: {task.Title}"; +} + +static IEnumerable ReadyTasks( + IEnumerable tasks) +{ + foreach (ProjectTask task in tasks) + { + if (!task.IsBlocked) + { + yield return task; + } + } +} + +record ProjectTask(string Title, int Priority, bool IsBlocked); +// + diff --git a/docs/csharp/fundamentals/building-software/snippets/overview/overview.csproj b/docs/csharp/fundamentals/building-software/snippets/overview/overview.csproj new file mode 100644 index 0000000000000..6bd724ac1a4bf --- /dev/null +++ b/docs/csharp/fundamentals/building-software/snippets/overview/overview.csproj @@ -0,0 +1,11 @@ + + + + Exe + net10.0 + enable + enable + + + + diff --git a/docs/csharp/fundamentals/tutorials/system-command-line.md b/docs/csharp/fundamentals/tutorials/system-command-line.md index f5e08429e5143..c35906dcb1a32 100644 --- a/docs/csharp/fundamentals/tutorials/system-command-line.md +++ b/docs/csharp/fundamentals/tutorials/system-command-line.md @@ -147,9 +147,9 @@ Each subcommand needs an *action*. An action is a [delegate](../../programming-g ## Add supporting types and data helpers -The app needs a few supporting pieces: [local functions](../../programming-guide/classes-and-structs/local-functions.md), an [`enum`](../../language-reference/builtin-types/enum.md), a [`record`](../../language-reference/builtin-types/record.md), and a serialization context. The following sections introduce each concept, explain why you'd choose it, and show the code. The app uses [System.Text.Json](../../../standard/serialization/system-text-json/overview.md) to store tasks as JSON (JavaScript Object Notation). File-based apps require type declarations to appear after all top-level statements and local functions. +The app needs a few supporting pieces: [local functions](../building-software/local-functions.md), an [`enum`](../../language-reference/builtin-types/enum.md), a [`record`](../../language-reference/builtin-types/record.md), and a serialization context. The following sections introduce each concept, explain why you'd choose it, and show the code. The app uses [System.Text.Json](../../../standard/serialization/system-text-json/overview.md) to store tasks as JSON (JavaScript Object Notation). File-based apps require type declarations to appear after all top-level statements and local functions. -1. Add the local functions that load and save tasks. A [local function](../../programming-guide/classes-and-structs/local-functions.md) is a method declared inside another function, including inside other local functions. Local functions keep helper logic close to the code that calls it, which improves readability because a reader doesn't have to jump to a separate class or file to understand the flow. Here, `LoadTasks` and `SaveTasks` encapsulate the file I/O that multiple command actions share, so the app writes the load/save logic once and reuses it: +1. Add the local functions that load and save tasks. A [local function](../building-software/local-functions.md) is a method declared inside another function, including inside other local functions. Local functions keep helper logic close to the code that calls it, which improves readability because a reader doesn't have to jump to a separate class or file to understand the flow. Here, `LoadTasks` and `SaveTasks` encapsulate the file I/O that multiple command actions share, so the app writes the load/save logic once and reuses it: :::code language="csharp" source="./snippets/system-commandline/TaskCli.cs" id="DataHelpers"::: diff --git a/docs/csharp/fundamentals/types/delegates-lambdas.md b/docs/csharp/fundamentals/types/delegates-lambdas.md index 57519c9b5eee9..d6b17c8dee0e2 100644 --- a/docs/csharp/fundamentals/types/delegates-lambdas.md +++ b/docs/csharp/fundamentals/types/delegates-lambdas.md @@ -102,6 +102,7 @@ Subscribing is optional. The `?.Invoke(...)` in the `Publish` method means the e ## See also +- [Lambda expressions](../building-software/lambdas.md) - [Type system overview](index.md) - [Methods](../../methods.md) - [Pattern matching](../patterns/pattern-matching.md) diff --git a/docs/csharp/iterators.md b/docs/csharp/iterators.md deleted file mode 100644 index ac6706c10a328..0000000000000 --- a/docs/csharp/iterators.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -title: Iterators -description: Learn how to use built-in C# iterators and how to create your own custom iterator methods. -ms.date: 11/09/2021 ---- - -# Iterators - -Almost every program you write will have some need to iterate over a collection. You'll write code that examines every item in a collection. - -You'll also create iterator methods, which are methods that produce an *iterator* for the elements of that class. An *iterator* is an object that traverses a container, particularly lists. Iterators can be used for: - -- Performing an action on each item in a collection. -- Enumerating a custom collection. -- Extending [LINQ](linq/index.md) or other libraries. -- Creating a data pipeline where data flows efficiently through iterator methods. - -The C# language provides features for both generating and consuming sequences. These sequences can be produced and consumed synchronously or asynchronously. This article provides an overview of those features. - -## Iterating with foreach - -Enumerating a collection is simple: The `foreach` keyword enumerates a collection, executing the embedded statement once for each element in the collection: - -:::code language="csharp" source="./snippets/iterators/Program.cs" ID="ForeachExample"::: - -That's all. To iterate over all the contents of a collection, the `foreach` statement is all you need. The `foreach` statement isn't magic, though. It relies on two generic interfaces defined in the .NET core library to generate the code necessary to iterate a collection: `IEnumerable` and `IEnumerator`. This mechanism is explained in more detail below. - -Both of these interfaces also have non-generic counterparts: `IEnumerable` and `IEnumerator`. The [generic](fundamentals/types/generics.md) versions are preferred for modern code. - -When a sequence is generated asynchronously, you can use the `await foreach` statement to asynchronously consume the sequence: - -:::code language="csharp" source="./snippets/iterators/Program.cs" ID="AwaitForeachExample"::: - -When a sequence is an , you use `foreach`. When a sequence is an , you use `await foreach`. In the latter case, the sequence is generated asynchronously. - -## Enumeration sources with iterator methods - -Another great feature of the C# language enables you to build methods that create a source for an enumeration. These methods are referred to as *iterator methods*. An iterator method defines how to generate the objects in a sequence when requested. You use the `yield return` contextual keywords to define an iterator method. - -You could write this method to produce the sequence of integers from 0 through 9: - -:::code language="csharp" source="./snippets/iterators/Generators.cs" ID="GetNumbers"::: - -The code above shows distinct `yield return` statements to highlight the fact that you can use multiple discrete `yield return` statements in an iterator method. You can (and often do) use other language constructs to simplify the code of an iterator method. The method definition below produces the exact same sequence of numbers: - -:::code language="csharp" source="./snippets/iterators/Generators.cs" ID="GetNumbersLoop"::: - -You don't have to decide one or the other. You can have as many `yield return` statements as necessary to meet the needs of your method: - -:::code language="csharp" source="./snippets/iterators/Generators.cs" ID="GetMultipleLoops"::: - -All of these preceding examples would have an asynchronous counterpart. In each case, you'd replace the return type of `IEnumerable` with an `IAsyncEnumerable`. For example, the previous example would have the following asynchronous version: - -:::code language="csharp" source="./snippets/iterators/Generators.cs" ID="GetMultipleAsyncLoops"::: - -That's the syntax for both synchronous and asynchronous iterators. Let's consider a real world example. Imagine you're on an IoT project and the device sensors generate a very large stream of data. To get a feel for the data, you might write a method that samples every Nth data element. This small iterator method does the trick: - -:::code language="csharp" source="./snippets/iterators/Generators.cs" ID="SampleSequence"::: - -If reading from the IoT device produces an asynchronous sequence, you'd modify the method as the following method shows: - -:::code language="csharp" source="./snippets/iterators/Generators.cs" ID="SampleSequenceAsync"::: - -There's one important restriction on iterator methods: you can't have both a `return` statement and a `yield return` statement in the same method. The following code won't compile: - -```csharp -public IEnumerable GetSingleDigitNumbers() -{ - int index = 0; - while (index < 10) - yield return index++; - - yield return 50; - - // generates a compile time error: - var items = new int[] {100, 101, 102, 103, 104, 105, 106, 107, 108, 109 }; - return items; -} -``` - -This restriction normally isn't a problem. You have a choice of either using `yield return` throughout the method, or separating the original method into multiple methods, some using `return`, and some using `yield return`. - -You can modify the last method slightly to use `yield return` everywhere: - -:::code language="csharp" source="./snippets/iterators/Generators.cs" ID="SequenceAndCollection"::: - -Sometimes, the right answer is to split an iterator method into two different methods. One that uses `return`, and a second that uses `yield return`. Consider a situation where you might want to return an empty collection, or the first five odd numbers, based on a boolean argument. You could write that as these two methods: - -:::code language="csharp" source="./snippets/iterators/Generators.cs" ID="ReturnAndYieldReturn"::: - -Look at the methods above. The first uses the standard `return` statement to return either an empty collection, or the iterator created by the second method. The second method uses the `yield return` statement to create the requested sequence. - -## Deeper dive into `foreach` - -The `foreach` statement expands into a standard idiom that uses the `IEnumerable` and `IEnumerator` interfaces to iterate across all elements of a collection. It also minimizes errors developers make by not properly managing resources. - -The compiler translates the `foreach` loop shown in the first example into something similar to this construct: - -:::code language="csharp" source="./snippets/iterators/Program.cs" ID="InsideForeach"::: - -The exact code generated by the compiler is more complicated, and handles situations where the object returned by `GetEnumerator()` implements the `IDisposable` interface. The full expansion generates code more like this: - -```csharp -{ - var enumerator = collection.GetEnumerator(); - try - { - while (enumerator.MoveNext()) - { - var item = enumerator.Current; - Console.WriteLine(item.ToString()); - } - } - finally - { - // dispose of enumerator. - } -} -``` - -The compiler translates the first asynchronous sample into something similar to this construct: - -```csharp -{ - var enumerator = collection.GetAsyncEnumerator(); - try - { - while (await enumerator.MoveNextAsync()) - { - var item = enumerator.Current; - Console.WriteLine(item.ToString()); - } - } - finally - { - // dispose of async enumerator. - } -} -``` - -The manner in which the enumerator is disposed of depends on the characteristics of the type of `enumerator`. In the general synchronous case, the `finally` clause expands to: - -```csharp -finally -{ - (enumerator as IDisposable)?.Dispose(); -} -``` - -The general asynchronous case expands to: - -```csharp -finally -{ - if (enumerator is IAsyncDisposable asyncDisposable) - await asyncDisposable.DisposeAsync(); -} -``` - -However, if the type of `enumerator` is a sealed type and there's no implicit conversion from the type of `enumerator` to `IDisposable` or `IAsyncDisposable`, the `finally` clause expands to an empty block: - -```csharp -finally -{ -} -``` - -If there's an implicit conversion from the type of `enumerator` to `IDisposable`, and `enumerator` is a non-nullable value type, the `finally` clause expands to: - -```csharp -finally -{ - ((IDisposable)enumerator).Dispose(); -} -``` - -Thankfully, you don't need to remember all these details. The `foreach` statement handles all those nuances for you. The compiler will generate the correct code for any of these constructs. diff --git a/docs/csharp/language-reference/builtin-types/collections.md b/docs/csharp/language-reference/builtin-types/collections.md index bbb288173e7df..9bb5470da58e1 100644 --- a/docs/csharp/language-reference/builtin-types/collections.md +++ b/docs/csharp/language-reference/builtin-types/collections.md @@ -66,7 +66,7 @@ An *iterator* is used to perform a custom iteration over a collection. An iterat You call an iterator by using a [foreach](../statements/iteration-statements.md#the-foreach-statement) statement. Each iteration of the `foreach` loop calls the iterator. When a `yield return` statement is reached in the iterator, an expression is returned, and the current location in code is retained. Execution restarts from that location the next time that the iterator is called. -For more information, see [Iterators (C#)](../../programming-guide/concepts/iterators.md). +For more information, see [Iterators (C#)](../../fundamentals/building-software/iterators.md). The following example uses an iterator method. The iterator method has a `yield return` statement that is inside a `for` loop. In the `ListEvenNumbers` method, each iteration of the `foreach` statement body creates a call to the iterator method, which proceeds to the next `yield return` statement. diff --git a/docs/csharp/language-reference/builtin-types/ref-struct.md b/docs/csharp/language-reference/builtin-types/ref-struct.md index 2a953da7e2e09..a6c3ea2177c53 100644 --- a/docs/csharp/language-reference/builtin-types/ref-struct.md +++ b/docs/csharp/language-reference/builtin-types/ref-struct.md @@ -10,9 +10,9 @@ Use the `ref` modifier when declaring a [structure type](struct.md). You allocat - You can't use a `ref struct` as the element type of an array. - You can't declare a `ref struct` as the type of a field in a class or a non-`ref struct`. - You can't box a `ref struct` to or . -- You can't capture a `ref struct` variable in a [lambda expression](../operators/lambda-expressions.md) or a [local function](../../programming-guide/classes-and-structs/local-functions.md). +- You can't capture a `ref struct` variable in a [lambda expression](../operators/lambda-expressions.md) or a [local function](../../fundamentals/building-software/local-functions.md). - Before C# 13, you can't use `ref struct` variables in an `async` method. Beginning with C# 13, a `ref struct` variable can't be used in the same block as the [`await`](../operators/await.md) expression in an [`async`](../keywords/async.md) method. However, you can use `ref struct` variables in synchronous methods, for example, in methods that return or . -- Before C# 13, you can't use a `ref struct` variable in [iterators](../../iterators.md). Beginning with C# 13, `ref struct` types and `ref` locals can be used in iterators, provided they aren't in code segments with the `yield return` statement. +- Before C# 13, you can't use a `ref struct` variable in [iterators](../../fundamentals/building-software/iterators.md). Beginning with C# 13, `ref struct` types and `ref` locals can be used in iterators, provided they aren't in code segments with the `yield return` statement. - Before C# 13, a `ref struct` can't implement interfaces. Beginning with C# 13, a `ref` struct can implement interfaces, but must adhere to the [ref safety](~/_csharpstandard/standard/structs.md#1623-ref-modifier) rules. For example, a `ref struct` type can't be converted to the interface type because that requires a boxing conversion. - Before C# 13, a `ref struct` can't be a type argument. Beginning with C# 13, a `ref struct` can be the type argument when the type parameter specifies the `allows ref struct` in its `where` clause. diff --git a/docs/csharp/language-reference/builtin-types/void.md b/docs/csharp/language-reference/builtin-types/void.md index 194bd79a64d2b..2a7830d825651 100644 --- a/docs/csharp/language-reference/builtin-types/void.md +++ b/docs/csharp/language-reference/builtin-types/void.md @@ -11,7 +11,7 @@ helpviewer_keywords: --- # void (C# reference) -Use `void` as the return type of a [method](../../programming-guide/classes-and-structs/methods.md) or a [local function](../../programming-guide/classes-and-structs/local-functions.md) to specify that the method doesn't return a value. +Use `void` as the return type of a [method](../../programming-guide/classes-and-structs/methods.md) or a [local function](../../fundamentals/building-software/local-functions.md) to specify that the method doesn't return a value. [!INCLUDE[csharp-version-note](../includes/initial-version.md)] diff --git a/docs/csharp/language-reference/compiler-messages/expression-tree-restrictions.md b/docs/csharp/language-reference/compiler-messages/expression-tree-restrictions.md index d3de0ea46d62b..ebd9f7e6880de 100644 --- a/docs/csharp/language-reference/compiler-messages/expression-tree-restrictions.md +++ b/docs/csharp/language-reference/compiler-messages/expression-tree-restrictions.md @@ -169,7 +169,7 @@ The following expressions are prohibited: - Invocations of [partial methods](../keywords/partial-member.md) that don't have an implementing declaration. - Invocations of [conditional methods](../preprocessor-directives.md#conditional-compilation) that have been removed. -- Invocations of [local functions](../../programming-guide/classes-and-structs/local-functions.md). +- Invocations of [local functions](../../fundamentals/building-software/local-functions.md). - `async` lambda expressions aren't allowed. - Using [`base`](../keywords/base.md) access to directly call a virtual method declared in a base class. - [assignment](../operators/assignment-operator.md) operations. diff --git a/docs/csharp/language-reference/compiler-messages/foreach-diagnostics.md b/docs/csharp/language-reference/compiler-messages/foreach-diagnostics.md index b09f32813c884..8e0cdface1eaf 100644 --- a/docs/csharp/language-reference/compiler-messages/foreach-diagnostics.md +++ b/docs/csharp/language-reference/compiler-messages/foreach-diagnostics.md @@ -142,7 +142,7 @@ These errors occur when a method's signature declares it as an async iterator (i Add at least one `yield return` statement to the method body to make it a valid async-iterator method. If you didn't intend the method to be an iterator, remove the `async` modifier and change the return type, or return a constructed async enumerable from a different source instead. -For more information on iterator methods, see [Iterators](../../iterators.md) and [`yield` statement](../statements/yield.md). +For more information on iterator methods, see [Iterators](../../fundamentals/building-software/iterators.md) and [`yield` statement](../statements/yield.md). ## `EnumeratorCancellation` attribute usage diff --git a/docs/csharp/language-reference/compiler-messages/lambda-expression-errors.md b/docs/csharp/language-reference/compiler-messages/lambda-expression-errors.md index 3d00bdc536006..06523ad044456 100644 --- a/docs/csharp/language-reference/compiler-messages/lambda-expression-errors.md +++ b/docs/csharp/language-reference/compiler-messages/lambda-expression-errors.md @@ -164,8 +164,8 @@ The compiler prohibits certain C# constructs inside [lambda expressions](../oper You can correct these errors by using the following guidance: -- Move any [`yield return` or `yield break`](../statements/yield.md) statement out of the lambda body and into the enclosing [iterator method](../statements/yield.md), or convert the lambda to a [local function](../../programming-guide/classes-and-structs/local-functions.md), which supports `yield` statements (**CS1621**). -- Avoid referencing [`in`, `ref`, or `out`](../keywords/method-parameters.md) parameters from the enclosing method inside the lambda body. When the lambda captures these parameters as part of a [closure](../../programming-guide/classes-and-structs/local-functions.md#local-functions-vs-lambda-expressions), the reference semantics of `ref`-like parameters can't be preserved. Copy the value to a local variable and use that local instead, or convert the lambda to a local function (**CS1628**). +- Move any [`yield return` or `yield break`](../statements/yield.md) statement out of the lambda body and into the enclosing [iterator method](../statements/yield.md), or convert the lambda to a [local function](../../fundamentals/building-software/local-functions.md), which supports `yield` statements (**CS1621**). +- Avoid referencing [`in`, `ref`, or `out`](../keywords/method-parameters.md) parameters from the enclosing method inside the lambda body. When the lambda [captures these parameters](../../fundamentals/building-software/lambdas.md#capture-values-from-the-surrounding-scope), the reference semantics of `ref`-like parameters can't be preserved. Copy the value to a local variable and use that local instead, or convert the lambda to a local function (**CS1628**). - Remove any `break`, `goto`, or `continue` statement that transfers control out of the lambda body. Control flow statements must target labels or loops within the same lambda body (**CS1632**). - In a `struct` type, avoid referencing instance members through `this` inside a lambda expression, anonymous method, or query expression. Because the compiler captures `this` by value in a `struct`, mutations inside the lambda don't affect the original instance. Extract the needed member values into local variables before the lambda, or convert to a local function, which can access `this` directly (**CS1673**). - Don't take the address of a local variable that the lambda also captures. The compiler moves captured variables to a heap-allocated closure object, making their address unstable. Separate the address-taking logic from the lambda, or use a local function instead (**CS1686**). diff --git a/docs/csharp/language-reference/compiler-messages/local-function-errors.md b/docs/csharp/language-reference/compiler-messages/local-function-errors.md index c77114e80fadb..65ef475d45eb9 100644 --- a/docs/csharp/language-reference/compiler-messages/local-function-errors.md +++ b/docs/csharp/language-reference/compiler-messages/local-function-errors.md @@ -29,7 +29,7 @@ That's by design. The text closely matches the text of the compiler error / warn - [**CS8421**](#static-local-functions-cant-capture-state): *A static local function cannot contain a reference to 'variable'.* - [**CS8422**](#static-local-functions-cant-capture-state): *A static local function cannot contain a reference to 'this' or 'base'.* -[Local functions](../../programming-guide/classes-and-structs/local-functions.md) were added in C# 7.0. They let you declare helper methods inside another member. The diagnostics in this article cover local function declarations, calls, usage, and the extra capture restrictions for `static` local functions. +[Local functions](../../fundamentals/building-software/local-functions.md) were added in C# 7.0. They let you declare helper methods inside another member. The diagnostics in this article cover local function declarations, calls, usage, and the extra capture restrictions for `static` local functions. ## Local function bodies @@ -54,7 +54,7 @@ The compiler reports this warning when you declare a local function but no reach - **CS8421**: *A static local function cannot contain a reference to 'variable'.* - **CS8422**: *A static local function cannot contain a reference to 'this' or 'base'.* -A [`static` local function](../../programming-guide/classes-and-structs/local-functions.md) can't capture state from the enclosing scope. It can't reference enclosing local variables, parameters, instance members through `this`, or `this` itself. Pass each value the local function needs as a parameter (**CS8421**, **CS8422**). If the local function must capture variables or instance state from the enclosing scope, remove the `static` modifier. +A [`static` local function](../../fundamentals/building-software/local-functions.md) can't capture state from the enclosing scope. It can't reference enclosing local variables, parameters, instance members through `this`, or `this` itself. Pass each value the local function needs as a parameter (**CS8421**, **CS8422**). If the local function must capture variables or instance state from the enclosing scope, remove the `static` modifier. The following example shows references that cause **CS8422**: diff --git a/docs/csharp/language-reference/compiler-messages/ref-modifiers-errors.md b/docs/csharp/language-reference/compiler-messages/ref-modifiers-errors.md index 9a38d547a209c..7977f61ca1910 100644 --- a/docs/csharp/language-reference/compiler-messages/ref-modifiers-errors.md +++ b/docs/csharp/language-reference/compiler-messages/ref-modifiers-errors.md @@ -256,7 +256,7 @@ The following errors and warnings indicate that you can't use a reference variab To correct these errors and warnings: - Remove reference parameters from [indexers](../../programming-guide/indexers/index.md). Indexers provide array-like access syntax, and the compiler can't guarantee safe lifetime tracking for references passed through indexer accessors (**CS0631**, **CS1623**). -- Remove reference parameters from [iterator methods](../../iterators.md). Iterators execute code lazily across multiple calls using state machines, and the compiler can't ensure referenced variables remain valid across `yield return` boundaries where execution is suspended and resumed (**CS1623**). +- Remove reference parameters from [iterator methods](../../fundamentals/building-software/iterators.md). Iterators execute code lazily across multiple calls using state machines, and the compiler can't ensure referenced variables remain valid across `yield return` boundaries where execution is suspended and resumed (**CS1623**). - Remove reference parameters from [async methods](../../asynchronous-programming/index.md). Async methods might suspend execution at `await` points and resume on different threads, making it impossible to guarantee that referenced variables remain valid and accessible throughout the method's execution (**CS1988**). - Avoid using [await expressions](../operators/await.md) inside [ref conditional expressions](../operators/conditional-operator.md#conditional-ref-expression). The `await` operation might suspend execution and invalidate the references being selected by the conditional operator, leading to potential use of invalidated references when execution resumes (**CS8325**). - Ensure both branches of a ref conditional operator return references or neither returns a reference, and when both are references they must be the same type. The conditional operator must produce a consistent result type that can be safely used by the calling code regardless of which branch is selected (**CS8326**, **CS8327**). @@ -274,7 +274,7 @@ To correct these errors and warnings: - Match the reference kind modifiers (`ref`, `in`, `out`, `ref readonly`) between a method and its overridden base method or implemented interface method. The reference modifier is part of the method signature contract that derived types must honor to maintain substitutability and caller expectations (**CS9196**, **CS9197**, **CS9198**). - Declare parameters as `in` rather than `ref readonly` when providing default values. `ref readonly` is designed for scenarios where the caller passes a reference to an existing variable, whereas `in` parameters can accept both references and temporary copies of values, making default values meaningful (**CS9200**). -For more information about where reference variables are allowed, see [Method parameters](../keywords/method-parameters.md), [Iterators](../../iterators.md), [Asynchronous programming patterns](../../asynchronous-programming/index.md), and the [C# Language Specification](~/_csharpstandard/standard/variables.md#97-reference-variables-and-returns). +For more information about where reference variables are allowed, see [Method parameters](../keywords/method-parameters.md), [Iterators](../../fundamentals/building-software/iterators.md), [Asynchronous programming patterns](../../asynchronous-programming/index.md), and the [C# Language Specification](~/_csharpstandard/standard/variables.md#97-reference-variables-and-returns). ## `unscoped ref` restrictions diff --git a/docs/csharp/language-reference/keywords/static.md b/docs/csharp/language-reference/keywords/static.md index ce581fa919fe4..3d5feb34581e7 100644 --- a/docs/csharp/language-reference/keywords/static.md +++ b/docs/csharp/language-reference/keywords/static.md @@ -14,7 +14,7 @@ This article covers the `static` modifier keyword. The `static` keyword is also Use the `static` modifier to declare a static member, which belongs to the type itself rather than to a specific object. Use the `static` modifier to declare `static` classes. In classes, interfaces, and structs, you can add the `static` modifier to fields, methods, properties, operators, events, and constructors. You can't use the `static` modifier with indexers or finalizers. For more information, see [Static Classes and Static Class Members](../../programming-guide/classes-and-structs/static-classes-and-static-class-members.md). -You can add the `static` modifier to a [local function](../../programming-guide/classes-and-structs/local-functions.md). A static local function can't capture local variables or instance state. +You can add the `static` modifier to a [local function](../../fundamentals/building-software/local-functions.md). A static local function can't capture local variables or instance state. :::code language="csharp" source="./snippets/csrefKeywordsModifiers.cs" id="28"::: diff --git a/docs/csharp/language-reference/operators/lambda-expressions.md b/docs/csharp/language-reference/operators/lambda-expressions.md index fc989ad7d6cf3..708ab7037aee1 100644 --- a/docs/csharp/language-reference/operators/lambda-expressions.md +++ b/docs/csharp/language-reference/operators/lambda-expressions.md @@ -335,6 +335,6 @@ For more information, see the [Anonymous function expressions](~/_csharpstandard - [C# operators and expressions](index.md) - [LINQ (Language-Integrated Query)](../../linq/index.md) - [Expression trees](../../advanced-topics/expression-trees/index.md) -- [Local functions vs. lambda expressions](../../programming-guide/classes-and-structs/local-functions.md#local-functions-vs-lambda-expressions) +- [Choose a local function or lambda expression](../../fundamentals/building-software/local-functions.md#choose-a-local-function-or-lambda-expression) - [LINQ sample queries](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/master/Visual%20Studio%20Product%20Team/Official%20Visual%20Studio%202008%20C%23%20Samples/%5BC%23%5D-Official%20Visual%20Studio%202008%20C%23%20Samples/LINQ%20-%20Sample%20Queries/C%23) - [XQuery sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/master/Visual%20Studio%20Product%20Team/Official%20Visual%20Studio%202008%20C%23%20Samples/%5BC%23%5D-Official%20Visual%20Studio%202008%20C%23%20Samples/XQuery/C%23) diff --git a/docs/csharp/language-reference/operators/lambda-operator.md b/docs/csharp/language-reference/operators/lambda-operator.md index d79a2a58bfb5a..647668ef6fda4 100644 --- a/docs/csharp/language-reference/operators/lambda-operator.md +++ b/docs/csharp/language-reference/operators/lambda-operator.md @@ -61,7 +61,7 @@ public override string ToString() You can use expression body definitions for the following members: -- **Methods and local functions:** A member that returns a value has the form `T M() => expression;`. A `void` member has the form `void M() => statementExpression;`. For more information, see [Methods](../../programming-guide/classes-and-structs/methods.md) and [Local functions](../../programming-guide/classes-and-structs/local-functions.md). +- **Methods and local functions:** A member that returns a value has the form `T M() => expression;`. A `void` member has the form `void M() => statementExpression;`. For more information, see [Methods](../../programming-guide/classes-and-structs/methods.md) and [Local functions](../../fundamentals/building-software/local-functions.md). - **Operators:** An operator has the form `public static T operator +(T left, T right) => expression;`. For more information, see [Operator overloading](operator-overloading.md). - **Properties and indexers:** A read-only property or indexer has the form `T P => expression;` or `T this[int i] => expression;`. You can also use expression bodies for individual accessors. A `get` accessor has the form `get => expression;`. A `set` or `init` accessor has the form `set => statementExpression;` or `init => statementExpression;`. For more information, see [Properties](../../programming-guide/classes-and-structs/properties.md) and [Indexers](../../programming-guide/indexers/index.md). - **Constructors and finalizers:** These members have the form `C() => statementExpression;` or `~C() => statementExpression;`. For more information, see [Constructors](../../programming-guide/classes-and-structs/constructors.md) and [Finalizers](../../programming-guide/classes-and-structs/finalizers.md). diff --git a/docs/csharp/language-reference/statements/exception-handling-statements.md b/docs/csharp/language-reference/statements/exception-handling-statements.md index c64388baadf7b..db86656b66468 100644 --- a/docs/csharp/language-reference/statements/exception-handling-statements.md +++ b/docs/csharp/language-reference/statements/exception-handling-statements.md @@ -140,7 +140,7 @@ If an exception occurs in an [async function](../keywords/async.md), the excepti :::code language="csharp" source="snippets/exception-handling-statements/ExceptionFromAsyncExample.cs" id="ExceptionFromAsync"::: -If an exception occurs in an [iterator method](../../iterators.md), the exception propagates to the caller only when the iterator advances to the next element. +If an exception occurs in an [iterator method](../../fundamentals/building-software/iterators.md), the exception propagates to the caller only when the iterator advances to the next element. ### The `try-finally` statement diff --git a/docs/csharp/language-reference/statements/iteration-statements.md b/docs/csharp/language-reference/statements/iteration-statements.md index 1c32d7030dc32..f5fde997b5478 100644 --- a/docs/csharp/language-reference/statements/iteration-statements.md +++ b/docs/csharp/language-reference/statements/iteration-statements.md @@ -161,4 +161,4 @@ For more information, see the following sections of the [C# language specificati ## See also - [Declarations](./declarations.md) -- [Iterators](../../iterators.md) +- [Iterators](../../fundamentals/building-software/iterators.md) diff --git a/docs/csharp/language-reference/statements/yield.md b/docs/csharp/language-reference/statements/yield.md index 839a06b30fa9e..550f496111651 100644 --- a/docs/csharp/language-reference/statements/yield.md +++ b/docs/csharp/language-reference/statements/yield.md @@ -10,7 +10,7 @@ helpviewer_keywords: --- # yield statement - provide the next element -Use the `yield` statement in an [iterator](../../iterators.md) to provide the next value or signal the end of an iteration. The `yield` statement has the two following forms: +Use the `yield` statement in an [iterator](../../fundamentals/building-software/iterators.md) to provide the next value or signal the end of an iteration. The `yield` statement has the two following forms: - `yield return`: to provide the next value in iteration, as the following example shows: @@ -64,7 +64,6 @@ For more information, see [The yield statement](~/_csharpstandard/standard/state ## See also -- [Iterators](../../iterators.md) -- [Iterate through collections in C#](../../programming-guide/concepts/iterators.md) +- [Iterators](../../fundamentals/building-software/iterators.md) - [foreach](iteration-statements.md#the-foreach-statement) - [await foreach](iteration-statements.md#await-foreach) diff --git a/docs/csharp/methods.md b/docs/csharp/methods.md index 2e68e2c9bcc43..343c7d00452c6 100644 --- a/docs/csharp/methods.md +++ b/docs/csharp/methods.md @@ -262,7 +262,7 @@ An iterator performs a custom iteration over a collection, such as a list or an The return type of an iterator can be , , , , or . -For more information, see [Iterators](programming-guide/concepts/iterators.md). +For more information, see [Iterators](fundamentals/building-software/iterators.md). ## See also diff --git a/docs/csharp/programming-guide/classes-and-structs/local-functions.md b/docs/csharp/programming-guide/classes-and-structs/local-functions.md deleted file mode 100644 index 758cb893eeb8c..0000000000000 --- a/docs/csharp/programming-guide/classes-and-structs/local-functions.md +++ /dev/null @@ -1,169 +0,0 @@ ---- -title: "Local functions" -description: Local functions in C# are private methods that are nested in another member and can be called from their containing member. -ms.date: 11/22/2024 -helpviewer_keywords: - - "local functions [C#]" ---- -# Local functions (C# Programming Guide) - -*Local functions* are methods of a type that are nested in another member. They can only be called from their containing member. Local functions can be declared in and called from: - -- Methods, especially iterator methods and async methods -- Constructors -- Property accessors -- Event accessors -- Anonymous methods -- Lambda expressions -- Finalizers -- Other local functions - -Beginning with C# 8.0, local function parameters can shadow local variables and parameters from an enclosing scope. - -However, local functions can't be declared inside an expression-bodied member. - -> [!NOTE] -> In some cases, you can use a lambda expression to implement functionality also supported by a local function. For a comparison, see [Local functions vs. lambda expressions](#local-functions-vs-lambda-expressions). - -Local functions make the intent of your code clear. Anyone reading your code can see that the method isn't callable except by the containing method. For team projects, they also make it impossible for another developer to mistakenly call the method directly from elsewhere in the class or struct. - -## Local function syntax - -A local function is defined as a nested method inside a containing member. Its definition has the following syntax: - -```csharp - -``` - -> [!NOTE] -> The `` shouldn't contain the parameters named with [contextual keyword](../../language-reference/keywords/index.md#contextual-keywords) `value`. -> The compiler creates the temporary variable "value", which contains the referenced outer variables, which later causes ambiguity and may also cause an unexpected behaviour. - -You can use the following modifiers with a local function: - -- [`async`](../../language-reference/keywords/async.md) -- [`unsafe`](../../language-reference/keywords/unsafe.md) -- [`static`](../../language-reference/keywords/static.md) A static local function can't capture local variables or instance state. -- [`extern`](../../language-reference/keywords/extern.md) An external local function must be `static`. - -All local variables that are defined in the containing member, including its method parameters, are accessible in a non-static local function. - -Unlike a method definition, a local function definition can't include the member access modifier. Because all local functions are private, including an access modifier, such as the `private` keyword, generates compiler error CS0106, "The modifier 'private' isn't valid for this item." - -The following example defines a local function named `AppendPathSeparator` that is private to a method named `GetText`: - -:::code language="csharp" source="snippets/local-functions/Program.cs" id="Basic" ::: - -You can apply attributes to a local function, its parameters, and type parameters, as the following example shows: - -:::code language="csharp" source="snippets/local-functions/Program.cs" id="WithAttributes" ::: - -The preceding example uses a [special attribute](../../language-reference/attributes/nullable-analysis.md) to assist the compiler in static analysis in a nullable context. - -## Local functions and exceptions - -One of the useful features of local functions is that they can allow exceptions to surface immediately. For iterator methods, exceptions are surfaced only when the returned sequence is enumerated, and not when the iterator is retrieved. For async methods, any exceptions thrown in an async method are observed when the returned task is awaited. - -The following example defines an `OddSequence` method that enumerates odd numbers in a specified range. Because it passes a number greater than 100 to the `OddSequence` enumerator method, the method throws an . As the output from the example shows, the exception surfaces only when you iterate the numbers, and not when you retrieve the enumerator. - -:::code language="csharp" source="snippets/local-functions/IteratorWithoutLocal.cs" ::: - -If you put iterator logic into a local function, argument validation exceptions are thrown when you retrieve the enumerator, as the following example shows: - -:::code language="csharp" source="snippets/local-functions/IteratorWithLocal.cs" ::: - -## Local functions vs. lambda expressions - -At first glance, local functions and [lambda expressions](../../language-reference/operators/lambda-expressions.md) are similar. In many cases, the choice between using lambda expressions and local functions is a [matter of style and personal preference](../../../fundamentals/code-analysis/style-rules/ide0039.md). However, there are real differences in where you can use one or the other that you should be aware of. - -Let's examine the differences between the local function and lambda expression implementations of the factorial algorithm. Here's the version using a local function: - -:::code language="csharp" source="snippets/local-functions/Program.cs" id="FactorialWithLocal" ::: - -This version uses lambda expressions: - -:::code language="csharp" source="snippets/local-functions/Program.cs" id="FactorialWithLambda" ::: - -### Naming - -Local functions are explicitly named like methods. Lambda expressions are anonymous methods and need to be assigned to variables of a `delegate` type, typically either `Action` or `Func` types. When you declare a local function, the process is like writing a normal method; you declare a return type and a function signature. - -### Function signatures and lambda expression types - -Lambda expressions rely on the type of the `Action`/`Func` variable that they're assigned to determine the argument and return types. In local functions, since the syntax is much like writing a normal method, argument types and return type are already part of the function declaration. - -Some lambda expressions have a *natural type*, which enables the compiler to infer the return type and parameter types of the lambda expression. - -### Definite assignment - -Lambda expressions are objects that are declared and assigned at run time. In order for a lambda expression to be used, it needs to be definitely assigned: the `Action`/`Func` variable that it's assigned to must be declared and the lambda expression assigned to it. Notice that `LambdaFactorial` must declare and initialize the lambda expression `nthFactorial` before defining it. Not doing so results in a compile time error for referencing `nthFactorial` before assigning it. - -Local functions are defined at compile time. As they're not assigned to variables, they can be referenced from any code location **where it is in scope**; in the first example `LocalFunctionFactorial`, you could declare the local function either before or after the `return` statement and not trigger any compiler errors. - -These differences mean that recursive algorithms are easier to create using local functions. You can declare and define a local function that calls itself. Lambda expressions must be declared and assigned a default value before they can be reassigned to a body that references the same lambda expression. - -### Implementation as a delegate - -Lambda expressions are converted to delegates when they're declared. Local functions are more flexible in that they can be written like a traditional method *or* as a delegate. Local functions are only converted to delegates when ***used*** as a delegate. - -If you declare a local function and only reference it by calling it like a method, it won't be converted to a delegate. - -### Variable capture - -The rules of [definite assignment](~/_csharpstandard/standard/variables.md#94-definite-assignment) also affect any variables captured by the local function or lambda expression. The compiler can perform static analysis that enables local functions to definitely assign captured variables in the enclosing scope. Consider this example: - -```csharp -int M() -{ - int y; - LocalFunction(); - return y; - - void LocalFunction() => y = 0; -} -``` - -The compiler can determine that `LocalFunction` definitely assigns `y` when called. Because `LocalFunction` is called before the `return` statement, `y` is definitely assigned at the `return` statement. - -When a local function captures variables in the enclosing scope, the local function is implemented using a closure, like delegate types are. - -### Heap allocations - -Depending on their use, local functions can avoid heap allocations that are always necessary for lambda expressions. If a local function is never converted to a delegate, and none of the variables captured by the local function are captured by other lambdas or local functions that are converted to delegates, the compiler can avoid heap allocations. - -Consider this async example: - -:::code language="csharp" source="snippets/local-functions/Program.cs" id="AsyncWithLambda" ::: - -The closure for this lambda expression contains the `address`, `index`, and `name` variables. For local functions, the object that implements the closure can be a `struct` type. That struct type would be passed by reference to the local function. This difference in implementation would save on an allocation. - -The instantiation necessary for lambda expressions means extra memory allocations, which might be a performance factor in time-critical code paths. Local functions don't incur this overhead. - -If you know that your local function won't be converted to a delegate and none of the variables captured by it are captured by other lambdas or local functions that are converted to delegates, you can guarantee that your local function avoids being allocated on the heap by declaring it as a `static` local function. - -> [!TIP] -> Enable .NET code style rule [IDE0062](../../../fundamentals/code-analysis/style-rules/ide0062.md) to ensure that local functions are always marked `static`. - -> [!NOTE] -> The local function equivalent of this method also uses a class for the closure. Whether the closure for a local function is implemented as a `class` or a `struct` is an implementation detail. A local function may use a `struct` whereas a lambda will always use a `class`. - -:::code language="csharp" source="snippets/local-functions/Program.cs" id="AsyncWithLocal" ::: - -### Usage of the `yield` keyword - -One final advantage not demonstrated in this sample is that local functions can be implemented as iterators, using the `yield return` syntax to produce a sequence of values. - -:::code language="csharp" source="snippets/local-functions/Program.cs" id="YieldReturn" ::: - -The `yield return` statement isn't allowed in lambda expressions. For more information, see [compiler error CS1621](../../language-reference/compiler-messages/lambda-expression-errors.md#syntax-limitations-in-lambda-expressions). - -While local functions can seem redundant to lambda expressions, they actually serve different purposes and have different uses. Local functions are more efficient for the case when you want to write a function that is called only from the context of another method. - -## C# language specification - -For more information, see the [Local function declarations](~/_csharpstandard/standard/statements.md#1364-local-function-declarations) section of the [C# language specification](~/_csharpstandard/standard/README.md). - -## See also - -- [Use local function instead of lambda (style rule IDE0039)](../../../fundamentals/code-analysis/style-rules/ide0039.md) -- [Methods](methods.md) diff --git a/docs/csharp/programming-guide/classes-and-structs/methods.md b/docs/csharp/programming-guide/classes-and-structs/methods.md index 23685405d68d7..17d625dd6a479 100644 --- a/docs/csharp/programming-guide/classes-and-structs/methods.md +++ b/docs/csharp/programming-guide/classes-and-structs/methods.md @@ -154,7 +154,7 @@ You call an iterator from client code by using a [foreach](../../language-refere The return type of an iterator can be , , , , or . -For more information, see [Iterators](../concepts/iterators.md). +For more information, see [Iterators](../../fundamentals/building-software/iterators.md). ## C# language specification diff --git a/docs/csharp/programming-guide/classes-and-structs/snippets/local-functions/IteratorWithLocal.cs b/docs/csharp/programming-guide/classes-and-structs/snippets/local-functions/IteratorWithLocal.cs deleted file mode 100644 index 444bbf9264791..0000000000000 --- a/docs/csharp/programming-guide/classes-and-structs/snippets/local-functions/IteratorWithLocal.cs +++ /dev/null @@ -1,39 +0,0 @@ -public class IteratorWithLocalExample -{ - public static void Main() - { - IEnumerable xs = OddSequence(50, 110); // line 8 - Console.WriteLine("Retrieved enumerator..."); - - foreach (var x in xs) - { - Console.Write($"{x} "); - } - } - - public static IEnumerable OddSequence(int start, int end) - { - if (start < 0 || start > 99) - throw new ArgumentOutOfRangeException(nameof(start), "start must be between 0 and 99."); - if (end > 100) - throw new ArgumentOutOfRangeException(nameof(end), "end must be less than or equal to 100."); - if (start >= end) - throw new ArgumentException("start must be less than end."); - - return GetOddSequenceEnumerator(); - - IEnumerable GetOddSequenceEnumerator() - { - for (int i = start; i <= end; i++) - { - if (i % 2 == 1) - yield return i; - } - } - } -} -// The example displays the output like this: -// -// Unhandled exception. System.ArgumentOutOfRangeException: end must be less than or equal to 100. (Parameter 'end') -// at IteratorWithLocalExample.OddSequence(Int32 start, Int32 end) in IteratorWithLocal.cs:line 22 -// at IteratorWithLocalExample.Main() in IteratorWithLocal.cs:line 8 diff --git a/docs/csharp/programming-guide/classes-and-structs/snippets/local-functions/IteratorWithoutLocal.cs b/docs/csharp/programming-guide/classes-and-structs/snippets/local-functions/IteratorWithoutLocal.cs deleted file mode 100644 index cd3df9a723ad9..0000000000000 --- a/docs/csharp/programming-guide/classes-and-structs/snippets/local-functions/IteratorWithoutLocal.cs +++ /dev/null @@ -1,35 +0,0 @@ -public class IteratorWithoutLocalExample -{ - public static void Main() - { - IEnumerable xs = OddSequence(50, 110); - Console.WriteLine("Retrieved enumerator..."); - - foreach (var x in xs) // line 11 - { - Console.Write($"{x} "); - } - } - - public static IEnumerable OddSequence(int start, int end) - { - if (start < 0 || start > 99) - throw new ArgumentOutOfRangeException(nameof(start), "start must be between 0 and 99."); - if (end > 100) - throw new ArgumentOutOfRangeException(nameof(end), "end must be less than or equal to 100."); - if (start >= end) - throw new ArgumentException("start must be less than end."); - - for (int i = start; i <= end; i++) - { - if (i % 2 == 1) - yield return i; - } - } -} -// The example displays the output like this: -// -// Retrieved enumerator... -// Unhandled exception. System.ArgumentOutOfRangeException: end must be less than or equal to 100. (Parameter 'end') -// at IteratorWithoutLocalExample.OddSequence(Int32 start, Int32 end)+MoveNext() in IteratorWithoutLocal.cs:line 22 -// at IteratorWithoutLocalExample.Main() in IteratorWithoutLocal.cs:line 11 diff --git a/docs/csharp/programming-guide/classes-and-structs/snippets/local-functions/Program.cs b/docs/csharp/programming-guide/classes-and-structs/snippets/local-functions/Program.cs deleted file mode 100644 index dcea0d7c7e076..0000000000000 --- a/docs/csharp/programming-guide/classes-and-structs/snippets/local-functions/Program.cs +++ /dev/null @@ -1,141 +0,0 @@ -using System.Diagnostics.CodeAnalysis; - -namespace local_functions; - -class Program -{ - static void Main(string[] args) - { } - - // - private static string GetText(string path, string filename) - { - var reader = File.OpenText($"{AppendPathSeparator(path)}{filename}"); - var text = reader.ReadToEnd(); - return text; - - string AppendPathSeparator(string filepath) - { - return filepath.EndsWith(@"\") ? filepath : filepath + @"\"; - } - } - // - - // - #nullable enable - private static void Process(string?[] lines, string mark) - { - foreach (var line in lines) - { - if (IsValid(line)) - { - // Processing logic... - } - } - - bool IsValid([NotNullWhen(true)] string? line) - { - return !string.IsNullOrEmpty(line) && line.Length >= mark.Length; - } - } - // - #nullable disable - - // - public static int LocalFunctionFactorial(int n) - { - return nthFactorial(n); - - int nthFactorial(int number) => number < 2 - ? 1 - : number * nthFactorial(number - 1); - } - // - - // - public static int LambdaFactorial(int n) - { - Func nthFactorial = default(Func); - - nthFactorial = number => number < 2 - ? 1 - : number * nthFactorial(number - 1); - - return nthFactorial(n); - } - // - - // - public async Task PerformLongRunningWorkLambda(string address, int index, string name) - { - if (string.IsNullOrWhiteSpace(address)) - throw new ArgumentException(message: "An address is required", paramName: nameof(address)); - if (index < 0) - throw new ArgumentOutOfRangeException(paramName: nameof(index), message: "The index must be non-negative"); - if (string.IsNullOrWhiteSpace(name)) - throw new ArgumentException(message: "You must supply a name", paramName: nameof(name)); - - Func> longRunningWorkImplementation = async () => - { - var interimResult = await FirstWork(address); - var secondResult = await SecondStep(index, name); - return $"The results are {interimResult} and {secondResult}. Enjoy."; - }; - - return await longRunningWorkImplementation(); - } - // - - // - public async Task PerformLongRunningWork(string address, int index, string name) - { - if (string.IsNullOrWhiteSpace(address)) - throw new ArgumentException(message: "An address is required", paramName: nameof(address)); - if (index < 0) - throw new ArgumentOutOfRangeException(paramName: nameof(index), message: "The index must be non-negative"); - if (string.IsNullOrWhiteSpace(name)) - throw new ArgumentException(message: "You must supply a name", paramName: nameof(name)); - - return await longRunningWorkImplementation(); - - async Task longRunningWorkImplementation() - { - var interimResult = await FirstWork(address); - var secondResult = await SecondStep(index, name); - return $"The results are {interimResult} and {secondResult}. Enjoy."; - } - } - // - - private async Task FirstWork(string address) - { - await Task.Delay(100); - return 10; - } - - private async Task SecondStep(int index, string name) - { - await Task.Delay(100); - return 9; - } - - // - public IEnumerable SequenceToLowercase(IEnumerable input) - { - if (!input.Any()) - { - throw new ArgumentException("There are no items to convert to lowercase."); - } - - return LowercaseIterator(); - - IEnumerable LowercaseIterator() - { - foreach (var output in input.Select(item => item.ToLower())) - { - yield return output; - } - } - } - // -} diff --git a/docs/csharp/programming-guide/concepts/index.md b/docs/csharp/programming-guide/concepts/index.md index 30e0d01a9f9e0..3c38b5aa2614a 100644 --- a/docs/csharp/programming-guide/concepts/index.md +++ b/docs/csharp/programming-guide/concepts/index.md @@ -12,7 +12,7 @@ This section explains programming concepts in the C# language. | Title | Description | |-------|-------------| |[Covariance and Contravariance (C#)](./covariance-contravariance/index.md)|Shows how to enable implicit conversion of generic type parameters in interfaces and delegates.| -|[Iterators (C#)](./iterators.md)|Describes iterators, which are used to step through collections and return elements one at a time.| +|[Iterators (C#)](../../fundamentals/building-software/iterators.md)|Describes iterators, which are used to step through collections and return elements one at a time.| ## Related sections diff --git a/docs/csharp/programming-guide/concepts/iterators.md b/docs/csharp/programming-guide/concepts/iterators.md deleted file mode 100644 index 9445d2e378815..0000000000000 --- a/docs/csharp/programming-guide/concepts/iterators.md +++ /dev/null @@ -1,357 +0,0 @@ ---- -title: Iterate through collections -description: Learn how to use an iterator to step through collections like lists and arrays. Iterators are consumed from client code using a foreach statement or LINQ query. -ms.date: 08/14/2018 -ms.assetid: c93f6dd4-e72a-4a06-be1c-a98b3255b734 ---- -# Iterators (C#) - -An *iterator* can be used to step through collections such as lists and arrays. - -An iterator method or `get` accessor performs a custom iteration over a collection. An iterator method uses the [yield return](../../language-reference/statements/yield.md) statement to return each element one at a time. When a `yield return` statement is reached, the current location in code is remembered. Execution is restarted from that location the next time the iterator function is called. - -You consume an iterator from client code by using a [foreach](../../language-reference/statements/iteration-statements.md#the-foreach-statement) statement or by using a LINQ query. - -In the following example, the first iteration of the `foreach` loop causes execution to proceed in the `SomeNumbers` iterator method until the first `yield return` statement is reached. This iteration returns a value of 3, and the current location in the iterator method is retained. On the next iteration of the loop, execution in the iterator method continues from where it left off, again stopping when it reaches a `yield return` statement. This iteration returns a value of 5, and the current location in the iterator method is again retained. The loop completes when the end of the iterator method is reached. - -```csharp -static void Main() -{ - foreach (int number in SomeNumbers()) - { - Console.Write(number.ToString() + " "); - } - // Output: 3 5 8 - Console.ReadKey(); -} - -public static System.Collections.IEnumerable SomeNumbers() -{ - yield return 3; - yield return 5; - yield return 8; -} -``` - -The return type of an iterator method or `get` accessor can be , , , or . - -You can use a `yield break` statement to end the iteration. - -> [!NOTE] -> For all examples in this topic except the Simple Iterator example, include [using](../../language-reference/keywords/using-directive.md) directives for the `System.Collections` and `System.Collections.Generic` namespaces. - -## Simple Iterator - -The following example has a single `yield return` statement that is inside a [for](../../language-reference/statements/iteration-statements.md#the-for-statement) loop. In `Main`, each iteration of the `foreach` statement body creates a call to the iterator function, which proceeds to the next `yield return` statement. - -```csharp -static void Main() -{ - foreach (int number in EvenSequence(5, 18)) - { - Console.Write(number.ToString() + " "); - } - // Output: 6 8 10 12 14 16 18 - Console.ReadKey(); -} - -public static System.Collections.Generic.IEnumerable - EvenSequence(int firstNumber, int lastNumber) -{ - // Yield even numbers in the range. - for (int number = firstNumber; number <= lastNumber; number++) - { - if (number % 2 == 0) - { - yield return number; - } - } -} -``` - -## Creating a Collection Class - -In the following example, the `DaysOfTheWeek` class implements the interface, which requires a method. The compiler implicitly calls the `GetEnumerator` method, which returns an . - -The `GetEnumerator` method returns each string one at a time by using the `yield return` statement. - -```csharp -static void Main() -{ - DaysOfTheWeek days = new DaysOfTheWeek(); - - foreach (string day in days) - { - Console.Write(day + " "); - } - // Output: Sun Mon Tue Wed Thu Fri Sat - Console.ReadKey(); -} - -public class DaysOfTheWeek : IEnumerable -{ - private string[] days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; - - public IEnumerator GetEnumerator() - { - for (int index = 0; index < days.Length; index++) - { - // Yield each day of the week. - yield return days[index]; - } - } -} -``` - -The following example creates a `Zoo` class that contains a collection of animals. - -The `foreach` statement that refers to the class instance (`theZoo`) implicitly calls the `GetEnumerator` method. The `foreach` statements that refer to the `Birds` and `Mammals` properties use the `AnimalsForType` named iterator method. - -```csharp -static void Main() -{ - Zoo theZoo = new Zoo(); - - theZoo.AddMammal("Whale"); - theZoo.AddMammal("Rhinoceros"); - theZoo.AddBird("Penguin"); - theZoo.AddBird("Warbler"); - - foreach (string name in theZoo) - { - Console.Write(name + " "); - } - Console.WriteLine(); - // Output: Whale Rhinoceros Penguin Warbler - - foreach (string name in theZoo.Birds) - { - Console.Write(name + " "); - } - Console.WriteLine(); - // Output: Penguin Warbler - - foreach (string name in theZoo.Mammals) - { - Console.Write(name + " "); - } - Console.WriteLine(); - // Output: Whale Rhinoceros - - Console.ReadKey(); -} - -public class Zoo : IEnumerable -{ - // Private members. - private List animals = new List(); - - // Public methods. - public void AddMammal(string name) - { - animals.Add(new Animal { Name = name, Type = Animal.TypeEnum.Mammal }); - } - - public void AddBird(string name) - { - animals.Add(new Animal { Name = name, Type = Animal.TypeEnum.Bird }); - } - - public IEnumerator GetEnumerator() - { - foreach (Animal theAnimal in animals) - { - yield return theAnimal.Name; - } - } - - // Public members. - public IEnumerable Mammals - { - get { return AnimalsForType(Animal.TypeEnum.Mammal); } - } - - public IEnumerable Birds - { - get { return AnimalsForType(Animal.TypeEnum.Bird); } - } - - // Private methods. - private IEnumerable AnimalsForType(Animal.TypeEnum type) - { - foreach (Animal theAnimal in animals) - { - if (theAnimal.Type == type) - { - yield return theAnimal.Name; - } - } - } - - // Private class. - private class Animal - { - public enum TypeEnum { Bird, Mammal } - - public string Name { get; set; } - public TypeEnum Type { get; set; } - } -} -``` - -## Using Iterators with a Generic List - -In the following example, the generic class implements the generic interface. The method assigns values to an array of type `T`. The method returns the array values by using the `yield return` statement. - -In addition to the generic method, the non-generic method must also be implemented. This is because inherits from . The non-generic implementation defers to the generic implementation. - -The example uses named iterators to support various ways of iterating through the same collection of data. These named iterators are the `TopToBottom` and `BottomToTop` properties, and the `TopN` method. - -The `BottomToTop` property uses an iterator in a `get` accessor. - -```csharp -static void Main() -{ - Stack theStack = new Stack(); - - // Add items to the stack. - for (int number = 0; number <= 9; number++) - { - theStack.Push(number); - } - - // Retrieve items from the stack. - // foreach is allowed because theStack implements IEnumerable. - foreach (int number in theStack) - { - Console.Write("{0} ", number); - } - Console.WriteLine(); - // Output: 9 8 7 6 5 4 3 2 1 0 - - // foreach is allowed, because theStack.TopToBottom returns IEnumerable(Of Integer). - foreach (int number in theStack.TopToBottom) - { - Console.Write("{0} ", number); - } - Console.WriteLine(); - // Output: 9 8 7 6 5 4 3 2 1 0 - - foreach (int number in theStack.BottomToTop) - { - Console.Write("{0} ", number); - } - Console.WriteLine(); - // Output: 0 1 2 3 4 5 6 7 8 9 - - foreach (int number in theStack.TopN(7)) - { - Console.Write("{0} ", number); - } - Console.WriteLine(); - // Output: 9 8 7 6 5 4 3 - - Console.ReadKey(); -} - -public class Stack : IEnumerable -{ - private T[] values = new T[100]; - private int top = 0; - - public void Push(T t) - { - values[top] = t; - top++; - } - public T Pop() - { - top--; - return values[top]; - } - - // This method implements the GetEnumerator method. It allows - // an instance of the class to be used in a foreach statement. - public IEnumerator GetEnumerator() - { - for (int index = top - 1; index >= 0; index--) - { - yield return values[index]; - } - } - - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - - public IEnumerable TopToBottom - { - get { return this; } - } - - public IEnumerable BottomToTop - { - get - { - for (int index = 0; index <= top - 1; index++) - { - yield return values[index]; - } - } - } - - public IEnumerable TopN(int itemsFromTop) - { - // Return less than itemsFromTop if necessary. - int startIndex = itemsFromTop >= top ? 0 : top - itemsFromTop; - - for (int index = top - 1; index >= startIndex; index--) - { - yield return values[index]; - } - } - -} -``` - -## Syntax Information - -An iterator can occur as a method or `get` accessor. An iterator cannot occur in an event, instance constructor, static constructor, or static finalizer. - -An implicit conversion must exist from the expression type in the `yield return` statement to the type argument for the `IEnumerable` returned by the iterator. - -In C#, an iterator method cannot have any `in`, `ref`, or `out` parameters. - -In C#, `yield` is not a reserved word and has special meaning only when it is used before a `return` or `break` keyword. - -## Technical Implementation - -Although you write an iterator as a method, the compiler translates it into a nested class that is, in effect, a state machine. This class keeps track of the position of the iterator as long the `foreach` loop in the client code continues. - -To see what the compiler does, you can use the Ildasm.exe tool to view the common intermediate language code that's generated for an iterator method. - -When you create an iterator for a [class](../../language-reference/keywords/class.md) or [struct](../../language-reference/builtin-types/struct.md), you don't have to implement the whole interface. When the compiler detects the iterator, it automatically generates the `Current`, `MoveNext`, and `Dispose` methods of the or interface. - -On each successive iteration of the `foreach` loop (or the direct call to `IEnumerator.MoveNext`), the next iterator code body resumes after the previous `yield return` statement. It then continues to the next `yield return` statement until the end of the iterator body is reached, or until a `yield break` statement is encountered. - -Iterators don't support the method. To reiterate from the start, you must obtain a new iterator. Calling on the iterator returned by an iterator method throws a . - -For additional information, see the [C# Language Specification](~/_csharpstandard/standard/classes.md#1515-synchronous-and-asynchronous-iterators). - -## Use of Iterators - -Iterators enable you to maintain the simplicity of a `foreach` loop when you need to use complex code to populate a list sequence. This can be useful when you want to do the following: - -- Modify the list sequence after the first `foreach` loop iteration. - -- Avoid fully loading a large list before the first iteration of a `foreach` loop. An example is a paged fetch to load a batch of table rows. Another example is the method, which implements iterators in .NET. - -- Encapsulate building the list in the iterator. In the iterator method, you can build the list and then yield each result in a loop. - -## See also - -- -- -- [foreach, in](../../language-reference/statements/iteration-statements.md#the-foreach-statement) -- [Generics](../../fundamentals/types/generics.md) diff --git a/docs/csharp/snippets/iterators/Generators.cs b/docs/csharp/snippets/iterators/Generators.cs deleted file mode 100644 index 5bbfe308ab4b9..0000000000000 --- a/docs/csharp/snippets/iterators/Generators.cs +++ /dev/null @@ -1,126 +0,0 @@ -namespace iterators; - -public class Generators -{ - // - public IEnumerable GetSingleDigitNumbers() - { - yield return 0; - yield return 1; - yield return 2; - yield return 3; - yield return 4; - yield return 5; - yield return 6; - yield return 7; - yield return 8; - yield return 9; - } - // - - // - public IEnumerable GetSingleDigitNumbersLoop() - { - int index = 0; - while (index < 10) - yield return index++; - } - // - - // - public IEnumerable GetSetsOfNumbers() - { - int index = 0; - while (index < 10) - yield return index++; - - yield return 50; - - index = 100; - while (index < 110) - yield return index++; - } - // - - // - public async IAsyncEnumerable GetSetsOfNumbersAsync() - { - int index = 0; - while (index < 10) - yield return index++; - - await Task.Delay(500); - - yield return 50; - - await Task.Delay(500); - - index = 100; - while (index < 110) - yield return index++; - } - // - - // - public IEnumerable GetFirstDecile() - { - int index = 0; - while (index < 10) - yield return index++; - - yield return 50; - - var items = new int[] {100, 101, 102, 103, 104, 105, 106, 107, 108, 109 }; - foreach (var item in items) - yield return item; - } - // - - // - public IEnumerable GetSingleDigitOddNumbers(bool getCollection) - { - if (getCollection == false) - return new int[0]; - else - return IteratorMethod(); - } - - private IEnumerable IteratorMethod() - { - int index = 0; - while (index < 10) - { - if (index % 2 == 1) - yield return index; - index++; - } - } - // -} - -public static class Extensions -{ - // - public static IEnumerable Sample(this IEnumerable sourceSequence, int interval) - { - int index = 0; - foreach (T item in sourceSequence) - { - if (index++ % interval == 0) - yield return item; - } - } - // - - // - public static async IAsyncEnumerable Sample(this IAsyncEnumerable sourceSequence, int interval) - { - int index = 0; - await foreach (T item in sourceSequence) - { - if (index++ % interval == 0) - yield return item; - } - } - // -} diff --git a/docs/csharp/snippets/iterators/Program.cs b/docs/csharp/snippets/iterators/Program.cs deleted file mode 100644 index a820a1c4ca278..0000000000000 --- a/docs/csharp/snippets/iterators/Program.cs +++ /dev/null @@ -1,60 +0,0 @@ -namespace iterators; - -class Program -{ - static async Task Main(string[] args) - { - firstExample(new int[] {1,2,3,4,5}); - await firstAsyncExample(asyncCollection()); - - var gen = new Generators(); - foreach(var item in gen.GetSetsOfNumbers()) - Console.WriteLine(item); - - await foreach(var item in gen.GetSetsOfNumbersAsync()) - Console.WriteLine(item); - - - async IAsyncEnumerable asyncCollection() - { - yield return 1; - yield return 2; - await Task.Delay(1000); - yield return 3; - yield return 4; - yield return 5; - } - } - - public static void firstExample(IEnumerable collection) - { - // - foreach (var item in collection) - { - Console.WriteLine(item?.ToString()); - } - // - } - - public static async Task firstAsyncExample(IAsyncEnumerable asyncSequence) - { - // - await foreach (var item in asyncSequence) - { - Console.WriteLine(item?.ToString()); - } - // - } - - public static void InsideForeach(IEnumerable collection) - { - // - IEnumerator enumerator = collection.GetEnumerator(); - while (enumerator.MoveNext()) - { - var item = enumerator.Current; - Console.WriteLine(item.ToString()); - } - // - } -} diff --git a/docs/csharp/toc.yml b/docs/csharp/toc.yml index 8bf7321fba9b4..db8d3486b56c0 100644 --- a/docs/csharp/toc.yml +++ b/docs/csharp/toc.yml @@ -150,6 +150,16 @@ items: href: fundamentals/statements/collections.md - name: LINQ href: fundamentals/statements/linq.md + - name: Build software + items: + - name: Overview + href: fundamentals/building-software/index.md + - name: Lambda expressions + href: fundamentals/building-software/lambdas.md + - name: Local functions + href: fundamentals/building-software/local-functions.md + - name: Iterators + href: fundamentals/building-software/iterators.md - name: Object-oriented programming items: - name: Classes, structs, and records @@ -355,8 +365,6 @@ items: items: - name: Methods href: methods.md - - name: Iterators - href: iterators.md - name: Delegates & events items: - name: Introduction to delegates @@ -537,8 +545,6 @@ items: href: programming-guide/concepts/covariance-contravariance/using-variance-in-delegates.md - name: Use Variance for Func and Action Generic Delegates href: programming-guide/concepts/covariance-contravariance/using-variance-for-func-and-action-generic-delegates.md - - name: Iterators - href: programming-guide/concepts/iterators.md - name: Equality and equality comparisons items: - name: Equality comparisons @@ -607,8 +613,6 @@ items: items: - name: Methods overview href: programming-guide/classes-and-structs/methods.md - - name: Local functions - href: programming-guide/classes-and-structs/local-functions.md - name: Implicitly Typed Local Variables href: programming-guide/classes-and-structs/implicitly-typed-local-variables.md - name: "How to use implicitly typed local variables and arrays in a query expression" diff --git a/docs/csharp/tour-of-csharp/tips-for-java-developers.md b/docs/csharp/tour-of-csharp/tips-for-java-developers.md index eeb394140e476..492fe3b44b640 100644 --- a/docs/csharp/tour-of-csharp/tips-for-java-developers.md +++ b/docs/csharp/tour-of-csharp/tips-for-java-developers.md @@ -86,7 +86,7 @@ You can work productively in C# almost immediately because of the similarities. 1. [***Nullable and non-nullable types***](../fundamentals/null-safety/nullable-reference-types.md): C# supports *nullable value types*, and *nullable reference types* by appending the `?` suffix to a type. For nullable types, the compiler warns you if you don't check for `null` before dereferencing the expression. For non-nullable types, the compiler warns you if you might be assigning a `null` value to that variable. Non-nullable reference types minimize programming errors that throw a . 1. [***Extensions***](../programming-guide/classes-and-structs/extension-methods.md): In C#, you can create members that *extend* a class or interface. Extensions provide new behavior for a type from a library, or all types that implement a given interface. 1. [***LINQ***](../linq/index.md): Language integrated query (LINQ) provides a common syntax to query and transform data, regardless of its storage. -1. [***Local functions***](../programming-guide/classes-and-structs/local-functions.md): In C#, you can nest functions inside methods, or other local functions. Local functions provide yet another layer of encapsulation. +1. [***Local functions***](../fundamentals/building-software/local-functions.md): In C#, you can nest functions inside methods, or other local functions. Local functions provide yet another layer of encapsulation. > [!TIP] > To learn more about C#'s type system—including `struct` vs. `class`, records, and interfaces—visit the [Type system](../fundamentals/types/index.md) overview in the Fundamentals section. diff --git a/docs/csharp/tour-of-csharp/tips-for-javascript-developers.md b/docs/csharp/tour-of-csharp/tips-for-javascript-developers.md index 8f76f99bfc332..cc2d830e6eef4 100644 --- a/docs/csharp/tour-of-csharp/tips-for-javascript-developers.md +++ b/docs/csharp/tour-of-csharp/tips-for-javascript-developers.md @@ -11,7 +11,7 @@ C#, TypeScript, and JavaScript are all members of the C family of languages. The 1. ***Similar syntax***: JavaScript, TypeScript, and C# are in the C family of languages. That similarity means you can already read and understand C#. There are some differences, but most of the syntax is the same as JavaScript and C. The curly braces and semicolons are familiar. The control statements like `if`, `else`, and `switch` are the same. The looping statements of `for`, `while`, and `do...while` are the same. The same keywords for `class` and `interface` are in both C# and TypeScript. The access modifiers in TypeScript and C#, from `public` to `private`, are the same. 1. ***The `=>` token***: All languages support lightweight function definitions. In C#, they're referred to as [*lambda expressions*](../language-reference/operators/lambda-expressions.md). In JavaScript, they're typically called *arrow functions*. -1. ***Function hierarchies***: All three languages support [local functions](../programming-guide/classes-and-structs/local-functions.md), which are functions defined in other functions. +1. ***Function hierarchies***: All three languages support [local functions](../fundamentals/building-software/local-functions.md), which are functions defined in other functions. 1. ***Async / Await***: All three languages share the same `async` and `await` keywords for asynchronous programming. 1. ***Garbage collection***: All three languages rely on a garbage collector for automatic memory management. 1. ***Event model***: C#'s [`event`](../events-overview.md) syntax is similar to JavaScript's model for document object model (DOM) events. diff --git a/docs/csharp/tutorials/working-with-linq.md b/docs/csharp/tutorials/working-with-linq.md index d16a9b64175d4..e049f8073f18e 100644 --- a/docs/csharp/tutorials/working-with-linq.md +++ b/docs/csharp/tutorials/working-with-linq.md @@ -38,7 +38,7 @@ If you've never used C# before, [this tutorial](console-teleprompter.md) explain > [!TIP] > For this tutorial, you can organize your code in a namespace called `LinqFaroShuffle` to match the sample code, or you can use the default global namespace. If you choose to use a namespace, make sure all your classes and methods are consistently within the same namespace, or add appropriate `using` statements as needed. -Consider what constitutes a deck of cards. A deck of playing cards has four suits, and each suit has 13 values. Normally, you might consider creating a `Card` class right away and populating a collection of `Card` objects by hand. With LINQ, you can be more concise than the usual way of creating a deck of cards. Instead of creating a `Card` class, create two sequences to represent suits and ranks. Create a pair of [*iterator methods*](../iterators.md#enumeration-sources-with-iterator-methods) that generate the ranks and suits as s of strings: +Consider what constitutes a deck of cards. A deck of playing cards has four suits, and each suit has 13 values. Normally, you might consider creating a `Card` class right away and populating a collection of `Card` objects by hand. With LINQ, you can be more concise than the usual way of creating a deck of cards. Instead of creating a `Card` class, create two sequences to represent suits and ranks. Create a pair of [*iterator methods*](../fundamentals/building-software/iterators.md#produce-elements-with-yield-return) that generate the ranks and suits as s of strings: :::code source="snippets/console-linq/InterimSteps.cs" id="StepOne"::: diff --git a/docs/csharp/whats-new/csharp-version-history.md b/docs/csharp/whats-new/csharp-version-history.md index c67e0674bbeaf..cff9d57063d9c 100644 --- a/docs/csharp/whats-new/csharp-version-history.md +++ b/docs/csharp/whats-new/csharp-version-history.md @@ -211,7 +211,7 @@ C# 8.0 is the first major C# release that specifically targets .NET Core. Some f - Tuple patterns - Positional patterns - [Using declarations](../language-reference/statements/using.md) -- [Static local functions](../programming-guide/classes-and-structs/local-functions.md) +- [Static local functions](../fundamentals/building-software/local-functions.md) - Lambda expressions, anonymous methods, and local functions can declare parameters that shadow local variables and parameters from an enclosing scope. - [Disposable ref structs](../language-reference/builtin-types/ref-struct.md) - [Nullable reference types](../language-reference/builtin-types/nullable-reference-types.md) @@ -304,7 +304,7 @@ C# version 7.0 was released with Visual Studio 2017. This version has some evolu - Out variables - [Tuples and deconstruction](../language-reference/builtin-types/value-tuples.md) - [Pattern matching](../fundamentals/patterns/pattern-matching.md) -- [Local functions](../programming-guide/classes-and-structs/local-functions.md) +- [Local functions](../fundamentals/building-software/local-functions.md) - [Expanded expression bodied members](../language-reference/operators/lambda-operator.md#expression-body-definition) - [Ref locals](../language-reference/statements/declarations.md#reference-variables) - [Ref returns](../language-reference/statements/jump-statements.md#ref-returns) @@ -403,7 +403,7 @@ Let's take a look at some major features of C# 2.0, released in 2005, along with - [Partial types](../programming-guide/classes-and-structs/partial-classes-and-methods.md#partial-classes) - [Anonymous methods](../language-reference/operators/delegate-operator.md) - [Nullable value types](../language-reference/builtin-types/nullable-value-types.md) -- [Iterators](../programming-guide/concepts/iterators.md) +- [Iterators](../fundamentals/building-software/iterators.md) - [Covariance and contravariance](../programming-guide/concepts/covariance-contravariance/index.md) Other C# 2.0 features added capabilities to existing features: diff --git a/docs/fundamentals/code-analysis/style-rules/ide0039.md b/docs/fundamentals/code-analysis/style-rules/ide0039.md index 19e4225527fb8..5a7d2df9cc7f8 100644 --- a/docs/fundamentals/code-analysis/style-rules/ide0039.md +++ b/docs/fundamentals/code-analysis/style-rules/ide0039.md @@ -26,7 +26,7 @@ dev_langs: ## Overview -This style rule concerns the use of [local functions](../../../csharp/programming-guide/classes-and-structs/local-functions.md) versus [lambda expressions](../../../csharp/language-reference/operators/lambda-expressions.md) (anonymous functions). +This style rule concerns the use of [local functions](../../../csharp/fundamentals/building-software/local-functions.md) versus [lambda expressions](../../../csharp/fundamentals/building-software/lambdas.md) (anonymous functions). ## Options diff --git a/docs/fundamentals/code-analysis/style-rules/ide0061.md b/docs/fundamentals/code-analysis/style-rules/ide0061.md index e52beb636200b..a53e1d3fe5e14 100644 --- a/docs/fundamentals/code-analysis/style-rules/ide0061.md +++ b/docs/fundamentals/code-analysis/style-rules/ide0061.md @@ -26,7 +26,7 @@ dev_langs: ## Overview -This style rule concerns the use of [expression bodies](../../../csharp/language-reference/operators/lambda-operator.md#expression-body-definition) versus block bodies for [local functions](../../../csharp/programming-guide/classes-and-structs/local-functions.md). Local functions are private methods of a type that are nested in another member. +This style rule concerns the use of [expression bodies](../../../csharp/language-reference/operators/lambda-operator.md#expression-body-definition) versus block bodies for [local functions](../../../csharp/fundamentals/building-software/local-functions.md). Local functions are private methods of a type that are nested in another member. ## Options diff --git a/docs/fundamentals/code-analysis/style-rules/ide0062.md b/docs/fundamentals/code-analysis/style-rules/ide0062.md index b1d51d8173247..bd79f2ab4bd54 100644 --- a/docs/fundamentals/code-analysis/style-rules/ide0062.md +++ b/docs/fundamentals/code-analysis/style-rules/ide0062.md @@ -26,7 +26,7 @@ dev_langs: ## Overview -This style rule flags [local functions](../../../csharp/programming-guide/classes-and-structs/local-functions.md) that can be marked `static`. Marking them as `static` prevents local variables from being captured, which would result in a memory allocation. +This style rule flags [local functions](../../../csharp/fundamentals/building-software/local-functions.md) that can be marked `static`. Marking them as `static` prevents local variables from being captured, which would result in a memory allocation. ## Options diff --git a/docs/samples-and-tutorials/index.md b/docs/samples-and-tutorials/index.md index e793e563fe556..f1f4b17656b1b 100644 --- a/docs/samples-and-tutorials/index.md +++ b/docs/samples-and-tutorials/index.md @@ -38,7 +38,7 @@ See the [ASP.NET Core tutorials](/aspnet/core/tutorials/). Many articles in the ### Samples -**[Iterators](../csharp/iterators.md)** +**[Iterators](../csharp/fundamentals/building-software/iterators.md)** This sample demonstrates the syntax and features for creating and consuming C# iterators. The [completed sample](https://github.com/dotnet/samples/tree/main/csharp/iterators) is available in the dotnet/samples repository on GitHub. diff --git a/docs/standard/parallel-programming/how-to-speed-up-small-loop-bodies.md b/docs/standard/parallel-programming/how-to-speed-up-small-loop-bodies.md index dc3b276dbee4e..877970199e5bd 100644 --- a/docs/standard/parallel-programming/how-to-speed-up-small-loop-bodies.md +++ b/docs/standard/parallel-programming/how-to-speed-up-small-loop-bodies.md @@ -24,6 +24,6 @@ When a - [Data Parallelism](data-parallelism-task-parallel-library.md) - [Custom Partitioners for PLINQ and TPL](custom-partitioners-for-plinq-and-tpl.md) -- [Iterators (C#)](../../csharp/programming-guide/concepts/iterators.md) +- [Iterators (C#)](../../csharp/fundamentals/building-software/iterators.md) - [Iterators (Visual Basic)](../../visual-basic/programming-guide/concepts/iterators.md) - [Lambda Expressions in PLINQ and TPL](lambda-expressions-in-plinq-and-tpl.md) From 29c94695d35d198a27021956593de0f04f1d01dd Mon Sep 17 00:00:00 2001 From: surya pratap singh Date: Tue, 20 Oct 2026 19:15:22 +0530 Subject: [PATCH 35/41] Correct union pattern matching note and exhaustiveness null handling (#55951) (#56471) --- docs/csharp/language-reference/builtin-types/union.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/csharp/language-reference/builtin-types/union.md b/docs/csharp/language-reference/builtin-types/union.md index 9e572f759a5fd..f594a3117f729 100644 --- a/docs/csharp/language-reference/builtin-types/union.md +++ b/docs/csharp/language-reference/builtin-types/union.md @@ -89,7 +89,7 @@ GetPet() switch ``` > [!NOTE] -> Because patterns apply to `Value`, a pattern like `pet is Pet` typically doesn't match, since `Pet` is tested against the *contents* of the union, not the union itself. +> A pattern like `pet is Pet` always evaluates to `true` (emitting warning CS0183) because the union instance itself is tested. It cannot be used to determine whether the union contains a value. To check whether a union instance contains a non-null value, use `pet.Value is not null` or `pet is not null`. ### Null matching @@ -115,11 +115,11 @@ A `switch` expression is exhaustive when it handles all case types of a union. T :::code language="csharp" source="snippets/unions/BasicUnion.cs" id="PatternMatching"::: -If the null state of the union's `Value` property is "maybe null," you must also handle `null` to avoid a warning: +When any case type is nullable, the null state of the union's `Value` property is "maybe null," and you must also handle `null` to avoid a compiler warning (CS8655). -:::code language="csharp" source="snippets/unions/NullHandling.cs" id="NullHandling"::: +When no case type is nullable, the compiler treats `Value` as "not null" and does not warn if a `null` arm is omitted. However, handling `null` is still needed for correctness whenever a union can have its default value (such as unassigned fields, array elements, or `default(T)`). Without a `null` arm, evaluating a default union throws a at run time: -This situation can arise when the `union` expression is the default value or isn't definitely assigned, as shown in the preceding sample. +:::code language="csharp" source="snippets/unions/NullHandling.cs" id="NullHandling"::: ## Nullability From 0f739d409160a53865b98245dc850e6a3224d0fd Mon Sep 17 00:00:00 2001 From: surya pratap singh Date: Tue, 20 Oct 2026 19:24:05 +0530 Subject: [PATCH 36/41] Fix matrix multiplication assignment statement in parallel samples (#40576) (#56466) --- .../VS_Snippets_Misc/tpl_parallel/cs/simpleparallelfor.cs | 2 +- .../VS_Snippets_Misc/tpl_parallel/vb/simpleparallelfor.vb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/samples/snippets/csharp/VS_Snippets_Misc/tpl_parallel/cs/simpleparallelfor.cs b/samples/snippets/csharp/VS_Snippets_Misc/tpl_parallel/cs/simpleparallelfor.cs index 400d703d742c0..75ebe13a35b3a 100644 --- a/samples/snippets/csharp/VS_Snippets_Misc/tpl_parallel/cs/simpleparallelfor.cs +++ b/samples/snippets/csharp/VS_Snippets_Misc/tpl_parallel/cs/simpleparallelfor.cs @@ -23,7 +23,7 @@ static void MultiplyMatricesSequential(double[,] matA, double[,] matB, { temp += matA[i, k] * matB[k, j]; } - result[i, j] += temp; + result[i, j] = temp; } } } diff --git a/samples/snippets/visualbasic/VS_Snippets_Misc/tpl_parallel/vb/simpleparallelfor.vb b/samples/snippets/visualbasic/VS_Snippets_Misc/tpl_parallel/vb/simpleparallelfor.vb index 9c3679a936653..c1caab51ceedb 100644 --- a/samples/snippets/visualbasic/VS_Snippets_Misc/tpl_parallel/vb/simpleparallelfor.vb +++ b/samples/snippets/visualbasic/VS_Snippets_Misc/tpl_parallel/vb/simpleparallelfor.vb @@ -16,7 +16,7 @@ Module MultiplyMatrices For k As Integer = 0 To matACols - 1 temp += matA(i, k) * matB(k, j) Next - result(i, j) += temp + result(i, j) = temp Next Next End Sub @@ -36,7 +36,7 @@ Module MultiplyMatrices For k As Integer = 0 To matACols - 1 temp += matA(i, k) * matB(k, j) Next - result(i, j) += temp + result(i, j) = temp Next End Sub) End Sub From dfe6ae54d3cf986ba03d95075e61ae006fefb9f9 Mon Sep 17 00:00:00 2001 From: surya pratap singh Date: Tue, 20 Oct 2026 19:26:23 +0530 Subject: [PATCH 37/41] Add missing bool keyword in disabled marshalling table (#39872) (#56468) --- docs/standard/native-interop/disabled-marshalling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard/native-interop/disabled-marshalling.md b/docs/standard/native-interop/disabled-marshalling.md index e59c7baaebe7a..561de700f5057 100644 --- a/docs/standard/native-interop/disabled-marshalling.md +++ b/docs/standard/native-interop/disabled-marshalling.md @@ -40,7 +40,7 @@ When marshalling is disabled, the rules for default marshalling change to much s | `char` | `System.Char` | `char16_t` (`CharSet` on the P/Invoke has no effect) | | `nint` | `System.IntPtr` | `intptr_t` | | `nuint` | `System.UIntPtr` | `uintptr_t` | -| | `System.Boolean` | `bool` | +| `bool` | `System.Boolean` | `bool` | | | User-defined [C# `unmanaged`](../../csharp/language-reference/builtin-types/unmanaged-types.md) type with no fields with `LayoutKind.Auto` | Treated as a blittable type. All [customized struct marshalling](customize-struct-marshalling.md) is ignored. | | | All other types | unsupported | From c35ea62d04e71bb92aa9a9cc4da55aea9fb3fdf2 Mon Sep 17 00:00:00 2001 From: surya pratap singh Date: Tue, 20 Oct 2026 19:27:50 +0530 Subject: [PATCH 38/41] Fix parameter name for ERROR_INSUFFICIENT_BUFFER in EvaluatePolicy (#40875) (#56467) --- .../iclrhostbindingpolicymanager-evaluatepolicy-method.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/framework/unmanaged-api/hosting/iclrhostbindingpolicymanager-evaluatepolicy-method.md b/docs/framework/unmanaged-api/hosting/iclrhostbindingpolicymanager-evaluatepolicy-method.md index 8c72e0eba30a8..081a13398c2ec 100644 --- a/docs/framework/unmanaged-api/hosting/iclrhostbindingpolicymanager-evaluatepolicy-method.md +++ b/docs/framework/unmanaged-api/hosting/iclrhostbindingpolicymanager-evaluatepolicy-method.md @@ -60,7 +60,7 @@ HRESULT EvaluatePolicy ( |-------------|-----------------| |S_OK|The evaluation completed successfully.| |E_INVALIDARG|Either `pwzReferenceIdentity` or `pbApplicationPolicy` is a null reference.| -|ERROR_INSUFFICIENT_BUFFER|`cbAppPolicySize` is too small.| +|ERROR_INSUFFICIENT_BUFFER|`pcchPostPolicyReferenceIdentity` is too small.| |HOST_E_CLRNOTAVAILABLE|The common language runtime (CLR) has not been loaded into a process, or the CLR is in a state in which it cannot run managed code or process the call successfully.| |HOST_E_TIMEOUT|The call timed out.| |HOST_E_NOT_OWNER|The caller does not own the lock.| From 46b5e7a5bf770db581c22b22c825b57e0ce7187b Mon Sep 17 00:00:00 2001 From: Jaroslav Ruzicka <14963300+rosebyte@users.noreply.github.com> Date: Tue, 20 Oct 2026 16:05:49 +0200 Subject: [PATCH 39/41] Add metrics configuration docs (#55759) Co-authored-by: rosebyte --- docs/core/diagnostics/metrics-collection.md | 8 ++- .../core/diagnostics/metrics-configuration.md | 60 +++++++++++++++++++ docs/core/diagnostics/metrics.md | 1 + .../metrics-configuration/appsettings.json | 10 ++++ docs/navigate/tools-diagnostics/toc.yml | 2 + 5 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 docs/core/diagnostics/metrics-configuration.md create mode 100644 docs/core/diagnostics/snippets/metrics-configuration/appsettings.json diff --git a/docs/core/diagnostics/metrics-collection.md b/docs/core/diagnostics/metrics-collection.md index f7f338b66c8aa..47937aa456693 100644 --- a/docs/core/diagnostics/metrics-collection.md +++ b/docs/core/diagnostics/metrics-collection.md @@ -2,12 +2,12 @@ title: Collect metrics - .NET description: Tutorial to collect metrics in .NET applications ms.topic: tutorial -ms.date: 10/27/2021 +ms.date: 10/20/2026 --- # Collect metrics -**This article applies to: ✔️** .NET 6.0 and later **✔️** .NET Framework 4.6.1 and later +**This article applies to: ✔️** .NET 8 and later **✔️** .NET Framework 4.6.1 and later Instrumented code can record numeric measurements, but the measurements usually need to be aggregated, transmitted, and stored to create useful metrics for monitoring. The process of aggregating, transmitting, and storing data is called collection. This tutorial shows several examples of collecting metrics: @@ -19,7 +19,7 @@ For more information on custom metric instrumentation and options, see [Compare ## Prerequisites -- [.NET 6.0 SDK](https://dotnet.microsoft.com/download/dotnet) or a later +- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet) or later. ## Create an example app @@ -287,3 +287,5 @@ To guarantee that a certain region of code in the callback isn't currently execu - Synchronization adds performance overhead in every measurement callback. - `MeterListener` is designed as a highly performance conscious API. + +For custom listeners that use dependency injection and configuration, see [Configure metrics](metrics-configuration.md). diff --git a/docs/core/diagnostics/metrics-configuration.md b/docs/core/diagnostics/metrics-configuration.md new file mode 100644 index 0000000000000..27ad9a06fe301 --- /dev/null +++ b/docs/core/diagnostics/metrics-configuration.md @@ -0,0 +1,60 @@ +--- +title: Configure metrics - .NET +description: Learn how to use configuration to filter instruments for custom metrics listeners in .NET apps. +ms.topic: how-to +ms.date: 10/20/2026 +ai-usage: ai-generated +--- + +# Configure metrics + +Use to filter instruments for custom metrics listeners that integrate with dependency injection (DI). These filters control which instruments a listener can subscribe to, not how it aggregates or exports measurements. + +## Metrics listeners + +A metrics listener receives measurements from instruments, such as counters and histograms, created by a . The class provides a low-level API to discover instruments and subscribe to their measurements directly. The [metrics collection tutorial](metrics-collection.md#create-a-custom-collection-tool-using-the-net-meterlistener-api) shows how to use this API. + +The interface lets custom listeners integrate with DI and configuration-based filters. The metrics infrastructure creates a `MeterListener` internally for each registered `IMetricsListener` implementation. It applies the configured rules before it calls to offer an instrument to the implementation. If the listener accepts the instrument, the infrastructure delivers measurements to the callbacks that the implementation provides. + +To register a custom listener, use . The configuration in this article applies to these registered listeners, not to `MeterListener` instances that your code or a collector configures directly. + +## Load configuration + +[Generic Host](../extensions/generic-host.md) applications that use the default builder settings automatically call and load the `Metrics` section from `IConfiguration`. In a non-hosted DI application, call `AddMetrics` and explicitly to bind the same section: + +```csharp +services.AddMetrics(metrics => + metrics.AddConfiguration(configuration.GetSection("Metrics"))); +``` + +To use these extension methods, import the `Microsoft.Extensions.DependencyInjection` and `Microsoft.Extensions.Diagnostics.Metrics` namespaces. + +> [!IMPORTANT] +> The `Metrics` configuration only filters instruments for registered `IMetricsListener` implementations. It doesn't register listeners or activate their subscriptions, create metrics, aggregate measurements, export data, or automatically configure OpenTelemetry, Prometheus, `dotnet-counters`, or any other collector. + +## Select meters and instruments + +Use the following sections to choose which meters the rules apply to: + +| Section | Applies to | +| --- | --- | +| `EnabledMetrics` | Both global and local meters. | +| `EnabledGlobalMetrics` | Meters without a scope, such as meters created directly with `Meter`. | +| `EnabledLocalMetrics` | Meters scoped to the service container's . | + +An `EnabledMetrics`, `EnabledGlobalMetrics`, or `EnabledLocalMetrics` section directly under `Metrics` applies to every registered listener. To target one listener, nest the section under the listener's value, such as `Metrics:MyListener:EnabledMetrics`. Listener and instrument names require exact matches without regard to case. + +Within any of these sections, a Boolean meter entry enables or disables every instrument whose meter name matches. To set instrument-level rules, use an object with instrument names as keys. The special `Default` entry supplies a fallback. A Boolean `Default` entry at the meter level applies to otherwise unmatched meters. Within a meter object, `Default` applies to otherwise unmatched instruments. A listener doesn't receive an instrument if no rule matches it. + +The following `appsettings.json` example enables instruments from meters whose names start with `Contoso.Web`, except for instruments named `request-duration`: + +:::code language="json" source="./snippets/metrics-configuration/appsettings.json"::: + +## Match rules and resolve conflicts + +Meter names use case-insensitive prefix matching. A meter name can contain at most one `*` wildcard to match a prefix and suffix. More-specific rules take precedence in this order: listener-specific rules, longer meter-name patterns, instrument-specific rules, and scope-specific rules. If equally specific rules conflict, the last configured rule wins. + +## See also + +- [Collect metrics](metrics-collection.md) +- [Create custom metrics](metrics-instrumentation.md) diff --git a/docs/core/diagnostics/metrics.md b/docs/core/diagnostics/metrics.md index d87498f4cf497..85d7a52e850ae 100644 --- a/docs/core/diagnostics/metrics.md +++ b/docs/core/diagnostics/metrics.md @@ -28,6 +28,7 @@ There are two parts to using metrics in a .NET app: - [Instrumentation tutorial](metrics-instrumentation.md) - How to create new metrics in code - [Collection tutorial](metrics-collection.md) - How to store and view metric data for your app +- [Metrics configuration](metrics-configuration.md) - How to filter instruments for listeners that use dependency injection - [Source generated metrics](metrics-generator.md) - How to use source generator to create metrics - [Source-generated metrics with strongly-typed tags](metrics-strongly-typed.md) - How to use source-generated metrics with strongly-typed tags - [Built-in metrics](built-in-metrics.md) - Discover metrics that are ready for use in .NET runtime libraries diff --git a/docs/core/diagnostics/snippets/metrics-configuration/appsettings.json b/docs/core/diagnostics/snippets/metrics-configuration/appsettings.json new file mode 100644 index 0000000000000..2ff4d0bed4d2c --- /dev/null +++ b/docs/core/diagnostics/snippets/metrics-configuration/appsettings.json @@ -0,0 +1,10 @@ +{ + "Metrics": { + "EnabledMetrics": { + "Contoso.Web": { + "Default": true, + "request-duration": false + } + } + } +} diff --git a/docs/navigate/tools-diagnostics/toc.yml b/docs/navigate/tools-diagnostics/toc.yml index 941a2f583fd2e..a0535c61e96e2 100644 --- a/docs/navigate/tools-diagnostics/toc.yml +++ b/docs/navigate/tools-diagnostics/toc.yml @@ -549,6 +549,8 @@ items: displayName: exception summarization,exception summary,exception summarizer,ExceptionSummary - name: Collection href: ../../core/diagnostics/metrics-collection.md + - name: Configuration + href: ../../core/diagnostics/metrics-configuration.md - name: Compile-time metric source generation href: ../../core/diagnostics/metrics-generator.md - name: Strongly typed source-generated metrics From 6eac3cc37ed0abf80414901ac90ec622d2b5075f Mon Sep 17 00:00:00 2001 From: surya pratap singh Date: Tue, 20 Oct 2026 19:52:14 +0530 Subject: [PATCH 40/41] Remove unnecessary quotes around happen in Order of Precedence (#44730) (#56470) --- docs/core/extensions/httpclient-factory-keyed-di.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/core/extensions/httpclient-factory-keyed-di.md b/docs/core/extensions/httpclient-factory-keyed-di.md index 4e5d9bb253df5..c82087a9215e1 100644 --- a/docs/core/extensions/httpclient-factory-keyed-di.md +++ b/docs/core/extensions/httpclient-factory-keyed-di.md @@ -288,7 +288,7 @@ If called together or any of them more than once, `AddAsKeyed()` and `RemoveAsKe 1. If called for the same name, the last setting wins: the lifetime from the last `AddAsKeyed()` is used to create the Keyed registration (unless `RemoveAsKeyed()` was called last, in which case the name is excluded). 2. If used only within `ConfigureHttpClientDefaults`, the last setting wins. -3. If both `ConfigureHttpClientDefaults` and specific client name were used, all defaults are considered to "happen" before all per-name settings. Thus, defaults can be disregarded, and the last of the per-name settings wins. +3. If both `ConfigureHttpClientDefaults` and specific client name were used, all defaults are considered to happen before all per-name settings. Thus, defaults can be disregarded, and the last of the per-name settings wins. ## See also From a109e77898150ddb66e3000ce315d23fcc2700e9 Mon Sep 17 00:00:00 2001 From: "azure-sdk-automation[bot]" <191533747+azure-sdk-automation[bot]@users.noreply.github.com> Date: Tue, 20 Oct 2026 13:15:33 -0400 Subject: [PATCH 41/41] Update package index with latest published versions (#56455) Co-authored-by: azure-sdk --- docs/azure/includes/dotnet-all.md | 38 +++++++++++++++---------------- docs/azure/includes/dotnet-new.md | 5 ++-- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md index 881de691c433f..dd6680d908966 100644 --- a/docs/azure/includes/dotnet-all.md +++ b/docs/azure/includes/dotnet-all.md @@ -12,7 +12,6 @@ | AI Model Inference | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.AI.Inference/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/AI.Inference-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Inference_1.0.0-beta.5/sdk/ai/Azure.AI.Inference/) | | AI Projects - Agents | NuGet [2.0.0](https://www.nuget.org/packages/Azure.AI.Projects.Agents/2.0.0)
NuGet [3.0.0-beta.5](https://www.nuget.org/packages/Azure.AI.Projects.Agents/3.0.0-beta.5) | [docs](/dotnet/api/overview/azure/AI.Projects.Agents-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects.Agents_2.0.0/sdk/ai/Azure.AI.Projects.Agents/)
GitHub [3.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects.Agents_3.0.0-beta.5/sdk/ai/Azure.AI.Projects.Agents/) | | AI Projects - OpenAI | NuGet [2.0.0-beta.1](https://www.nuget.org/packages/Azure.AI.Projects.OpenAI/2.0.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.Projects.OpenAI-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [2.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Projects.OpenAI_2.0.0-beta.1/sdk/ai/Azure.AI.Projects.OpenAI/) | -| Anomaly Detector | NuGet [3.0.0-preview.7](https://www.nuget.org/packages/Azure.AI.AnomalyDetector/3.0.0-preview.7) | [docs](/dotnet/api/overview/azure/AI.AnomalyDetector-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [3.0.0-preview.7](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.AnomalyDetector_3.0.0-preview.7/sdk/anomalydetector/Azure.AI.AnomalyDetector/) | | App Configuration | NuGet [1.11.1](https://www.nuget.org/packages/Azure.Data.AppConfiguration/1.11.1)
NuGet [1.12.0-beta.1](https://www.nuget.org/packages/Azure.Data.AppConfiguration/1.12.0-beta.1) | [docs](/dotnet/api/overview/azure/Data.AppConfiguration-readme) | GitHub [1.11.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Data.AppConfiguration_1.11.1/sdk/appconfiguration/Azure.Data.AppConfiguration/)
GitHub [1.12.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Data.AppConfiguration_1.12.0-beta.1/sdk/appconfiguration/Azure.Data.AppConfiguration/) | | App Configuration Provider | NuGet [8.6.0](https://www.nuget.org/packages/Microsoft.Extensions.Configuration.AzureAppConfiguration/8.6.0)
NuGet [8.7.0-preview](https://www.nuget.org/packages/Microsoft.Extensions.Configuration.AzureAppConfiguration/8.7.0-preview) | [docs](/dotnet/api/overview/azure/Microsoft.Extensions.Configuration.AzureAppConfiguration-readme) | GitHub [8.6.0](https://github.com/Azure/AppConfiguration-DotnetProvider) | | Attestation | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Security.Attestation/1.0.0) | [docs](/dotnet/api/overview/azure/Security.Attestation-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.Attestation_1.0.0/sdk/attestation/Azure.Security.Attestation/) | @@ -91,7 +90,6 @@ | OpenAI Inference | NuGet [2.1.0](https://www.nuget.org/packages/Azure.AI.OpenAI/2.1.0)
NuGet [2.9.0-beta.1](https://www.nuget.org/packages/Azure.AI.OpenAI/2.9.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.OpenAI-readme) | GitHub [2.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.1.0/sdk/openai/Azure.AI.OpenAI/)
GitHub [2.9.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.9.0-beta.1/sdk/openai/Azure.AI.OpenAI/) | | OpenTelemetry AspNetCore | NuGet [1.6.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.AspNetCore/1.6.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.AspNetCore-readme) | GitHub [1.6.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.AspNetCore_1.6.0/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/) | | OpenTelemetry Exporter | NuGet [1.10.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.Exporter/1.10.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.Exporter-readme) | GitHub [1.10.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.Exporter_1.10.0/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/) | -| Personalizer | NuGet [2.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Personalizer/2.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Personalizer-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [2.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Personalizer_2.0.0-beta.2/sdk/personalizer/Azure.AI.Personalizer/) | | Planetary Computer | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Analytics.PlanetaryComputer/1.0.0) | [docs](/dotnet/api/overview/azure/Analytics.PlanetaryComputer-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.PlanetaryComputer_1.0.0/sdk/planetarycomputer/Azure.Analytics.PlanetaryComputer/) | | 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/) | @@ -167,7 +165,7 @@ | Provisioning - Container Apps | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Provisioning.AppContainers/1.2.0)
NuGet [1.3.0-beta.2](https://www.nuget.org/packages/Azure.Provisioning.AppContainers/1.3.0-beta.2) | [docs](/dotnet/api/overview/azure/Provisioning.AppContainers-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AppContainers_1.2.0/sdk/containerapps/Azure.Provisioning.AppContainers/)
GitHub [1.3.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AppContainers_1.3.0-beta.2/sdk/containerapps/Azure.Provisioning.AppContainers/) | | Provisioning - Container Instances | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.ContainerInstance/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.ContainerInstance-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ContainerInstance_1.0.0-beta.1/sdk/containerinstance/Azure.Provisioning.ContainerInstance/) | | Provisioning - Container Registry | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Provisioning.ContainerRegistry/1.1.0) | [docs](/dotnet/api/overview/azure/Provisioning.ContainerRegistry-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ContainerRegistry_1.1.0/sdk/provisioning/Azure.Provisioning.ContainerRegistry/) | -| Provisioning - Container Service | NuGet [1.0.0-beta.7](https://www.nuget.org/packages/Azure.Provisioning.ContainerService/1.0.0-beta.7) | [docs](/dotnet/api/overview/azure/Provisioning.ContainerService-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.7](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ContainerService_1.0.0-beta.7/sdk/containerservice/Azure.Provisioning.ContainerService/) | +| Provisioning - Container Service | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Provisioning.ContainerService/1.0.0) | [docs](/dotnet/api/overview/azure/Provisioning.ContainerService-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ContainerService_1.0.0/sdk/containerservice/Azure.Provisioning.ContainerService/) | | Provisioning - Content Delivery Network | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.Provisioning.Cdn/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/Provisioning.Cdn-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Cdn_1.0.0-beta.4/sdk/cdn/Azure.Provisioning.Cdn/) | | Provisioning - Cosmos DB | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Provisioning.CosmosDB/1.0.0)
NuGet [1.1.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.CosmosDB/1.1.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.CosmosDB-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.CosmosDB_1.0.0/sdk/provisioning/Azure.Provisioning.CosmosDB/)
GitHub [1.1.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.CosmosDB_1.1.0-beta.1/sdk/provisioning/Azure.Provisioning.CosmosDB/) | | Provisioning - Cost Management | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.CostManagement/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.CostManagement-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.CostManagement_1.0.0-beta.1/sdk/costmanagement/Azure.Provisioning.CostManagement/) | @@ -332,7 +330,7 @@ | Resource Management - Healthcare APIs | NuGet [1.3.2](https://www.nuget.org/packages/Azure.ResourceManager.HealthcareApis/1.3.2) | [docs](/dotnet/api/overview/azure/ResourceManager.HealthcareApis-readme) | GitHub [1.3.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.HealthcareApis_1.3.2/sdk/healthcareapis/Azure.ResourceManager.HealthcareApis/) | | Resource Management - HorizonDB | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.HorizonDB/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.HorizonDB-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.HorizonDB_1.0.0-beta.2/sdk/horizondb/Azure.ResourceManager.HorizonDB/) | | Resource Management - Hybrid Compute | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.HybridCompute/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.HybridCompute-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.HybridCompute_1.1.0/sdk/hybridcompute/Azure.ResourceManager.HybridCompute/) | -| Resource Management - Hybrid Connectivity | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.HybridConnectivity/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.HybridConnectivity-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.HybridConnectivity_1.1.1/sdk/hybridconnectivity/Azure.ResourceManager.HybridConnectivity/) | +| Resource Management - Hybrid Connectivity | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.HybridConnectivity/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.HybridConnectivity-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.HybridConnectivity_1.2.0/sdk/hybridconnectivity/Azure.ResourceManager.HybridConnectivity/) | | Resource Management - Hybrid Container Service | NuGet [1.0.2](https://www.nuget.org/packages/Azure.ResourceManager.HybridContainerService/1.0.2) | [docs](/dotnet/api/overview/azure/ResourceManager.HybridContainerService-readme) | GitHub [1.0.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.HybridContainerService_1.0.2/sdk/hybridaks/Azure.ResourceManager.HybridContainerService/) | | Resource Management - Hybrid Kubernetes | NuGet [1.0.0-beta.6](https://www.nuget.org/packages/Azure.ResourceManager.Kubernetes/1.0.0-beta.6) | [docs](/dotnet/api/overview/azure/ResourceManager.Kubernetes-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.Kubernetes_1.0.0-beta.6/sdk/hybridkubernetes/Azure.ResourceManager.Kubernetes/) | | Resource Management - Hybrid Network | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.HybridNetwork/1.0.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.HybridNetwork-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.HybridNetwork_1.0.0-beta.3/sdk/hybridnetwork/Azure.ResourceManager.HybridNetwork/) | @@ -464,6 +462,7 @@ | Resource Management - Workload Orchestration | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.WorkloadOrchestration/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.WorkloadOrchestration-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.WorkloadOrchestration_1.0.1/sdk/workloadorchestration/Azure.ResourceManager.WorkloadOrchestration/) | | Resource Management - Workloads | NuGet [1.1.2](https://www.nuget.org/packages/Azure.ResourceManager.Workloads/1.1.2)
NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.Workloads/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Workloads-readme) | GitHub [1.1.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Workloads_1.1.2/sdk/workloads/Azure.ResourceManager.Workloads/)
GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Workloads_1.2.0-beta.1/sdk/workloads/Azure.ResourceManager.Workloads/) | | Resource Management - Workloads SAP Virtual Instance | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.WorkloadsSapVirtualInstance/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.WorkloadsSapVirtualInstance-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.WorkloadsSapVirtualInstance_1.0.0/sdk/workloadssapvirtualinstance/Azure.ResourceManager.WorkloadsSapVirtualInstance/) | +| unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.AgriculturePlatform/1.0.0-beta.1) | | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AgriculturePlatform_1.0.0-beta.1/sdk/agricultureplatform/Azure.Provisioning.AgriculturePlatform/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.ApiCenter/1.0.0-beta.1) | | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ApiCenter_1.0.0-beta.1/sdk/apicenter/Azure.Provisioning.ApiCenter/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.AppNetwork/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.AppNetwork-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AppNetwork_1.0.0-beta.1/sdk/appnetwork/Azure.Provisioning.AppNetwork/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.CertificateRegistration/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.CertificateRegistration-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.CertificateRegistration_1.0.0-beta.1/sdk/certificateregistration/Azure.Provisioning.CertificateRegistration/) | @@ -479,13 +478,13 @@ | App Configuration Provider | NuGet [8.6.0](https://www.nuget.org/packages/Microsoft.Azure.AppConfiguration.AspNetCore/8.6.0)
NuGet [8.7.0-preview](https://www.nuget.org/packages/Microsoft.Azure.AppConfiguration.AspNetCore/8.7.0-preview) | | | | Azure Functions CLI | NuGet [5.0.0-preview.1](https://www.nuget.org/packages/Azure.Functions.Cli.Abstractions/5.0.0-preview.1) | | | | Azure Functions SDK | NuGet [1.0.1](https://www.nuget.org/packages/Azure.Functions.Sdk/1.0.1) | | | -| Azure MCP | NuGet [3.0.0](https://www.nuget.org/packages/Azure.Mcp/3.0.0) | | | -| Azure MCP | NuGet [3.0.0](https://www.nuget.org/packages/Azure.Mcp.linux-arm64/3.0.0) | | | -| Azure MCP | NuGet [3.0.0](https://www.nuget.org/packages/Azure.Mcp.linux-x64/3.0.0) | | | -| Azure MCP | NuGet [3.0.0](https://www.nuget.org/packages/Azure.Mcp.osx-arm64/3.0.0) | | | -| Azure MCP | NuGet [3.0.0](https://www.nuget.org/packages/Azure.Mcp.osx-x64/3.0.0) | | | -| Azure MCP | NuGet [3.0.0](https://www.nuget.org/packages/Azure.Mcp.win-arm64/3.0.0) | | | -| Azure MCP | NuGet [3.0.0](https://www.nuget.org/packages/Azure.Mcp.win-x64/3.0.0) | | | +| Azure MCP | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Mcp/1.0.0)
NuGet [4.0.0-beta.1](https://www.nuget.org/packages/Azure.Mcp/4.0.0-beta.1) | | | +| Azure MCP | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Mcp.linux-arm64/1.0.0)
NuGet [4.0.0-beta.1](https://www.nuget.org/packages/Azure.Mcp.linux-arm64/4.0.0-beta.1) | | | +| Azure MCP | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Mcp.linux-x64/1.0.0)
NuGet [4.0.0-beta.1](https://www.nuget.org/packages/Azure.Mcp.linux-x64/4.0.0-beta.1) | | | +| Azure MCP | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Mcp.osx-arm64/1.0.0)
NuGet [4.0.0-beta.1](https://www.nuget.org/packages/Azure.Mcp.osx-arm64/4.0.0-beta.1) | | | +| Azure MCP | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Mcp.osx-x64/1.0.0)
NuGet [4.0.0-beta.1](https://www.nuget.org/packages/Azure.Mcp.osx-x64/4.0.0-beta.1) | | | +| Azure MCP | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Mcp.win-arm64/1.0.0)
NuGet [4.0.0-beta.1](https://www.nuget.org/packages/Azure.Mcp.win-arm64/4.0.0-beta.1) | | | +| Azure MCP | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Mcp.win-x64/1.0.0)
NuGet [4.0.0-beta.1](https://www.nuget.org/packages/Azure.Mcp.win-x64/4.0.0-beta.1) | | | | Azure MCP Types Internal | NuGet [0.2.804](https://www.nuget.org/packages/Microsoft.Azure.Mcp.AzTypes.Internal.Compact/0.2.804) | | | | Azure.Communication.Administration | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.Communication.Administration/1.0.0-beta.3) | | | | Caching - PostgreSQL | NuGet [1.2.2](https://www.nuget.org/packages/Microsoft.Extensions.Caching.Postgres/1.2.2) | | | @@ -499,14 +498,14 @@ | Cosmos DB QueryPlanInterop - Windows | NuGet [1.0.5](https://www.nuget.org/packages/Microsoft.Azure.Cosmos.QueryPlanInterop.Windows/1.0.5) | | | | DotNetty | NuGet [0.7.6](https://www.nuget.org/packages/DotNetty.Common/0.7.6) | | | | Extension Bundles | NuGet [4.42.0-preview.2](https://www.nuget.org/packages/Azure.Functions.Cli.Workloads.ExtensionBundles/4.42.0-preview.2) | | | -| Fabric MCP | NuGet [1.5.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp/1.5.0) | | | -| Fabric MCP | NuGet [1.5.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.linux-arm64/1.5.0) | | | -| Fabric MCP | NuGet [1.5.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.linux-x64/1.5.0) | | | -| Fabric MCP | NuGet [1.5.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.osx-arm64/1.5.0) | | | -| Fabric MCP | NuGet [1.5.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.osx-x64/1.5.0) | | | -| Fabric MCP | NuGet [1.5.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.win-arm64/1.5.0) | | | -| Fabric MCP | NuGet [1.5.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.win-x64/1.5.0) | | | -| Functions Connector Extension | NuGet [0.4.1-alpha](https://www.nuget.org/packages/Microsoft.Azure.Functions.Extensions.Connector/0.4.1-alpha) | | | +| Fabric MCP | NuGet [1.6.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp/1.6.0) | | | +| Fabric MCP | NuGet [1.6.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.linux-arm64/1.6.0) | | | +| Fabric MCP | NuGet [1.6.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.linux-x64/1.6.0) | | | +| Fabric MCP | NuGet [1.6.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.osx-arm64/1.6.0) | | | +| Fabric MCP | NuGet [1.6.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.osx-x64/1.6.0) | | | +| Fabric MCP | NuGet [1.6.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.win-arm64/1.6.0) | | | +| Fabric MCP | NuGet [1.6.0](https://www.nuget.org/packages/Microsoft.Fabric.Mcp.win-x64/1.6.0) | | | +| Functions Connector Extension | NuGet [1.0.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Extensions.Connector/1.0.0) | | | | Functions Extension MCP | NuGet [1.6.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Extensions.Mcp/1.6.0) | | | | Functions Host | NuGet [4.1048.200-preview.3](https://www.nuget.org/packages/Azure.Functions.Cli.Workloads.Host.linux-arm64/4.1048.200-preview.3) | | | | Functions Host | NuGet [4.1048.200-preview.3](https://www.nuget.org/packages/Azure.Functions.Cli.Workloads.Host.linux-x64/4.1048.200-preview.3) | | | @@ -567,6 +566,7 @@ | unknown | NuGet [2.19.4-preview.1](https://www.nuget.org/packages/Azure.Functions.Cli.Workloads.Workers.Java/2.19.4-preview.1) | | | | unknown | NuGet [4.0.4778-preview.1](https://www.nuget.org/packages/Azure.Functions.Cli.Workloads.Workers.PowerShell/4.0.4778-preview.1) | | | | unknown | NuGet [4.43.0-preview.3](https://www.nuget.org/packages/Azure.Functions.Cli.Workloads.Workers.Python/4.43.0-preview.3) | | | +| unknown | NuGet [1.0.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Connector/1.0.0) | | | | unknown | NuGet [2.0.0-preview3](https://www.nuget.org/packages/Microsoft.Azure.Iot.Device/2.0.0-preview3) | | | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Microsoft.Azure.WebPubSub.Emulator/1.0.0-beta.1) | | | | WebJobs Extension Cosmos DB Mongo | NuGet [1.2.2](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.AzureCosmosDb.Mongo/1.2.2)
NuGet [1.2.5-preview](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.AzureCosmosDb.Mongo/1.2.5-preview) | | | diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md index d008035907cc6..aca168f809dcb 100644 --- a/docs/azure/includes/dotnet-new.md +++ b/docs/azure/includes/dotnet-new.md @@ -180,7 +180,7 @@ | Provisioning - Container Apps | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Provisioning.AppContainers/1.2.0)
NuGet [1.3.0-beta.2](https://www.nuget.org/packages/Azure.Provisioning.AppContainers/1.3.0-beta.2) | [docs](/dotnet/api/overview/azure/Provisioning.AppContainers-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AppContainers_1.2.0/sdk/containerapps/Azure.Provisioning.AppContainers/)
GitHub [1.3.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AppContainers_1.3.0-beta.2/sdk/containerapps/Azure.Provisioning.AppContainers/) | | Provisioning - Container Instances | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.ContainerInstance/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.ContainerInstance-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ContainerInstance_1.0.0-beta.1/sdk/containerinstance/Azure.Provisioning.ContainerInstance/) | | Provisioning - Container Registry | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Provisioning.ContainerRegistry/1.1.0) | [docs](/dotnet/api/overview/azure/Provisioning.ContainerRegistry-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ContainerRegistry_1.1.0/sdk/provisioning/Azure.Provisioning.ContainerRegistry/) | -| Provisioning - Container Service | NuGet [1.0.0-beta.7](https://www.nuget.org/packages/Azure.Provisioning.ContainerService/1.0.0-beta.7) | [docs](/dotnet/api/overview/azure/Provisioning.ContainerService-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.7](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ContainerService_1.0.0-beta.7/sdk/containerservice/Azure.Provisioning.ContainerService/) | +| Provisioning - Container Service | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Provisioning.ContainerService/1.0.0) | [docs](/dotnet/api/overview/azure/Provisioning.ContainerService-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ContainerService_1.0.0/sdk/containerservice/Azure.Provisioning.ContainerService/) | | Provisioning - Content Delivery Network | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.Provisioning.Cdn/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/Provisioning.Cdn-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.Cdn_1.0.0-beta.4/sdk/cdn/Azure.Provisioning.Cdn/) | | Provisioning - Cosmos DB | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Provisioning.CosmosDB/1.0.0)
NuGet [1.1.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.CosmosDB/1.1.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.CosmosDB-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.CosmosDB_1.0.0/sdk/provisioning/Azure.Provisioning.CosmosDB/)
GitHub [1.1.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.CosmosDB_1.1.0-beta.1/sdk/provisioning/Azure.Provisioning.CosmosDB/) | | Provisioning - Cost Management | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.CostManagement/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.CostManagement-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.CostManagement_1.0.0-beta.1/sdk/costmanagement/Azure.Provisioning.CostManagement/) | @@ -350,7 +350,7 @@ | Resource Management - Healthcare APIs | NuGet [1.3.2](https://www.nuget.org/packages/Azure.ResourceManager.HealthcareApis/1.3.2) | [docs](/dotnet/api/overview/azure/ResourceManager.HealthcareApis-readme) | GitHub [1.3.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.HealthcareApis_1.3.2/sdk/healthcareapis/Azure.ResourceManager.HealthcareApis/) | | Resource Management - HorizonDB | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.HorizonDB/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.HorizonDB-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.HorizonDB_1.0.0-beta.2/sdk/horizondb/Azure.ResourceManager.HorizonDB/) | | Resource Management - Hybrid Compute | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.HybridCompute/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.HybridCompute-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.HybridCompute_1.1.0/sdk/hybridcompute/Azure.ResourceManager.HybridCompute/) | -| Resource Management - Hybrid Connectivity | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.HybridConnectivity/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.HybridConnectivity-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.HybridConnectivity_1.1.1/sdk/hybridconnectivity/Azure.ResourceManager.HybridConnectivity/) | +| Resource Management - Hybrid Connectivity | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.HybridConnectivity/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.HybridConnectivity-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.HybridConnectivity_1.2.0/sdk/hybridconnectivity/Azure.ResourceManager.HybridConnectivity/) | | Resource Management - Hybrid Container Service | NuGet [1.0.2](https://www.nuget.org/packages/Azure.ResourceManager.HybridContainerService/1.0.2) | [docs](/dotnet/api/overview/azure/ResourceManager.HybridContainerService-readme) | GitHub [1.0.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.HybridContainerService_1.0.2/sdk/hybridaks/Azure.ResourceManager.HybridContainerService/) | | Resource Management - Hybrid Data | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.HybridData/1.0.1)
NuGet [1.1.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.HybridData/1.1.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.HybridData-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.HybridData_1.1.0-beta.1/sdk/hybriddatamanager/Azure.ResourceManager.HybridData) | | Resource Management - Hybrid Kubernetes | NuGet [1.0.0-beta.6](https://www.nuget.org/packages/Azure.ResourceManager.Kubernetes/1.0.0-beta.6) | [docs](/dotnet/api/overview/azure/ResourceManager.Kubernetes-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.Kubernetes_1.0.0-beta.6/sdk/hybridkubernetes/Azure.ResourceManager.Kubernetes/) | @@ -494,6 +494,7 @@ | Resource Management - Workload Orchestration | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.WorkloadOrchestration/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.WorkloadOrchestration-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.WorkloadOrchestration_1.0.1/sdk/workloadorchestration/Azure.ResourceManager.WorkloadOrchestration/) | | Resource Management - Workloads | NuGet [1.1.2](https://www.nuget.org/packages/Azure.ResourceManager.Workloads/1.1.2)
NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.Workloads/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Workloads-readme) | GitHub [1.1.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Workloads_1.1.2/sdk/workloads/Azure.ResourceManager.Workloads/)
GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Workloads_1.2.0-beta.1/sdk/workloads/Azure.ResourceManager.Workloads/) | | Resource Management - Workloads SAP Virtual Instance | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.WorkloadsSapVirtualInstance/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.WorkloadsSapVirtualInstance-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.WorkloadsSapVirtualInstance_1.0.0/sdk/workloadssapvirtualinstance/Azure.ResourceManager.WorkloadsSapVirtualInstance/) | +| unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.AgriculturePlatform/1.0.0-beta.1) | | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AgriculturePlatform_1.0.0-beta.1/sdk/agricultureplatform/Azure.Provisioning.AgriculturePlatform/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.ApiCenter/1.0.0-beta.1) | | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ApiCenter_1.0.0-beta.1/sdk/apicenter/Azure.Provisioning.ApiCenter/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.AppNetwork/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.AppNetwork-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AppNetwork_1.0.0-beta.1/sdk/appnetwork/Azure.Provisioning.AppNetwork/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.CertificateRegistration/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.CertificateRegistration-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.CertificateRegistration_1.0.0-beta.1/sdk/certificateregistration/Azure.Provisioning.CertificateRegistration/) |