From 99fb6d5614dedb0114dc00869fe5bf953715be96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaury=20Lev=C3=A9?= Date: Mon, 13 Jul 2026 16:08:16 +0200 Subject: [PATCH 1/9] Add generic MTP capability pages for diagnostics, test host deployment, and Microsoft.Extensions integration (#54723) Promote the experimental video recorder, packaged-app deployment, and logging-bridge extensions from inline blurbs in features.md into dedicated, generically named capability pages that can host multiple extensions over time. Update features.md links, the Choose by scenario list, and the TOC. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .openpublishing.redirection.core.json | 5 --- .../microsoft-testing-platform-diagnostics.md | 42 +++++++++++++++++++ ...testing-platform-extensions-integration.md | 31 ++++++++++++++ .../microsoft-testing-platform-features.md | 24 ++++------- ...t-testing-platform-test-host-deployment.md | 29 +++++++++++++ docs/navigate/devops-testing/toc.yml | 9 ++++ 6 files changed, 120 insertions(+), 20 deletions(-) create mode 100644 docs/core/testing/microsoft-testing-platform-diagnostics.md create mode 100644 docs/core/testing/microsoft-testing-platform-extensions-integration.md create mode 100644 docs/core/testing/microsoft-testing-platform-test-host-deployment.md diff --git a/.openpublishing.redirection.core.json b/.openpublishing.redirection.core.json index 206357fa44f2e..225cad1072d97 100644 --- a/.openpublishing.redirection.core.json +++ b/.openpublishing.redirection.core.json @@ -1925,11 +1925,6 @@ "source_path_from_root": "/docs/core/testing/unit-testing-platform-diagnostics.md", "redirect_url": "/dotnet/core/testing/microsoft-testing-platform-crash-hang-dumps" }, - { - "source_path_from_root": "/docs/core/testing/microsoft-testing-platform-diagnostics.md", - "redirect_url": "/dotnet/core/testing/microsoft-testing-platform-crash-hang-dumps", - "redirect_document_id": false - }, { "source_path_from_root": "/docs/core/testing/unit-testing-platform-exit-codes.md", "redirect_url": "/dotnet/core/testing/microsoft-testing-platform-troubleshooting#exit-codes" diff --git a/docs/core/testing/microsoft-testing-platform-diagnostics.md b/docs/core/testing/microsoft-testing-platform-diagnostics.md new file mode 100644 index 0000000000000..a4f204c6945ef --- /dev/null +++ b/docs/core/testing/microsoft-testing-platform-diagnostics.md @@ -0,0 +1,42 @@ +--- +title: Microsoft.Testing.Platform (MTP) diagnostics +description: Learn about the MTP extensions that capture evidence, such as screen recordings, to help you diagnose a test run. +author: evangelink +ms.author: amauryleve +ms.date: 07/09/2026 +ai-usage: ai-assisted +--- + +# Diagnostics + +These extensions capture evidence during a test run so you can diagnose failures after the fact. Each extension requires an additional NuGet package, as described in each section. + +> [!TIP] +> When using [Microsoft.Testing.Platform.MSBuild](https://www.nuget.org/packages/Microsoft.Testing.Platform.MSBuild) (included transitively by MSTest, NUnit, and xUnit runners), these extensions are auto-registered when you install their NuGet packages — no code changes needed. The manual registration specified in this article is only required if you disabled the auto-generated entry point by setting `false`. + +For process-level diagnostics, see the related [Crash and hang dumps](microsoft-testing-platform-crash-hang-dumps.md) extensions, which collect process dump files when the test host crashes or hangs. + +## Video recorder + +The video recorder records the screen while your tests run and attaches the captured videos to the test session as artifacts. Recording is opt-in per run and driven by an external `ffmpeg` process, which must be available on the `PATH` or set through an explicit path. This extension requires the [Microsoft.Testing.Extensions.VideoRecorder](https://nuget.org/packages/Microsoft.Testing.Extensions.VideoRecorder) NuGet package. + +> [!NOTE] +> Available in MTP starting with version 2.3.0. This extension is experimental, and its options and output format might change in a future version. + +### Manual registration + +```csharp +var builder = await TestApplication.CreateBuilderAsync(args); +builder.AddVideoRecorderProvider(); +``` + +### Options + +| Option | MTP version | Description | +|---|---|---| +| `--capture-video` | 2.3.0 | Enables screen recording. The optional value controls retention: `on-failure` (default) keeps footage only for failing tests, and `always` keeps footage for every test. | +| `--capture-video-source` | 2.3.0 | Sets the capture source. Valid values are `screen` (default) and `window`. Requires `--capture-video`. | +| `--capture-video-granularity` | 2.3.0 | Sets whether the recorder produces one video per test or one chaptered video for the whole run. Valid values are `test` (default) and `session`. Requires `--capture-video`. | +| `--capture-video-max-duration` | 2.3.0 | Bounds disk usage on long runs by keeping approximately the last N seconds of footage. The value is a positive integer number of seconds. Requires `--capture-video`. | +| `--capture-video-chapters` | 2.3.0 | Sets whether chapter bookmarks are added to the per-session video. Valid values are `on` (default) and `off`. Requires `--capture-video`. | +| `--capture-video-args` | 2.3.0 | Passes extra arguments to the underlying recorder (`ffmpeg`). Requires `--capture-video`. | diff --git a/docs/core/testing/microsoft-testing-platform-extensions-integration.md b/docs/core/testing/microsoft-testing-platform-extensions-integration.md new file mode 100644 index 0000000000000..7d03f4db92ef0 --- /dev/null +++ b/docs/core/testing/microsoft-testing-platform-extensions-integration.md @@ -0,0 +1,31 @@ +--- +title: Microsoft.Testing.Platform (MTP) Microsoft.Extensions integration +description: Learn about the MTP extensions that bridge Microsoft.Testing.Platform to the Microsoft.Extensions.* libraries your application already uses. +author: evangelink +ms.author: amauryleve +ms.date: 07/09/2026 +ai-usage: ai-assisted +--- + +# Microsoft.Extensions integration + +These extensions bridge Microsoft.Testing.Platform (MTP) to the `Microsoft.Extensions.*` libraries your application already uses, so platform and extension components flow through the same infrastructure as the rest of your code. Each extension requires an additional NuGet package, as described in each section. + +> [!TIP] +> When using [Microsoft.Testing.Platform.MSBuild](https://www.nuget.org/packages/Microsoft.Testing.Platform.MSBuild) (included transitively by MSTest, NUnit, and xUnit runners), these extensions are auto-registered when you install their NuGet packages — no code changes needed. The manual registration specified in this article is only required if you disabled the auto-generated entry point by setting `false`. + +## Logging bridge + +The logging bridge forwards Microsoft.Testing.Platform diagnostic logs to , so platform and extension logs flow through the same `Microsoft.Extensions.Logging` pipeline your application already uses. You can reuse an existing logging stack — Console, Debug, Serilog, Application Insights, OpenTelemetry, or a custom `ILoggerProvider` — without writing a custom MTP logger provider. This extension requires the [Microsoft.Testing.Extensions.Logging](https://nuget.org/packages/Microsoft.Testing.Extensions.Logging) NuGet package. + +> [!NOTE] +> Available in MTP starting with version 2.3.0. This extension is experimental, and its options and output format might change in a future version. + +The bridge forwards each message only when the platform's diagnostic logging is enabled. When the platform's effective log level is `None` (the default, unless you pass [`--diagnostic`](microsoft-testing-platform-cli-options.md)), the configuration delegate isn't invoked and no logger factory is created. Per-category filters that you set in the `ILoggingBuilder` can narrow the platform's effective diagnostic level, but they can't widen it. + +### Manual registration + +```csharp +var builder = await TestApplication.CreateBuilderAsync(args); +builder.AddMicrosoftExtensionsLogging(logging => logging.AddConsole()); +``` diff --git a/docs/core/testing/microsoft-testing-platform-features.md b/docs/core/testing/microsoft-testing-platform-features.md index 93a3a2f87d489..8aeab51c02d70 100644 --- a/docs/core/testing/microsoft-testing-platform-features.md +++ b/docs/core/testing/microsoft-testing-platform-features.md @@ -34,6 +34,9 @@ Use the following path based on your goal: - Need GitHub Actions-native output (log groups, annotations, and job summary): [GitHub Actions report](./microsoft-testing-platform-test-reports.md#github-actions-reports) (extension, experimental) - Need coverage data: [Code coverage](./microsoft-testing-platform-code-coverage.md) (extension) - Need crash or hang diagnostics: [Crash and hang dumps](./microsoft-testing-platform-crash-hang-dumps.md) (extension) +- Need to record the screen during a run: [Diagnostics](./microsoft-testing-platform-diagnostics.md) (extension, experimental) +- Need to deploy and launch a packaged-app test host: [Test host deployment](./microsoft-testing-platform-test-host-deployment.md) (extension, experimental) +- Need to route platform logs through `Microsoft.Extensions.Logging`: [Microsoft.Extensions integration](./microsoft-testing-platform-extensions-integration.md) (extension, experimental) - Need to retry failed tests: [Retry](./microsoft-testing-platform-retry.md#retry) (extension) - Need hot reload support: [Hot Reload](./microsoft-testing-platform-hot-reload.md) (extension) - Need Microsoft Fakes support: [Microsoft Fakes](./microsoft-testing-platform-fakes.md) (extension) @@ -84,23 +87,14 @@ Run tests that use Microsoft Fakes for stubs and shims. Telemetry collection. Learn how to opt out and what data is collected. -**[Video recorder](https://www.nuget.org/packages/Microsoft.Testing.Extensions.VideoRecorder)** (experimental, introduced in MTP 2.3.0) +**[Diagnostics](./microsoft-testing-platform-diagnostics.md)** (experimental, introduced in MTP 2.3.0) -Record the screen during a test run. It requires `ffmpeg` to be available on the machine and is enabled with the `--capture-video` option. Register it manually with `builder.AddVideoRecorderProvider()`. +Capture evidence to diagnose a run, such as recording the screen with the video recorder. -**[Packaged app deployment](https://www.nuget.org/packages/Microsoft.Testing.Extensions.PackagedApp)** (experimental, introduced in MTP 2.3.0) +**[Test host deployment](./microsoft-testing-platform-test-host-deployment.md)** (experimental, introduced in MTP 2.3.0) -A reference extension that uses the experimental `ITestHostLauncher` extension point to deploy and launch a packaged-app test host. Register it manually with `builder.AddPackagedAppDeployment()`. +Control how and where the test host is deployed and launched, such as deploying and launching a packaged-app test host. -## Microsoft.Extensions integration +**[Microsoft.Extensions integration](./microsoft-testing-platform-extensions-integration.md)** (experimental, introduced in MTP 2.3.0) -These extensions bridge Microsoft.Testing.Platform to the `Microsoft.Extensions.*` libraries your application already uses. - -**[Logging bridge](https://www.nuget.org/packages/Microsoft.Testing.Extensions.Logging)** (experimental, introduced in MTP 2.3.0) - -The Microsoft.Testing.Extensions.Logging package bridges Microsoft.Testing.Platform diagnostics to , so platform and extension logs flow through the same `Microsoft.Extensions.Logging` pipeline your application already uses. Register it manually with the following call: - -```csharp -var builder = await TestApplication.CreateBuilderAsync(args); -builder.AddMicrosoftExtensionsLogging(logging => logging.AddConsole()); -``` +Bridge platform and extension diagnostics into the `Microsoft.Extensions.*` libraries your application already uses, such as forwarding logs through the `Microsoft.Extensions.Logging` pipeline. diff --git a/docs/core/testing/microsoft-testing-platform-test-host-deployment.md b/docs/core/testing/microsoft-testing-platform-test-host-deployment.md new file mode 100644 index 0000000000000..1413e06fe0a27 --- /dev/null +++ b/docs/core/testing/microsoft-testing-platform-test-host-deployment.md @@ -0,0 +1,29 @@ +--- +title: Microsoft.Testing.Platform (MTP) test host deployment +description: Learn about the MTP extensions that control how and where the test host is deployed and launched. +author: evangelink +ms.author: amauryleve +ms.date: 07/09/2026 +ai-usage: ai-assisted +--- + +# Test host deployment + +These extensions control how and where the test host is deployed and launched. They build on the experimental `ITestHostLauncher` extension point, which lets an extension take over the deployment and launch of the test host instead of starting it in place. Each extension requires an additional NuGet package, as described in each section. + +> [!TIP] +> When using [Microsoft.Testing.Platform.MSBuild](https://www.nuget.org/packages/Microsoft.Testing.Platform.MSBuild) (included transitively by MSTest, NUnit, and xUnit runners), these extensions are auto-registered when you install their NuGet packages — no code changes needed. The manual registration specified in this article is only required if you disabled the auto-generated entry point by setting `false`. + +## Packaged app deployment + +The packaged app deployment extension deploys a packaged Windows test host (UWP or packaged WinUI) into an isolated directory and launches it from there, rather than starting the test host in place. It's the reference consumer of the experimental `ITestHostLauncher` extension point for packaged Windows apps. This extension requires the [Microsoft.Testing.Extensions.PackagedApp](https://nuget.org/packages/Microsoft.Testing.Extensions.PackagedApp) NuGet package. + +> [!NOTE] +> Available in MTP starting with version 2.3.0. This extension is experimental, and its options and output format might change in a future version. + +### Manual registration + +```csharp +var builder = await TestApplication.CreateBuilderAsync(args); +builder.AddPackagedAppDeployment(); +``` diff --git a/docs/navigate/devops-testing/toc.yml b/docs/navigate/devops-testing/toc.yml index 310dd55593641..6da6c8c909e45 100644 --- a/docs/navigate/devops-testing/toc.yml +++ b/docs/navigate/devops-testing/toc.yml @@ -314,6 +314,15 @@ items: - name: Crash and hang dumps href: ../../core/testing/microsoft-testing-platform-crash-hang-dumps.md displayName: MTP,crash dump,hang dump,diagnostics + - name: Diagnostics + href: ../../core/testing/microsoft-testing-platform-diagnostics.md + displayName: MTP,diagnostics,video recorder,screen recording,capture video + - name: Test host deployment + href: ../../core/testing/microsoft-testing-platform-test-host-deployment.md + displayName: MTP,test host,deployment,packaged app,UWP,WinUI,ITestHostLauncher + - name: Microsoft.Extensions integration + href: ../../core/testing/microsoft-testing-platform-extensions-integration.md + displayName: MTP,Microsoft.Extensions,logging bridge,ILogger,Microsoft.Extensions.Logging - name: OpenTelemetry href: ../../core/testing/microsoft-testing-platform-open-telemetry.md displayName: MTP,OpenTelemetry,traces,metrics From 5f496745014459eb4041371ce85073e305f715ea Mon Sep 17 00:00:00 2001 From: Genevieve Warren <24882762+gewarren@users.noreply.github.com> Date: Mon, 13 Jul 2026 12:39:55 -0700 Subject: [PATCH 2/9] Modify author details in choose.md (#54747) Updated author information and removed ms.author field. --- docs/azure/migration/choose.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/azure/migration/choose.md b/docs/azure/migration/choose.md index a4b5e2a0c01be..a18c7cb05962e 100644 --- a/docs/azure/migration/choose.md +++ b/docs/azure/migration/choose.md @@ -2,7 +2,6 @@ title: Choose the right Azure hosting option description: Learn which Azure migration path is right for your ASP.NET web application. author: CESARDELATORRE -ms.author: cesardl ms.date: 12/14/2023 --- From cb148ce031881aa51c935c998a4c753e92498d0c Mon Sep 17 00:00:00 2001 From: Tara Overfield Date: Mon, 13 Jul 2026 14:54:45 -0700 Subject: [PATCH 3/9] Add 2026.05 D release notes (#54718) * Add 2026.05 D release notes * Fix invalid link in release-notes.md: 05-29 -> 05-26 * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> 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> --- .../05-26-may-cumulative-update-preview.md | 46 +++++++++++++++++++ docs/framework/release-notes/release-notes.md | 3 +- docs/framework/toc.yml | 2 + 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 docs/framework/release-notes/2026/05-26-may-cumulative-update-preview.md diff --git a/docs/framework/release-notes/2026/05-26-may-cumulative-update-preview.md b/docs/framework/release-notes/2026/05-26-may-cumulative-update-preview.md new file mode 100644 index 0000000000000..e93d8d7edab56 --- /dev/null +++ b/docs/framework/release-notes/2026/05-26-may-cumulative-update-preview.md @@ -0,0 +1,46 @@ +--- +title: May 2026 cumulative update preview +description: Learn about the improvements in the .NET Framework May 2026 cumulative update preview. +ms.date: 05/26/2026 +--- +# May 2026 cumulative update preview + +_Released May 26, 2026_ + +## Summary of what's new in this release + +- [Security improvements](#security-improvements) +- [Quality and reliability improvements](#quality-and-reliability-improvements) + +### Security improvements + +There are no new security improvements in this release. This update is cumulative and contains all previously released security improvements. + +### Quality and reliability improvements + +#### .NET libraries + +Addresses an issue with synchronous `HttpWebRequest` connections where requests could hang in specific secure connection scenarios with certain server configurations. + +#### .NET Runtime + +- Addresses an issue in the Visual Studio x86 native debugger where certain floating-point values could be reported incorrectly during step operations in mixed-code applications. + +## Known issues in this release + +This release contains no known issues. + +## Summary tables + +The following table outlines the updates in this release. + +| Product version | Cumulative update preview | +| --- | --- | +| **Windows 11, version 26H1** | | +| .NET Framework 4.8.1 | [5092431](https://support.microsoft.com/kb/5092431) | +| **Windows 11, version 25H2** | | +| .NET Framework 3.5, 4.8.1 | [5092427](https://support.microsoft.com/kb/5092427) | +| **Windows 11, version 24H2** | | +| .NET Framework 3.5, 4.8.1 | [5092430](https://support.microsoft.com/kb/5092430) | + +The operating system row lists a KB that's used for update offering purposes. When the operating system KB is offered, the applicability logic determines the specific .NET Framework update(s) installed. Updates for individual .NET Framework versions are installed based on the version of .NET Framework that is already present on the device. Because of this, the operating system KB is not expected to be listed as installed updates on the device. The expected updates installed are the .NET Framework-specific version updates listed in the previous table. diff --git a/docs/framework/release-notes/release-notes.md b/docs/framework/release-notes/release-notes.md index d5cb13b46f6b8..5742a94620b06 100644 --- a/docs/framework/release-notes/release-notes.md +++ b/docs/framework/release-notes/release-notes.md @@ -11,7 +11,8 @@ The .NET Framework updates include cumulative security and reliability improveme .NET Framework cumulative update releases are discussed in detail in the following individual release notes: -* May 12, 2026 - [cumulative update](./2026/05-12-may-cumulative-update.md) **New Release** +* May 26, 2026 - [cumulative update preview](./2026/05-26-may-cumulative-update-preview.md) **New Release** +* May 12, 2026 - [cumulative update](./2026/05-12-may-cumulative-update.md) * April 14, 2026 - [cumulative update](./2026/04-14-april-cumulative-update.md) * February 10, 2026 - [cumulative update](./2026/02-10-february-cumulative-update.md) * January 29, 2026 - [cumulative update preview](./2026/01-29-january-cumulative-update-preview.md) diff --git a/docs/framework/toc.yml b/docs/framework/toc.yml index 1c4f4090a7bbd..ac87173cb223e 100644 --- a/docs/framework/toc.yml +++ b/docs/framework/toc.yml @@ -679,6 +679,8 @@ items: items: - name: Overview and index href: release-notes/release-notes.md + - name: May 2026 cumulative update preview + href: release-notes/2026/05-26-may-cumulative-update-preview.md - name: May 2026 cumulative update href: release-notes/2026/05-12-may-cumulative-update.md - name: April 2026 cumulative update From 33ee1f3af448953b8984bb265425ad8b2883f887 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Mon, 13 Jul 2026 17:19:42 -0700 Subject: [PATCH 4/9] =?UTF-8?q?Fix=20http=20=E2=86=92=20https=20for=20JSON?= =?UTF-8?q?=20Schema=20Store=20links=20in=20custom-templates.md=20(#54652)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Initial plan * Fix incorrect http links to JSON Schema Store in custom-templates.md * Apply suggestion from @adegeo * Apply suggestion from @adegeo --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Andy (Steve) De George <67293991+adegeo@users.noreply.github.com> --- docs/core/tools/custom-templates.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/core/tools/custom-templates.md b/docs/core/tools/custom-templates.md index a35edbdee2ba0..8d9b73a116d18 100644 --- a/docs/core/tools/custom-templates.md +++ b/docs/core/tools/custom-templates.md @@ -52,7 +52,7 @@ The *template.json* file is placed in a *.template.config* folder in the root di | Member | Type | Description | | ----------------- | ------------- | ----------- | -| `$schema` | URI | The JSON schema for the *template.json* file. Editors that support JSON schemas enable JSON-editing features when the schema is specified. For example, [Visual Studio Code](https://code.visualstudio.com/) requires this member to enable IntelliSense. Use a value of `http://json.schemastore.org/template`. | +| `$schema` | URI | The JSON schema for the *template.json* file. Editors that support JSON schemas enable JSON-editing features when the schema is specified. For example, [Visual Studio Code](https://code.visualstudio.com/) requires this member to enable IntelliSense. Use a value of `https://json.schemastore.org/template`. | | `author` | string | The author of the template. | | `classifications` | array(string) | Zero or more characteristics of the template that a user might use to find the template when searching for it. The classifications also appear in the *Tags* column when it appears in a list of templates produced by using the `dotnet new list` command. | | `identity` | string | A unique name for this template. | @@ -61,7 +61,7 @@ The *template.json* file is placed in a *.template.config* folder in the root di | `sourceName` | string | The name in the source tree to replace with the name the user specifies. The template engine will look for any occurrence of the `sourceName` mentioned in the config file and replace it in file names and file contents. The value to be replaced with can be given using the `-n` or `--name` options while running a template. If no name is specified, the current directory is used.| | `preferNameDirectory` | Boolean | Indicates whether to create a directory for the template if name is specified but an output directory isn't set (instead of creating the content directly in the current directory). The default value is false.| -The full schema for the *template.json* file is found at the [JSON Schema Store](http://json.schemastore.org/template). For more information about the *template.json* file, see the [dotnet templating wiki](https://github.com/dotnet/templating/wiki). For deeper examples and information on how to make your templates visible in Visual Studio, check out the [resources that Sayed Hashimi has created](https://github.com/sayedihashimi/template-sample). +The full schema for the *template.json* file is found at the [JSON Schema Store](https://www.schemastore.org). For more information about the *template.json* file, see the [dotnet templating wiki](https://github.com/dotnet/templating/wiki). For deeper examples and information on how to make your templates visible in Visual Studio, check out the [resources that Sayed Hashimi has created](https://github.com/sayedihashimi/template-sample). #### Example @@ -80,7 +80,7 @@ The *template.json* file looks like the following: ```json { - "$schema": "http://json.schemastore.org/template", + "$schema": "https://json.schemastore.org/template", "author": "Travis Chau", "classifications": [ "Common", "Console" ], "identity": "AdatumCorporation.ConsoleTemplate.CSharp", @@ -123,7 +123,7 @@ For example, here's *template.json* file with some localizable fields: ```JSON { - "$schema": "http://json.schemastore.org/template", + "$schema": "https://json.schemastore.org/template", "author": "Microsoft", "classifications": "Config", "name": "EditorConfig file", @@ -322,4 +322,4 @@ dotnet new