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/ai/dotnet-ai-ecosystem.md b/docs/ai/dotnet-ai-ecosystem.md index 6d304d817bd65..7074cf980ca59 100644 --- a/docs/ai/dotnet-ai-ecosystem.md +++ b/docs/ai/dotnet-ai-ecosystem.md @@ -3,6 +3,7 @@ title: .NET + AI ecosystem tools and SDKs description: This article provides an overview of the ecosystem of SDKs and tools available to .NET developers integrating AI into their applications. ms.date: 04/15/2026 ms.topic: overview +ai-usage: ai-assisted --- # .NET + AI ecosystem tools and SDKs @@ -19,8 +20,8 @@ The following table recommends which technology to use based on different object | **Work with your own data** | Use [Microsoft.Extensions.DataIngestion (MEDI)](#microsoftextensionsdataingestion-medi) to read, chunk, or enrich content. Then use [Microsoft.Extensions.VectorData (MEVD)](#microsoftextensionsvectordata-mevd) to store and retrieve vectors. | | **Share or consume capabilities across AI clients** | Use an [MCP Server](#mcp-server) to publish capabilities, or an [MCP Client](#mcp-client) to consume them. | | **Build an agentic system** | Use [Copilot SDK](#copilot-sdk) for a ready-made harness, or [Microsoft Agent Framework](#microsoft-agent-framework-maf) for multi-step goal pursuit, routing, or handoffs. | -| **Choose a hosting or execution model** | Use [Azure AI Foundry](#azure-ai-foundry) for managed cloud, [Foundry Local](#foundry-local) for local-first or privacy-sensitive execution, and [Aspire](#aspire) for distributed multi-service systems. | -| **Improve the developer workflow** | Use [AI Toolkit](#ai-toolkit). | +| **Choose a hosting or execution model** | Use [Microsoft Foundry](#microsoft-foundry) for managed cloud, [Foundry Local](#foundry-local) for local-first or privacy-sensitive execution, and [Aspire](#aspire) for distributed multi-service systems. | +| **Improve the developer workflow** | Use [Foundry Toolkit](#foundry-toolkit). | Most production AI applications combine several components: @@ -28,8 +29,8 @@ Most production AI applications combine several components: - **RAG application**: MEDI + MEVD + MEAI - **Multi-agent system**: MEAI + MAF + Aspire - **Tool interoperability**: MEAI + MCP Server + MCP Client -- **Enterprise cloud app**: MEAI + Azure AI Foundry + Aspire -- **Local-first app**: MEAI + Foundry Local + AI Toolkit (development) +- **Enterprise cloud app**: MEAI + Microsoft Foundry + Aspire +- **Local-first app**: MEAI + Foundry Local + Foundry Toolkit (development) Use these practical rules to choose quickly: @@ -97,13 +98,13 @@ Not every AI feature needs MAF. If a direct MEAI call or a simple tool-calling l For more information, see [Microsoft Agent Framework overview](/agent-framework/overview/agent-framework-overview). -## AI Toolkit +## Foundry Toolkit -AI Toolkit is a VS Code extension pack for AI development that speeds up experimentation with models, prompts, agents, and evaluations. +Foundry Toolkit is a VS Code extension pack for AI development that speeds up experimentation with models, prompts, agents, and evaluations. -AI Toolkit isn't the core runtime architecture for the production app. It complements MEAI, Evaluations, and Foundry Local. +Foundry Toolkit isn't the core runtime architecture for the production app. It complements MEAI, Evaluations, and Foundry Local. -For more information, see [AI Toolkit for Visual Studio Code](https://code.visualstudio.com/docs/intelligentapps/overview). +For more information, see [Foundry Toolkit for Visual Studio Code](https://code.visualstudio.com/docs/intelligentapps/overview). ## Copilot SDK @@ -113,13 +114,13 @@ Copilot SDK is more opinionated and prewired than MEAI. If your goal is a fully For more information, see the [Copilot SDK repository](https://github.com/github/copilot-sdk). -## Azure AI Foundry +## Microsoft Foundry -Azure AI Foundry is the managed cloud platform layer for enterprise AI solutions, with two primary functions: model management and hosted agents. +Microsoft Foundry is the managed cloud platform layer for enterprise AI solutions, with two primary functions: model management and hosted agents. -Azure AI Foundry isn't the app-facing programming abstraction; MEAI still plays that role in .NET code. Azure AI Foundry becomes the right lead when the real question is *where* the model runs and under what controls. +Microsoft Foundry isn't the app-facing programming abstraction; MEAI still plays that role in .NET code. Microsoft Foundry becomes the right lead when the real question is *where* the model runs and under what controls. -For more information, see the [Azure AI Foundry documentation](/azure/ai-foundry/). +For more information, see the [Microsoft Foundry documentation](/azure/ai-foundry/). ## Foundry Local @@ -135,6 +136,6 @@ Aspire is the orchestration, service-wiring, and observability layer for distrib AI systems often stop being "just one app" once retrieval, tools, gateways, and worker services are involved. Aspire helps teams keep those parts understandable and observable, and its visuals make it easier to trace AI flows across services. -Aspire isn't specifically the AI runtime; it's the multi-service application layer around it. It doesn't replace MEAI, MAF, or Azure AI Foundry. +Aspire isn't specifically the AI runtime; it's the multi-service application layer around it. It doesn't replace MEAI, MAF, or Microsoft Foundry. For more information, see the [Aspire documentation](https://aspire.dev/). 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 --- 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/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