Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
b773dd1
Expose evaluated project assembly name to resource snapshots
Aug 6, 2026
a4038f1
Preserve project reference metadata for assembly names
Aug 7, 2026
8fced48
Use prepared references for project assembly names
Aug 7, 2026
09b3f8e
Address review findings on the assembly name probe
Aug 7, 2026
8a1856f
Cover the strict probe path and skip it for the CLI server project
Aug 7, 2026
14f5ade
Remove the stale assembly name when the project no longer supplies one
Aug 7, 2026
35356e9
Accept the generated metadata snapshot for the new assembly name prop…
Aug 7, 2026
0ab785c
Keep project paths containing an apostrophe out of MSBuild property f…
Aug 7, 2026
dd4c41c
Move attach debugger config behind debugger extension
Aug 7, 2026
4bffbf8
Merge microsoft/main into attach debugger branch
Aug 7, 2026
b41c378
Rename project metadata assembly name to target name
Aug 8, 2026
0ecf63b
Pin Azure Functions Core Tools in test workflow
Aug 8, 2026
3146493
Revert Azure Functions Core Tools workflow pin
adamint Aug 8, 2026
96873cd
Fail closed for stale workspace resource commands
Aug 8, 2026
80cd3d5
Avoid guessed target names for multitargeted refs
Aug 8, 2026
d9007fa
Add UNC dashboard telemetry redaction coverage
Aug 8, 2026
13fe431
Make project target name probe tests non-vacuous
adamint Aug 9, 2026
eb0766d
Let the project target-name probe degrade instead of aborting metadat…
adamint Aug 9, 2026
0a1dc3d
Pin the fatal probe contract and record what the attach fallback cann…
adamint Aug 9, 2026
2a757e7
Explain an AppHost build failure caused by the target name probe
adamint Aug 9, 2026
3ad7738
Take the debugger target name from the reference build instead of pro…
adamint Aug 10, 2026
7179a6d
Take the debugger target name from the reference build instead of pro…
adamint Aug 10, 2026
6488463
Probe per-reference when project resources mix output routing
adamint Aug 10, 2026
5b4b76f
Cover a project resource reached through a symbolic link
adamint Aug 10, 2026
303e288
Keep debugger target-name collection inside what the build already asked
Aug 10, 2026
3eadb11
Redact host-only forward-slash UNC values in dashboard telemetry
Aug 10, 2026
db2c0db
Pin the private-location and credential forms telemetry must clean
Aug 10, 2026
830c8f2
Do not offer attach for an Executable launch profile
adamint Aug 10, 2026
f84aa82
Use the launch profile the AppHost reported, not the file default
adamint Aug 10, 2026
ae70e33
Fail closed when the reported launch profile cannot be read
adamint Aug 10, 2026
ddf77ee
Record why the probe follows reference metadata and skips parented pr…
adamint Aug 10, 2026
e06646a
Record why app host path lookup does not re-resolve
adamint Aug 10, 2026
9b8a4e1
Fix stale AppHost path resource actions
Aug 10, 2026
9eeb2e5
Fix resolved AppHost target path TFM probe
Aug 10, 2026
b05e5c6
Revert AppHost target probe change
Aug 10, 2026
27914c1
Merge branch 'main' into adamint/issue18538-vscode-debug-shortcut
adamint Aug 10, 2026
6f72f5b
Attach to the resource process directly
Aug 10, 2026
099175f
Fix attach target process selection
Aug 10, 2026
f5d05a0
Scope resource attach refresh to its AppHost
Aug 10, 2026
d6fee98
Merge upstream/main into attach debugger branch
Aug 14, 2026
17ec4de
Surface explicit launch metadata for debugger attach
Aug 14, 2026
a69ed2b
Cover debugger attach package surface
Aug 14, 2026
6177728
Use launched configuration for debugger attach
Aug 14, 2026
80253ab
Reject ambiguous framework-dependent debugger attach
Aug 14, 2026
b06d0d4
feat(extension): add resource debug core
Aug 15, 2026
51efe08
fix(extension): harden resource debugger attach
Aug 15, 2026
d574d2b
fix(extension): complete resource debugger hardening
Aug 15, 2026
c307bf5
fix(extension): resolve resource debugger blockers
Aug 15, 2026
bf3e42f
feat(extension): attach debugger to Go resources
Aug 15, 2026
83bbecb
fix: resolve debugger child processes
Aug 15, 2026
207ec7f
fix(extension): harden resource debugger child discovery
Aug 15, 2026
8008578
Merge microsoft/main into copilot/pr-18602-resource-debug
Aug 15, 2026
5705d18
test(extension): cover process discovery command runner
Aug 15, 2026
7540c14
test(extension): cover spaced apphost identity
Aug 15, 2026
1b7de08
fix(extension): harden child process discovery
Aug 15, 2026
fed2a2f
fix(extension): read Linux child details from procfs
Aug 15, 2026
ee0336e
fix(extension): normalize Linux procfs apphost identity
Aug 15, 2026
5c64971
fix(extension): resolve deleted apphost identity
Aug 15, 2026
068bebe
feat(extension): add resource debug telemetry
Aug 15, 2026
6da3832
fix(extension): harden resource debug telemetry
Aug 15, 2026
7fb83e3
Merge remote-tracking branch 'upstream/main' into copilot/pr-18602-re…
Aug 15, 2026
afbe05a
fix(extension): finalize resource debugger tree action
Aug 15, 2026
67fee7a
fix(extension): scope resource tree IDs to AppHost process
Aug 15, 2026
fd3a6de
feat(extension): add resource debug language model tool
Aug 15, 2026
2fcb730
fix(extension): harden resource debug tool
Aug 15, 2026
fb2c709
fix(extension): address resource debug review findings
Aug 15, 2026
5347999
Merge upstream/main into copilot/pr-18602-resource-debug
Aug 15, 2026
07c0d58
fix(extension): document resource debug telemetry strategies
Aug 15, 2026
98abae3
test(extension): cover resource debug LM tool E2E
Aug 15, 2026
7ea01d0
test(extension): accept resource debug cancellation confirmation
Aug 15, 2026
2285e3e
fix(extension): harden resource debug attachment
Aug 15, 2026
03c927b
Fix extension E2E error reporting
Aug 15, 2026
ce3cc0b
Add safe dotnet launch metadata
Aug 15, 2026
d981a6f
Strengthen launch metadata tests
Aug 15, 2026
deb220c
Harden dotnet resource attach identity
Aug 15, 2026
9388495
Fix dotnet attach identity edge cases
Aug 15, 2026
4e83ee1
Reduce resource attach process queries
Aug 15, 2026
c7495cd
Fix process identity verification gaps
Aug 15, 2026
6100410
Fix resource debug compatibility boundaries
Aug 15, 2026
db5ac04
Merge latest main into resource debugging branch
Aug 15, 2026
88e17a5
Simplify listed process identity tracking
Aug 15, 2026
9931b98
Document name-only process identity trust
Aug 15, 2026
754126c
Consolidate resource debug regression tests
Aug 15, 2026
0d80082
Tighten consolidated dotnet tests
Aug 15, 2026
517879b
Fix resource debug cancellation E2E race
Aug 15, 2026
a0cba5f
Merge microsoft/main into issue18538-vscode-debug-shortcut
adamint Aug 19, 2026
c761ec3
Forward already-redacted runAspireCli diagnostics through the E2E bridge
adamint Aug 19, 2026
456b321
Merge upstream main into issue18538-vscode-debug-shortcut
adamint Aug 31, 2026
ba603c1
Address resource debugger review findings
adamint Sep 1, 2026
a300ea2
Isolate packaged resource attach coverage
adamint Sep 1, 2026
c445020
Skip negative debugger cases before setup
adamint Sep 1, 2026
7433b9b
Merge upstream/main into issue18538-vscode-debug-shortcut
adamint Sep 1, 2026
413c554
Harden resource debugger metadata and E2E coverage
adamint Sep 1, 2026
76a1af1
Enable packaged Go attach in Linux E2E
adamint Sep 2, 2026
18ee65a
Build Go E2E fixture for debugger attach
adamint Sep 2, 2026
c0ba847
Update Delve for Go 1.26 E2E
adamint Sep 2, 2026
711ff24
Trigger CI for Delve compatibility fix
adamint Sep 2, 2026
eafd227
Merge current main into issue18538-vscode-debug-shortcut
adamint Sep 2, 2026
a5567bb
Improve packaged attach E2E diagnostics
adamint Sep 2, 2026
29ce733
Merge current main into issue18538-vscode-debug-shortcut
adamint Sep 2, 2026
adf031f
Run Go attach E2E with debug symbols
adamint Sep 2, 2026
5214f37
Fix resource attach safety regressions
adamint Sep 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions .github/workflows/extension-e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,15 @@ jobs:
archivePattern: aspire-cli-win-x64*.zip
cliBinary: aspire.exe
useXvfb: false
- name: Linux
shardName: resource-debug-tools
spec: out/test-e2e/test-e2e/resourceDebugTools.e2e.test.js
runner: ubuntu-latest
rid: linux-x64
archivePattern: aspire-cli-linux-x64*.tar.gz
cliBinary: aspire
useXvfb: true
installResourceDebug: true
- name: Linux
shardName: java-apphost
spec: out/test-e2e/test-e2e/javaAppHost.e2e.test.js
Expand Down Expand Up @@ -346,6 +355,14 @@ jobs:
archivePattern: aspire-cli-linux-x64*.tar.gz
cliBinary: aspire
useXvfb: true
- name: Windows
shardName: resource-debug-tools
spec: out/test-e2e/test-e2e/resourceDebugTools.e2e.test.js
runner: windows-latest
rid: win-x64
archivePattern: aspire-cli-win-x64*.zip
cliBinary: aspire.exe
useXvfb: false
- name: Windows
shardName: cli-path-rejection
spec: out/test-e2e/test-e2e/cliPathRejectionNotification.e2e.test.js
Expand Down Expand Up @@ -554,6 +571,49 @@ jobs:
echo 'FUNCTIONS_CORE_TOOLS_TELEMETRY_OPTOUT=1'
} >> "$GITHUB_ENV"

- name: Install resource debug E2E prerequisites
if: ${{ matrix.installResourceDebug }}
shell: bash
run: |
set -euo pipefail

# Ubuntu's Yama default allows ptrace only when the debugger is an ancestor of the target.
# DCP launches the Go resource independently from Delve, so packaged attach needs this test-only policy.
sudo sysctl --write kernel.yama.ptrace_scope=0
test "$(cat /proc/sys/kernel/yama/ptrace_scope)" = "0"

debugger_bin="$RUNNER_TEMP/resource-debug-bin"
mkdir -p "$debugger_bin"
GOBIN="$debugger_bin" GOTOOLCHAIN=local go install github.com/go-delve/delve/cmd/dlv@v1.25.2
echo "$debugger_bin" >> "$GITHUB_PATH"
export PATH="$debugger_bin:$PATH"
dlv version

dotnet_runtime_vsix="$RUNNER_TEMP/vscode-dotnet-runtime-3.1.0.vsix"
curl --fail --location --compressed --retry 3 --retry-all-errors \
--output "$dotnet_runtime_vsix" \
'https://marketplace.visualstudio.com/_apis/public/gallery/publishers/ms-dotnettools/vsextensions/vscode-dotnet-runtime/3.1.0/vspackage'
echo '8e675ffe5f3674430d63e28d2dc05ab40f36c8494e9549e79d3995d721b13f5a '"$dotnet_runtime_vsix" | sha256sum --check -

csharp_vsix="$RUNNER_TEMP/vscode-csharp-2.148.23-linux-x64.vsix"
curl --fail --location --compressed --retry 3 --retry-all-errors \
--output "$csharp_vsix" \
'https://marketplace.visualstudio.com/_apis/public/gallery/publishers/ms-dotnettools/vsextensions/csharp/2.148.23/vspackage?targetPlatform=linux-x64'
echo '18b503e614a979212762683b35a4fa1806688ba773d5fe93bf62c9f9346db23f '"$csharp_vsix" | sha256sum --check -

go_vsix="$RUNNER_TEMP/vscode-go-0.56.0.vsix"
curl --fail --location --compressed --retry 3 --retry-all-errors \
--output "$go_vsix" \
'https://marketplace.visualstudio.com/_apis/public/gallery/publishers/golang/vsextensions/Go/0.56.0/vspackage'
echo '9f5959fb17ba0a8dbd804387ddda50975fcaa9dd5267aa33eaaa89912072aacb '"$go_vsix" | sha256sum --check -

{
echo 'ASPIRE_EXTENSION_E2E_ENABLE_RESOURCE_DEBUG=true'
echo "ASPIRE_EXTENSION_E2E_DOTNET_RUNTIME_VSIX=$dotnet_runtime_vsix"
echo "ASPIRE_EXTENSION_E2E_CSHARP_VSIX=$csharp_vsix"
echo "ASPIRE_EXTENSION_E2E_GO_VSIX=$go_vsix"
} >> "$GITHUB_ENV"

- name: Set up the JDK for the Java E2E specs
if: ${{ matrix.installJava }}
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
Expand Down
2 changes: 1 addition & 1 deletion docs/specs/cli-output-formats.md
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ If discovery finds no AppHost candidates, the stream emits no lines. The stream
| `relationships` | Related resources as `{ "type": "...", "resourceName": "..." }`. |
| `urls` | Endpoint objects with `name`, `displayName`, `url`, and `isInternal`. |
| `volumes` | Volume objects with `source`, `target`, `mountType`, and `isReadOnly`. |
| `properties` | Resource properties keyed by property name. |
| `properties` | Resource properties keyed by property name. Common debug-related keys include `project.path`, `project.launchProfile`, `project.launchCommand`, `project.configuration`, `project.targetFramework`, and `resource.launchConfigurationType`. For current AppHosts, `project.launchCommand` is `run`, `watch`, or `null` when a dotnet project launch command cannot be classified. |
| `environment` | Environment variables keyed by variable name. |
| `healthReports` | Health report objects keyed by report name. |
| `commands` | Resource command metadata keyed by command name. |
Expand Down
4 changes: 4 additions & 0 deletions extension/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@

<!-- aspire-ext-changelog-done from=689b3c3226482b5d84d80e6d8c7ea8408c704c1f to=1410c1a7fc2e0dce9539f234e2464ca3e20cd9bf base=1.20.0 -->

### Features

- Add an **Attach debugger** action for running .NET and Go resources in the Aspire pane, including installation guidance when the required C# or Go debugger extension is missing ([#18602](https://github.com/microsoft/aspire/pull/18602)).

### Fixes

- Prevent the Aspire view from stealing sidebar focus and reappearing in the Activity Bar when the window is reloaded ([#19746](https://github.com/microsoft/aspire/issues/19746), [#19754](https://github.com/microsoft/aspire/pull/19754)).
Expand Down
5 changes: 5 additions & 0 deletions extension/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ An **AppHost** defines your app in code: services, containers, databases, front

- **Run your apps:** Start, debug, and stop an Aspire application, or use the available start, stop, and restart actions for individual resources, from the Aspire view.
- **Debug across your stack:** Aspire debug sessions support C#, JavaScript, Python, Go, Java, and Rust application resources when the corresponding debugger is available. Java and Rust debugging require Aspire 13.6 or later.
- **Attach to running resources:** Attach to .NET and Go resources from the Aspire view. The action remains available when a required debugger extension is missing so VS Code can show installation guidance.
- **See live health and analytics:** Open the Aspire dashboard for resource health, endpoints, console logs, structured logs, distributed traces, and metrics.
- **Monitor without leaving VS Code:** See resource health summaries and quick actions beside resource definitions in your AppHost.
- **Move toward production.** Deploy, publish artifacts, and run pipeline steps using the Aspire view.
Expand All @@ -28,6 +29,10 @@ An **AppHost** defines your app in code: services, containers, databases, front

Aspire can bring together C#, TypeScript and JavaScript, Python, Go, Java, containers, databases, cloud resources, and more. Browse the [integration gallery](https://aspire.dev/integrations/gallery/) to find the pieces your app needs.

## Chat tools for agents

The extension contributes `aspire_apphost_start`, `aspire_apphost_stop`, and `aspire_resource_debug` language model tools. They only accept AppHosts and resources already discovered in a trusted workspace, reject arbitrary or absolute paths, and ask the user to confirm before acting. Resource debugging attaches to a running resource; it does not start or restart one.

## Learn more

- [Aspire extension for Visual Studio Code](https://aspire.dev/get-started/aspire-vscode-extension/)
Expand Down
69 changes: 69 additions & 0 deletions extension/loc/xlf/aspire-vscode.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading