From c3ae484549e6af26fcf0514f8005f900a9e704d5 Mon Sep 17 00:00:00 2001 From: Adam Ratzman Date: Wed, 11 Mar 2026 22:33:00 -0400 Subject: [PATCH 01/12] Revamp extension README for clarity and completeness --- extension/README.md | 233 ++++++++++++++++++++++++++++++-------------- 1 file changed, 162 insertions(+), 71 deletions(-) diff --git a/extension/README.md b/extension/README.md index 0f2f490c3c3..b52479efe7a 100644 --- a/extension/README.md +++ b/extension/README.md @@ -1,39 +1,68 @@ +# Aspire for Visual Studio Code -# Aspire VS Code Extension +The official Aspire extension for VS Code. Run, debug, and deploy your Aspire apps without leaving the editor. -The Aspire VS Code extension provides a set of commands and tools to help you work with Aspire and Aspire AppHost projects directly from Visual Studio Code. +Aspire helps you build distributed apps — things like microservices, databases, containers, and frontends — and wire them together in code. This extension lets you do all of that from VS Code, with debugging support for **C#, Python, Node.js**, and more. -## Commands +--- -The extension adds the following commands to VS Code: +## Table of Contents -| Command | Description | +- [Features at a Glance](#features-at-a-glance) +- [Prerequisites](#prerequisites) +- [Getting Started](#getting-started) +- [Running and Debugging](#running-and-debugging) +- [The Aspire Sidebar](#the-aspire-sidebar) +- [The Aspire Dashboard](#the-aspire-dashboard) +- [Commands](#commands) +- [Language and Debugger Support](#language-and-debugger-support) +- [Extension Settings](#extension-settings) +- [MCP Server Integration](#mcp-server-integration) +- [Feedback and Issues](#feedback-and-issues) +- [License](#license) + +--- + +## Features at a Glance + +| Feature | Description | |---------|-------------| -| Aspire: New Aspire project | Create a new Aspire apphost or starter app from a template. | -| Aspire: Initialize Aspire | Initialize Aspire in an existing project. | -| Aspire: Add an integration | Add a hosting integration (`Aspire.Hosting.*`) to the Aspire apphost. | -| Aspire: Update integrations | Update hosting integrations and Aspire SDK in the apphost. | -| Aspire: Publish deployment artifacts | Generate deployment artifacts for an Aspire apphost. | -| Aspire: Deploy app | Deploy the contents of an Aspire apphost to its defined deployment targets. | -| Aspire: Execute pipeline step (aspire do) | Execute a specific pipeline step and its dependencies. | -| Aspire: Configure launch.json file | Add the default Aspire debugger launch configuration to your workspace's `launch.json`. | -| Aspire: Extension settings | Open Aspire extension settings. | -| Aspire: Open local Aspire settings | Open the local `.aspire/settings.json` file for the current workspace. | -| Aspire: Open global Aspire settings | Open the global `~/.aspire/globalsettings.json` file. | -| Aspire: Open Aspire terminal | Open an Aspire VS Code terminal for working with Aspire projects. | +| **Run & debug** | Start your whole app and attach debuggers to every service with F5 | +| **Dashboard** | See your resources, endpoints, logs, traces, and metrics while your app runs | +| **Sidebar** | Browse running apphosts and resources in the Activity Bar | +| **Integrations** | Add databases, queues, and cloud services from the Command Palette | +| **Scaffolding** | Create new Aspire projects from templates | +| **Deploy** | Generate deployment artifacts or push to cloud targets | +| **MCP** | Let AI tools like GitHub Copilot see your running app via the Model Context Protocol | +| **Multi-language** | Debug C#, Python, Node.js, Azure Functions, and browser apps together | + +--- + +## Prerequisites + +### Aspire CLI -All commands are available from the Command Palette (`Cmd+Shift+P` or `Ctrl+Shift+P`) and are grouped under the "Aspire" category. +The [Aspire CLI](https://aspire.dev/get-started/install-cli/) needs to be installed and on your PATH. You can install it directly from VS Code with the **Aspire: Install Aspire CLI (stable)** command, or follow the [installation guide](https://aspire.dev/get-started/install-cli/) for manual setup. -## Debugging +### .NET + +[.NET 8 or later](https://dotnet.microsoft.com/download) is required. + +--- + +## Getting Started + +Open your Aspire project in VS Code, or create one with **Aspire: New Aspire project** from the Command Palette. Run **Aspire: Configure launch.json file** to set up the debug configuration, then press **F5**. The extension will build your apphost, start your services, attach debuggers, and open the dashboard. -To run an Aspire application using the Aspire VS Code extension, you must be using Aspire 9.5 or higher. Some features are only available when certain VS Code extensions are installed and available. See the feature matrix below: +There's also a built-in walkthrough at **Help → Get Started → Get started with Aspire** that covers the basics step by step. -| Feature | Requirement | Notes | -|---------|-------------|-------| -| Debug C# projects | [C# Dev Kit](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit) or [C# for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) | The C# extension is required for debugging .NET projects. Apphosts will be built in VS Code if C# Dev Kit is available. | -| Debug Python projects | [Python extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python) | Required for debugging Python projects | +--- -To run and debug your Aspire application, add an entry to the workspace `launch.json`. You can change the apphost to run by setting the `program` field to an apphost project file based on the below example: +## Running and Debugging + +### Launch configuration + +Add an entry to `.vscode/launch.json` pointing at your apphost project: ```json { @@ -44,7 +73,17 @@ To run and debug your Aspire application, add an entry to the workspace `launch. } ``` -You can also use the `command` property to run deploy, publish, or pipeline step commands with the debugger attached: +When you hit **F5**, the extension builds the apphost, starts all the resources (services, containers, databases) in the right order, hooks up debuggers based on each service's language, and opens the dashboard. + +You can also right-click an `apphost.cs`, `apphost.ts`, or `apphost.js` file in the Explorer and pick **Run Aspire apphost** or **Debug Aspire apphost**. + +### Deploy, publish, and pipeline steps + +The `command` property in the launch config lets you do more than just run: + +- **`deploy`** — push to your defined deployment targets. +- **`publish`** — generate deployment artifacts (manifests, Bicep files, etc.). +- **`do`** — run a specific pipeline step. Set `step` to the step name. ```json { @@ -56,75 +95,127 @@ You can also use the `command` property to run deploy, publish, or pipeline step } ``` -Supported values for `command` are `run` (default), `deploy`, `publish`, and `do`. When using `do`, you can optionally set the `step` property to specify the pipeline step to execute: +### Customizing debugger settings per language + +The `debuggers` property lets you pass debug config specific to a language. Use `project` for C#/.NET services, `python` for Python, and `apphost` for the apphost itself: ```json { "type": "aspire", "request": "launch", - "name": "Aspire: Run pipeline step", + "name": "Aspire: Launch MyAppHost", "program": "${workspaceFolder}/MyAppHost/MyAppHost.csproj", - "command": "do", - "step": "my-custom-step" + "debuggers": { + "project": { + "console": "integratedTerminal", + "logging": { "moduleLoad": false } + }, + "apphost": { + "stopAtEntry": true + } + } } ``` -## Requirements +--- -### Aspire CLI +## The Aspire Sidebar -The [Aspire CLI](https://aspire.dev/get-started/install-cli/) must be installed and available on the path. You can install using the following scripts. +The extension adds an **Aspire** panel to the Activity Bar. It shows a live tree of your resources. In **Workspace** mode you see resources from the apphost in your current workspace, updating in real time. Switch to **Global** mode with the toggle in the panel header to see every running apphost on your machine. -On Windows: +Right-click a resource to start, stop, or restart it, view its logs, run resource-specific commands, or open the dashboard. -```powershell -irm https://aspire.dev/install.ps1 | iex -``` +--- -On Linux or macOS: +## The Aspire Dashboard -```sh -curl -sSL https://aspire.dev/install.sh | bash -``` +The dashboard gives you a live view of your running app — all your resources and their health, endpoint URLs, console logs from every service, structured logs (via OpenTelemetry), distributed traces across services, and metrics. -### .NET +It opens automatically when you start your app. You can pick which browser it uses with the `aspire.dashboardBrowser` setting (system default, or Chrome/Edge/Firefox as a debug session that closes when you stop debugging). + +--- + +## Commands + +All commands live in the Command Palette (`Cmd+Shift+P` / `Ctrl+Shift+P`) under **Aspire**. + +| Command | Description | +|---------|-------------| +| **New Aspire project** | Create a new apphost or starter app from a template | +| **Initialize Aspire** | Add Aspire to an existing project | +| **Add an integration** | Add a hosting integration (`Aspire.Hosting.*`) | +| **Update integrations** | Update hosting integrations and the Aspire SDK | +| **Publish deployment artifacts** | Generate deployment manifests | +| **Deploy app** | Deploy to your defined targets | +| **Execute pipeline step** | Run a pipeline step and its dependencies (`aspire do`) | +| **Configure launch.json file** | Add the Aspire debug config to your workspace | +| **Extension settings** | Open Aspire settings | +| **Open local Aspire settings** | Open `.aspire/settings.json` for this workspace | +| **Open global Aspire settings** | Open `~/.aspire/globalsettings.json` | +| **Open Aspire terminal** | Open a terminal with the Aspire CLI ready | +| **Install Aspire CLI (stable)** | Install the latest stable CLI | +| **Install Aspire CLI (daily)** | Install the daily preview build | +| **Update Aspire CLI** | Update the CLI | +| **Verify Aspire CLI installation** | Check that the CLI works | + +--- + +## Language and Debugger Support + +The extension figures out what language each resource uses and attaches the right debugger. Some languages need a companion extension: + +| Language | Debugger | Extension needed | +|----------|----------|------------------| +| C# / .NET | coreclr | [C# Dev Kit](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit) or [C#](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) | +| Python | debugpy | [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) | +| Node.js | js-debug (built-in) | None | +| Browser apps | js-debug (built-in) | None | +| Azure Functions | coreclr + func host | [C#](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) + [Azure Functions](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurefunctions) | + +Node.js and browser debugging just work — VS Code has a built-in JavaScript debugger. C# Dev Kit gives you richer build integration than the standalone C# extension, but either one works for debugging. + +--- + +## Extension Settings + +You can configure the extension under **Settings → Aspire**, or jump there with **Aspire: Extension settings**. The most useful ones: + +| Setting | Default | Description | +|---------|---------|-------------| +| `aspire.aspireCliExecutablePath` | `""` | Path to the Aspire CLI. Leave empty to use `aspire` from PATH. | +| `aspire.dashboardBrowser` | `openExternalBrowser` | Which browser to open the dashboard in — system default, or Chrome/Edge/Firefox as a debug session | +| `aspire.enableAspireDashboardAutoLaunch` | `true` | Open the dashboard automatically when you start debugging | +| `aspire.registerMcpServerInWorkspace` | `false` | Register the Aspire MCP server (see [below](#mcp-server-integration)) | + +There are more settings for things like verbose logging, startup prompts, and polling intervals — search "Aspire" in VS Code settings to see them all. + +The extension also gives you IntelliSense and validation when editing `.aspire/settings.json` (workspace-level config) and `~/.aspire/globalsettings.json` (user-level config). Use the **Open local/global Aspire settings** commands to open them. + +--- + +## MCP Server Integration -[.NET 8+](https://dotnet.microsoft.com/en-us/download) must be installed. +The extension can register an Aspire [MCP](https://modelcontextprotocol.io/) server with VS Code. This lets AI tools — GitHub Copilot included — see your running app's resources, endpoints, and configuration, so they have better context when helping you write code or answer questions. + +Turn it on by setting `aspire.registerMcpServerInWorkspace` to `true`. The MCP server is provided through the Aspire CLI and starts automatically when the extension detects an Aspire project in your workspace. + +--- ## Feedback and Issues -Please report [issues](https://github.com/dotnet/aspire/issues/new?template=10_bug_report.yml&labels=area-extension) or [feature requests](https://github.com/dotnet/aspire/issues/new?template=20_feature-request.yml&labels=area-extension) on the Aspire [GitHub repository](https://github.com/dotnet/aspire/issues) using the label `area-extension`. +Found a bug or have an idea? File it on the [dotnet/aspire](https://github.com/dotnet/aspire/issues) repo: -## Customizing debugger attributes for resources +- [Report a bug](https://github.com/dotnet/aspire/issues/new?template=10_bug_report.yml&labels=area-extension) +- [Request a feature](https://github.com/dotnet/aspire/issues/new?template=20_feature-request.yml&labels=area-extension) -| Language | Debugger entry | -|----------|-----------------| -| C# | project | -| Python | python | +### Learn more -The debuggers property stores common debug configuration properties for different types of Aspire services. -C#-based services have common debugging properties under `project`. Python-based services have their common properties under `python`. -There is also a special entry for the apphost (`apphost`). For example: +- [Aspire docs](https://aspire.dev/docs/) +- [Integration gallery](https://aspire.dev/integrations/gallery/) +- [Dashboard overview](https://aspire.dev/dashboard/overview/) +- [Discord](https://discord.com/invite/raNPcaaSj8) -```json -{ - "type": "aspire", - "request": "launch", - "name": "Aspire: Launch MyAppHost", - "program": "${workspaceFolder}/MyAppHost/MyAppHost.csproj", - "debuggers": { - "project": { - "console": "integratedTerminal", - "logging": { - "moduleLoad": false - } - }, - "apphost": { - "stopAtEntry": true - } - } -} -``` +--- ## License From d76de822995f1a3dbd890d9d1b46e56c566b9323 Mon Sep 17 00:00:00 2001 From: Adam Ratzman Date: Wed, 11 Mar 2026 22:35:24 -0400 Subject: [PATCH 02/12] Add dashboard screenshot and placeholders for sidebar/command palette screenshots --- extension/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/extension/README.md b/extension/README.md index b52479efe7a..5fc1fb96a0f 100644 --- a/extension/README.md +++ b/extension/README.md @@ -54,6 +54,8 @@ The [Aspire CLI](https://aspire.dev/get-started/install-cli/) needs to be instal Open your Aspire project in VS Code, or create one with **Aspire: New Aspire project** from the Command Palette. Run **Aspire: Configure launch.json file** to set up the debug configuration, then press **F5**. The extension will build your apphost, start your services, attach debuggers, and open the dashboard. + + There's also a built-in walkthrough at **Help → Get Started → Get started with Aspire** that covers the basics step by step. --- @@ -125,12 +127,16 @@ The extension adds an **Aspire** panel to the Activity Bar. It shows a live tree Right-click a resource to start, stop, or restart it, view its logs, run resource-specific commands, or open the dashboard. + + --- ## The Aspire Dashboard The dashboard gives you a live view of your running app — all your resources and their health, endpoint URLs, console logs from every service, structured logs (via OpenTelemetry), distributed traces across services, and metrics. +![Aspire Dashboard showing running resources](resources/aspire-dashboard-dark.png) + It opens automatically when you start your app. You can pick which browser it uses with the `aspire.dashboardBrowser` setting (system default, or Chrome/Edge/Firefox as a debug session that closes when you stop debugging). --- From ee607a320e49730f0510342699385a1e9b56276c Mon Sep 17 00:00:00 2001 From: Adam Ratzman Date: Wed, 11 Mar 2026 22:36:20 -0400 Subject: [PATCH 03/12] Fix Azure Functions debugger info to reflect multi-language support --- extension/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extension/README.md b/extension/README.md index 5fc1fb96a0f..c2542c3bd99 100644 --- a/extension/README.md +++ b/extension/README.md @@ -176,9 +176,9 @@ The extension figures out what language each resource uses and attaches the righ | Python | debugpy | [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) | | Node.js | js-debug (built-in) | None | | Browser apps | js-debug (built-in) | None | -| Azure Functions | coreclr + func host | [C#](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) + [Azure Functions](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurefunctions) | +| Azure Functions | varies by language | [Azure Functions](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurefunctions) + language extension | -Node.js and browser debugging just work — VS Code has a built-in JavaScript debugger. C# Dev Kit gives you richer build integration than the standalone C# extension, but either one works for debugging. +Node.js and browser debugging just work — VS Code has a built-in JavaScript debugger. C# Dev Kit gives you richer build integration than the standalone C# extension, but either one works for debugging. Azure Functions supports C#, JavaScript/TypeScript, Python, and Java — the debugger used depends on the function's language. --- From 11dd955397a3f85cfba84f692cf41a3ec8e09b44 Mon Sep 17 00:00:00 2001 From: Adam Ratzman Date: Wed, 11 Mar 2026 22:37:16 -0400 Subject: [PATCH 04/12] Fix Azure Functions: only C#, JS/TS, and Python debugging supported --- extension/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extension/README.md b/extension/README.md index c2542c3bd99..a336b995ff9 100644 --- a/extension/README.md +++ b/extension/README.md @@ -178,7 +178,7 @@ The extension figures out what language each resource uses and attaches the righ | Browser apps | js-debug (built-in) | None | | Azure Functions | varies by language | [Azure Functions](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurefunctions) + language extension | -Node.js and browser debugging just work — VS Code has a built-in JavaScript debugger. C# Dev Kit gives you richer build integration than the standalone C# extension, but either one works for debugging. Azure Functions supports C#, JavaScript/TypeScript, Python, and Java — the debugger used depends on the function's language. +Node.js and browser debugging just work — VS Code has a built-in JavaScript debugger. C# Dev Kit gives you richer build integration than the standalone C# extension, but either one works for debugging. Azure Functions debugging supports C#, JavaScript/TypeScript, and Python. --- From c633f731c126693e42e7c3911d977edba4b5a4b0 Mon Sep 17 00:00:00 2001 From: Adam Ratzman Date: Wed, 11 Mar 2026 22:43:02 -0400 Subject: [PATCH 05/12] Capitalize AppHosts in view name and related strings --- extension/README.md | 2 +- extension/package.nls.json | 6 +++--- extension/src/loc/strings.ts | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/extension/README.md b/extension/README.md index a336b995ff9..5ead399d053 100644 --- a/extension/README.md +++ b/extension/README.md @@ -29,7 +29,7 @@ Aspire helps you build distributed apps — things like microservices, databases |---------|-------------| | **Run & debug** | Start your whole app and attach debuggers to every service with F5 | | **Dashboard** | See your resources, endpoints, logs, traces, and metrics while your app runs | -| **Sidebar** | Browse running apphosts and resources in the Activity Bar | +| **Sidebar** | Browse running AppHosts and resources in the Activity Bar | | **Integrations** | Add databases, queues, and cloud services from the Command Palette | | **Scaffolding** | Create new Aspire projects from templates | | **Deploy** | Generate deployment artifacts or push to cloud targets | diff --git a/extension/package.nls.json b/extension/package.nls.json index 78cf3480450..f5782ef973d 100644 --- a/extension/package.nls.json +++ b/extension/package.nls.json @@ -33,7 +33,7 @@ "configuration.aspire.closeDashboardOnDebugEnd": "Close the dashboard browser when the debug session ends. Works with debug browser options (Chrome, Edge, Firefox).", "configuration.aspire.enableDebugConfigEnvironmentLogging": "Include environment variables when logging debug session configurations. This can help diagnose environment-related issues but may expose sensitive information in logs.", "configuration.aspire.registerMcpServerInWorkspace": "Whether to register the Aspire MCP server when a workspace is open.", - "configuration.aspire.globalAppHostsPollingInterval": "Polling interval in milliseconds for fetching all running apphosts (used in global view). Minimum: 1000.", + "configuration.aspire.globalAppHostsPollingInterval": "Polling interval in milliseconds for fetching all running AppHosts (used in global view). Minimum: 1000.", "command.runAppHost": "Run Aspire apphost", "command.debugAppHost": "Debug Aspire apphost", "aspire-vscode.strings.noCsprojFound": "No apphost found in the current workspace.", @@ -112,10 +112,10 @@ "aspire-vscode.strings.selectFileTitle": "Select file", "aspire-vscode.strings.enterPipelineStep": "Enter the pipeline step to execute", "viewsContainers.aspirePanel.title": "Aspire", - "views.runningAppHosts.name": "Running apphosts", + "views.runningAppHosts.name": "Running AppHosts", "views.runningAppHosts.welcome": "No running Aspire apphost detected in this workspace.\n[Refresh](command:aspire-vscode.refreshRunningAppHosts)", "views.runningAppHosts.errorWelcome": "The Aspire CLI is not installed or does not support this feature. Install or update the Aspire CLI to get started.\n[Update Aspire CLI](command:aspire-vscode.updateSelf)\n[Refresh](command:aspire-vscode.refreshRunningAppHosts)", - "command.refreshRunningAppHosts": "Refresh running apphosts", + "command.refreshRunningAppHosts": "Refresh running AppHosts", "command.openDashboard": "Open Dashboard", "command.stopAppHost": "Stop", "command.stopResource": "Stop", diff --git a/extension/src/loc/strings.ts b/extension/src/loc/strings.ts index 6759c733e1c..8a5726aa5c3 100644 --- a/extension/src/loc/strings.ts +++ b/extension/src/loc/strings.ts @@ -55,7 +55,7 @@ export const pidDescription = (pid: number) => vscode.l10n.t('PID: {0}', pid); export const dashboardLabel = vscode.l10n.t('Dashboard'); export const cliPidLabel = (pid: number) => vscode.l10n.t('CLI PID: {0}', pid); export const appHostPidLabel = (pid: number) => vscode.l10n.t('Apphost PID: {0}', pid); -export const errorFetchingAppHosts = (error: string) => vscode.l10n.t('Error fetching running apphosts: {0}', error); +export const errorFetchingAppHosts = (error: string) => vscode.l10n.t('Error fetching running AppHosts: {0}', error); export const resourcesGroupLabel = vscode.l10n.t('Resources'); export const resourceStateLabel = (name: string, state: string) => vscode.l10n.t('{0} — {1}', name, state); export const noCommandsAvailable = vscode.l10n.t('No commands available for this resource.'); From d50288d1529fab994ddce08f9e9d91352432cc84 Mon Sep 17 00:00:00 2001 From: Adam Ratzman Date: Wed, 11 Mar 2026 22:43:29 -0400 Subject: [PATCH 06/12] Only capitalize AppHosts in the view name, keep lowercase elsewhere --- extension/README.md | 2 +- extension/package.nls.json | 4 ++-- extension/src/loc/strings.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/extension/README.md b/extension/README.md index 5ead399d053..a336b995ff9 100644 --- a/extension/README.md +++ b/extension/README.md @@ -29,7 +29,7 @@ Aspire helps you build distributed apps — things like microservices, databases |---------|-------------| | **Run & debug** | Start your whole app and attach debuggers to every service with F5 | | **Dashboard** | See your resources, endpoints, logs, traces, and metrics while your app runs | -| **Sidebar** | Browse running AppHosts and resources in the Activity Bar | +| **Sidebar** | Browse running apphosts and resources in the Activity Bar | | **Integrations** | Add databases, queues, and cloud services from the Command Palette | | **Scaffolding** | Create new Aspire projects from templates | | **Deploy** | Generate deployment artifacts or push to cloud targets | diff --git a/extension/package.nls.json b/extension/package.nls.json index f5782ef973d..62b9f45cb57 100644 --- a/extension/package.nls.json +++ b/extension/package.nls.json @@ -33,7 +33,7 @@ "configuration.aspire.closeDashboardOnDebugEnd": "Close the dashboard browser when the debug session ends. Works with debug browser options (Chrome, Edge, Firefox).", "configuration.aspire.enableDebugConfigEnvironmentLogging": "Include environment variables when logging debug session configurations. This can help diagnose environment-related issues but may expose sensitive information in logs.", "configuration.aspire.registerMcpServerInWorkspace": "Whether to register the Aspire MCP server when a workspace is open.", - "configuration.aspire.globalAppHostsPollingInterval": "Polling interval in milliseconds for fetching all running AppHosts (used in global view). Minimum: 1000.", + "configuration.aspire.globalAppHostsPollingInterval": "Polling interval in milliseconds for fetching all running apphosts (used in global view). Minimum: 1000.", "command.runAppHost": "Run Aspire apphost", "command.debugAppHost": "Debug Aspire apphost", "aspire-vscode.strings.noCsprojFound": "No apphost found in the current workspace.", @@ -115,7 +115,7 @@ "views.runningAppHosts.name": "Running AppHosts", "views.runningAppHosts.welcome": "No running Aspire apphost detected in this workspace.\n[Refresh](command:aspire-vscode.refreshRunningAppHosts)", "views.runningAppHosts.errorWelcome": "The Aspire CLI is not installed or does not support this feature. Install or update the Aspire CLI to get started.\n[Update Aspire CLI](command:aspire-vscode.updateSelf)\n[Refresh](command:aspire-vscode.refreshRunningAppHosts)", - "command.refreshRunningAppHosts": "Refresh running AppHosts", + "command.refreshRunningAppHosts": "Refresh running apphosts", "command.openDashboard": "Open Dashboard", "command.stopAppHost": "Stop", "command.stopResource": "Stop", diff --git a/extension/src/loc/strings.ts b/extension/src/loc/strings.ts index 8a5726aa5c3..6759c733e1c 100644 --- a/extension/src/loc/strings.ts +++ b/extension/src/loc/strings.ts @@ -55,7 +55,7 @@ export const pidDescription = (pid: number) => vscode.l10n.t('PID: {0}', pid); export const dashboardLabel = vscode.l10n.t('Dashboard'); export const cliPidLabel = (pid: number) => vscode.l10n.t('CLI PID: {0}', pid); export const appHostPidLabel = (pid: number) => vscode.l10n.t('Apphost PID: {0}', pid); -export const errorFetchingAppHosts = (error: string) => vscode.l10n.t('Error fetching running AppHosts: {0}', error); +export const errorFetchingAppHosts = (error: string) => vscode.l10n.t('Error fetching running apphosts: {0}', error); export const resourcesGroupLabel = vscode.l10n.t('Resources'); export const resourceStateLabel = (name: string, state: string) => vscode.l10n.t('{0} — {1}', name, state); export const noCommandsAvailable = vscode.l10n.t('No commands available for this resource.'); From 4cf34b5d160aac392dcf6e5a3ed0cc76e24bb449 Mon Sep 17 00:00:00 2001 From: Adam Ratzman Date: Wed, 11 Mar 2026 22:43:47 -0400 Subject: [PATCH 07/12] Rename init command to 'Initialize Aspire in an existing codebase' --- extension/README.md | 2 +- extension/package.nls.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/extension/README.md b/extension/README.md index a336b995ff9..17620337a78 100644 --- a/extension/README.md +++ b/extension/README.md @@ -148,7 +148,7 @@ All commands live in the Command Palette (`Cmd+Shift+P` / `Ctrl+Shift+P`) under | Command | Description | |---------|-------------| | **New Aspire project** | Create a new apphost or starter app from a template | -| **Initialize Aspire** | Add Aspire to an existing project | +| **Initialize Aspire in an existing codebase** | Add Aspire to an existing project | | **Add an integration** | Add a hosting integration (`Aspire.Hosting.*`) | | **Update integrations** | Update hosting integrations and the Aspire SDK | | **Publish deployment artifacts** | Generate deployment manifests | diff --git a/extension/package.nls.json b/extension/package.nls.json index 62b9f45cb57..3775271deb8 100644 --- a/extension/package.nls.json +++ b/extension/package.nls.json @@ -9,7 +9,7 @@ "extension.debug.defaultConfiguration.description": "Launch the effective Aspire apphost in your workspace", "command.add": "Add an integration", "command.new": "New Aspire project", - "command.init": "Initialize Aspire", + "command.init": "Initialize Aspire in an existing codebase", "command.publish": "Publish deployment artifacts", "command.update": "Update integrations", "command.updateSelf": "Update Aspire CLI", From 6a2513e8153449ba38896ab826e188f10dc52dca Mon Sep 17 00:00:00 2001 From: Adam Ratzman Date: Wed, 11 Mar 2026 22:45:12 -0400 Subject: [PATCH 08/12] Remove TODO placeholders for screenshots --- extension/README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/extension/README.md b/extension/README.md index 17620337a78..a7d01143b8f 100644 --- a/extension/README.md +++ b/extension/README.md @@ -54,8 +54,6 @@ The [Aspire CLI](https://aspire.dev/get-started/install-cli/) needs to be instal Open your Aspire project in VS Code, or create one with **Aspire: New Aspire project** from the Command Palette. Run **Aspire: Configure launch.json file** to set up the debug configuration, then press **F5**. The extension will build your apphost, start your services, attach debuggers, and open the dashboard. - - There's also a built-in walkthrough at **Help → Get Started → Get started with Aspire** that covers the basics step by step. --- @@ -127,8 +125,6 @@ The extension adds an **Aspire** panel to the Activity Bar. It shows a live tree Right-click a resource to start, stop, or restart it, view its logs, run resource-specific commands, or open the dashboard. - - --- ## The Aspire Dashboard From 85993202b69a7dde3e8d3f61305688ff32d555d2 Mon Sep 17 00:00:00 2001 From: Adam Ratzman Date: Wed, 11 Mar 2026 22:48:51 -0400 Subject: [PATCH 09/12] Wording tweak: 'most commonly used' settings --- extension/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extension/README.md b/extension/README.md index a7d01143b8f..1c5722f062b 100644 --- a/extension/README.md +++ b/extension/README.md @@ -180,7 +180,7 @@ Node.js and browser debugging just work — VS Code has a built-in JavaScript de ## Extension Settings -You can configure the extension under **Settings → Aspire**, or jump there with **Aspire: Extension settings**. The most useful ones: +You can configure the extension under **Settings → Aspire**, or jump there with **Aspire: Extension settings**. The most commonly used: | Setting | Default | Description | |---------|---------|-------------| From 0ed4fb6fd9c3c6d8f4be621bd1f83aa3af34c4e9 Mon Sep 17 00:00:00 2001 From: Adam Ratzman Date: Wed, 11 Mar 2026 22:49:25 -0400 Subject: [PATCH 10/12] Point to Extension settings command instead of manual search --- extension/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extension/README.md b/extension/README.md index 1c5722f062b..203448f9111 100644 --- a/extension/README.md +++ b/extension/README.md @@ -189,7 +189,7 @@ You can configure the extension under **Settings → Aspire**, or jump there wit | `aspire.enableAspireDashboardAutoLaunch` | `true` | Open the dashboard automatically when you start debugging | | `aspire.registerMcpServerInWorkspace` | `false` | Register the Aspire MCP server (see [below](#mcp-server-integration)) | -There are more settings for things like verbose logging, startup prompts, and polling intervals — search "Aspire" in VS Code settings to see them all. +There are more settings for things like verbose logging, startup prompts, and polling intervals — run **Aspire: Extension settings** from the Command Palette to see them all. The extension also gives you IntelliSense and validation when editing `.aspire/settings.json` (workspace-level config) and `~/.aspire/globalsettings.json` (user-level config). Use the **Open local/global Aspire settings** commands to open them. From aa30f516c450d46353dbb2d0973d84036618594f Mon Sep 17 00:00:00 2001 From: Adam Ratzman Date: Wed, 11 Mar 2026 22:52:15 -0400 Subject: [PATCH 11/12] Address Copilot review: VS Code version prereq, dashboard browser details, MCP server wording --- extension/README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/extension/README.md b/extension/README.md index 203448f9111..15c3779cba5 100644 --- a/extension/README.md +++ b/extension/README.md @@ -48,6 +48,10 @@ The [Aspire CLI](https://aspire.dev/get-started/install-cli/) needs to be instal [.NET 8 or later](https://dotnet.microsoft.com/download) is required. +### VS Code + +VS Code 1.98 or later is required. + --- ## Getting Started @@ -133,7 +137,7 @@ The dashboard gives you a live view of your running app — all your resources a ![Aspire Dashboard showing running resources](resources/aspire-dashboard-dark.png) -It opens automatically when you start your app. You can pick which browser it uses with the `aspire.dashboardBrowser` setting (system default, or Chrome/Edge/Firefox as a debug session that closes when you stop debugging). +It opens automatically when you start your app. You can pick which browser it uses with the `aspire.dashboardBrowser` setting — system default browser, or Chrome, Edge, or Firefox as a debug session. When using a debug browser, the `aspire.closeDashboardOnDebugEnd` setting controls whether it closes automatically when you stop debugging. Firefox also requires the [Firefox Debugger](https://marketplace.visualstudio.com/items?itemName=firefox-devtools.vscode-firefox-debug) extension. --- @@ -199,7 +203,7 @@ The extension also gives you IntelliSense and validation when editing `.aspire/s The extension can register an Aspire [MCP](https://modelcontextprotocol.io/) server with VS Code. This lets AI tools — GitHub Copilot included — see your running app's resources, endpoints, and configuration, so they have better context when helping you write code or answer questions. -Turn it on by setting `aspire.registerMcpServerInWorkspace` to `true`. The MCP server is provided through the Aspire CLI and starts automatically when the extension detects an Aspire project in your workspace. +Turn it on by setting `aspire.registerMcpServerInWorkspace` to `true`. When enabled, the extension registers the MCP server definition via the Aspire CLI whenever a workspace is open and the CLI is available. --- From fda0b800b3a9953f0081fd640676d012d57b219f Mon Sep 17 00:00:00 2001 From: Adam Ratzman Date: Wed, 11 Mar 2026 22:54:08 -0400 Subject: [PATCH 12/12] Fix .NET version: require .NET 10, not .NET 8 --- extension/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extension/README.md b/extension/README.md index 15c3779cba5..c068d7a96d6 100644 --- a/extension/README.md +++ b/extension/README.md @@ -46,7 +46,7 @@ The [Aspire CLI](https://aspire.dev/get-started/install-cli/) needs to be instal ### .NET -[.NET 8 or later](https://dotnet.microsoft.com/download) is required. +[.NET 10 or later](https://dotnet.microsoft.com/download) is required. ### VS Code