Skip to content

[release/13.5] Support local tool manifests for AppHost DNX invocation - #19315

Merged
Jose Perez Rodriguez (joperezr) merged 1 commit into
release/13.5from
backport/pr-19310-to-release/13.5
Aug 13, 2026
Merged

[release/13.5] Support local tool manifests for AppHost DNX invocation#19315
Jose Perez Rodriguez (joperezr) merged 1 commit into
release/13.5from
backport/pr-19310-to-release/13.5

Conversation

@aspire-repo-bot

@aspire-repo-bot aspire-repo-bot Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Backport of #19310 to release/13.5

/cc Damian Edwards (@DamianEdwards)

Customer Impact

Adds support for C# AppHost users to control the Aspire CLI version acquired/used by DNX via their dotnet tools manifest file.

Testing

Added tests covering the scenario.

Risk

Low.

Regression?

No, new feature in 13.5

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 5ef93c6b-3a80-4def-bd41-ca462a3d26b0
Copilot AI balanced review requested due to automatic review settings August 12, 2026 22:58
@github-actions

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 19315

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 19315"

@github-actions github-actions Bot added the area-app-model Issues pertaining to the APIs in Aspire.Hosting, e.g. DistributedApplication label Aug 12, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot could not run the full agentic suite for this review because it was automatically requested on a bot-authored pull request. Request a review from Copilot under Reviewers to retry with the full agentic suite. Improved support for bot-authored pull requests is coming soon.

Adds support for a new AspireCliInvocationMode=DnxPinned mode while adjusting DNX invocation behavior so Dnx can honor tool manifests (unversioned) and DnxPinned stays paired to the AppHost SDK.

Changes:

  • Introduces DnxPinned as an explicit invocation mode and treats it as a DNX-forced mode in the resolver task.
  • Updates MSBuild targets to choose versioned vs unversioned DNX package reference based on invocation mode (Dnx vs others).
  • Expands tests and updates docs to cover the new invocation mode and revised behavior.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.

File Description
tests/Aspire.Hosting.Sdk.Tests/AppHostSdkTargetsTests.cs Adds coverage for manifest-aware (Dnx) vs pinned (DnxPinned) DNX behaviors and updates helpers accordingly.
src/Aspire.Hosting.Tasks/ResolveAspireCliInvocation.cs Treats DnxPinned as a DNX-forced invocation mode.
src/Aspire.Hosting.AppHost/build/Aspire.Hosting.AppHost.in.targets Switches DNX package reference between versioned and unversioned based on invocation mode; updates error message to include the configured mode.
docs/list-of-diagnostics.md Updates ASPIRE011 description and documents the three invocation modes (Path, Dnx, DnxPinned).

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/Aspire.Hosting.AppHost/build/Aspire.Hosting.AppHost.in.targets
Comment thread src/Aspire.Hosting.AppHost/build/Aspire.Hosting.AppHost.in.targets
Comment thread src/Aspire.Hosting.Tasks/ResolveAspireCliInvocation.cs
Comment thread docs/list-of-diagnostics.md
@github-actions

Copy link
Copy Markdown
Contributor

Tests selector (audit mode)

The full test matrix and all jobs still run in audit mode. The tests and jobs below are what selective CI would run under enforcement.

43 / 100 test projects · 2 jobs, from 3 changed files.

Selected test projects (43 / 100)

Aspire.EndToEnd.Tests, Aspire.Hosting.Analyzers.Tests, Aspire.Hosting.Azure.Kubernetes.Tests, Aspire.Hosting.Azure.Kusto.Tests, Aspire.Hosting.Azure.Tests, Aspire.Hosting.Blazor.Tests, Aspire.Hosting.Browsers.Tests, Aspire.Hosting.Containers.Tests, Aspire.Hosting.DevTunnels.Tests, Aspire.Hosting.Docker.Tests, Aspire.Hosting.Dotnet.Tests, Aspire.Hosting.DotnetTool.Tests, Aspire.Hosting.EntityFrameworkCore.Tests, Aspire.Hosting.Foundry.Tests, Aspire.Hosting.Garnet.Tests, Aspire.Hosting.GitHub.Models.Tests, Aspire.Hosting.Go.Tests, Aspire.Hosting.JavaScript.Tests, Aspire.Hosting.Kafka.Tests, Aspire.Hosting.Keycloak.Tests, Aspire.Hosting.Kubernetes.Tests, Aspire.Hosting.Maui.Tests, Aspire.Hosting.Milvus.Tests, Aspire.Hosting.MongoDB.Tests, Aspire.Hosting.MySql.Tests, Aspire.Hosting.Nats.Tests, Aspire.Hosting.OpenAI.Tests, Aspire.Hosting.Oracle.Tests, Aspire.Hosting.Orleans.Tests, Aspire.Hosting.PostgreSQL.Tests, Aspire.Hosting.Python.Tests, Aspire.Hosting.Qdrant.Tests, Aspire.Hosting.RabbitMQ.Tests, Aspire.Hosting.Radius.Tests, Aspire.Hosting.Redis.Tests, Aspire.Hosting.Sdk.Tests, Aspire.Hosting.Seq.Tests, Aspire.Hosting.SqlServer.Tests, Aspire.Hosting.Testing.Tests, Aspire.Hosting.Tests, Aspire.Hosting.Valkey.Tests, Aspire.Hosting.Yarp.Tests, Aspire.Playground.Tests

Selected jobs (2)

extension-e2e, typescript-api-compat


How these were chosen — grouped by what changed

⚠️ 41 of the 43 selected test projects come from a single change — src/Aspire.Hosting.AppHost/build/Aspire.Hosting.AppHost.in.targets.

🔧 src/Aspire.Hosting.AppHost/build/Aspire.Hosting.AppHost.in.targets (changed source)
41 via the project graph

show 41

Aspire.Hosting.Analyzers.Tests, Aspire.Hosting.Azure.Kubernetes.Tests, Aspire.Hosting.Azure.Kusto.Tests, Aspire.Hosting.Azure.Tests, Aspire.Hosting.Blazor.Tests, Aspire.Hosting.Browsers.Tests, Aspire.Hosting.Containers.Tests, Aspire.Hosting.DevTunnels.Tests, Aspire.Hosting.Docker.Tests, Aspire.Hosting.Dotnet.Tests, Aspire.Hosting.DotnetTool.Tests, Aspire.Hosting.EntityFrameworkCore.Tests, Aspire.Hosting.Foundry.Tests, Aspire.Hosting.Garnet.Tests, Aspire.Hosting.GitHub.Models.Tests, Aspire.Hosting.Go.Tests, Aspire.Hosting.JavaScript.Tests, Aspire.Hosting.Kafka.Tests, Aspire.Hosting.Keycloak.Tests, Aspire.Hosting.Kubernetes.Tests, Aspire.Hosting.Maui.Tests, Aspire.Hosting.Milvus.Tests, Aspire.Hosting.MongoDB.Tests, Aspire.Hosting.MySql.Tests, Aspire.Hosting.Nats.Tests, Aspire.Hosting.OpenAI.Tests, Aspire.Hosting.Oracle.Tests, Aspire.Hosting.Orleans.Tests, Aspire.Hosting.PostgreSQL.Tests, Aspire.Hosting.Python.Tests, Aspire.Hosting.Qdrant.Tests, Aspire.Hosting.RabbitMQ.Tests, Aspire.Hosting.Radius.Tests, Aspire.Hosting.Redis.Tests, Aspire.Hosting.Seq.Tests, Aspire.Hosting.SqlServer.Tests, Aspire.Hosting.Testing.Tests, Aspire.Hosting.Tests, Aspire.Hosting.Valkey.Tests, Aspire.Hosting.Yarp.Tests, Aspire.Playground.Tests

📦 affected project Aspire.Hosting.AppHost
1 test: Aspire.EndToEnd.Tests

🧪 tests/Aspire.Hosting.Sdk.Tests/AppHostSdkTargetsTests.cs (changed test)
1 directly: Aspire.Hosting.Sdk.Tests

Job reasons

Job Triggered by
extension-e2e src/Aspire.Hosting.AppHost/build/Aspire.Hosting.AppHost.in.targets, src/Aspire.Hosting.Tasks/ResolveAspireCliInvocation.cs
• affected project Aspire.Hosting.TestUtilities
typescript-api-compat affected project Aspire.Hosting.TestUtilities

Selection computed for commit e536194.

@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@joperezr
Jose Perez Rodriguez (joperezr) merged commit 47e9191 into release/13.5 Aug 13, 2026
678 of 681 checks passed
@joperezr
Jose Perez Rodriguez (joperezr) deleted the backport/pr-19310-to-release/13.5 branch August 13, 2026 17:33
@microsoft-github-policy-service microsoft-github-policy-service Bot added this to the 13.5 milestone Aug 13, 2026
@aspire-repo-bot

Copy link
Copy Markdown
Contributor Author

✅ No documentation update needed.

Step 5 branch: excluded → base_branch_is_release, head_branch_is_backport, title_release_prefix, body_backport_marker

This PR is a backport (title [release/13.5] ..., body contains Backport of #19310 to release/13.5, base branch is release/13.5) of forward PR #19310. Per workflow policy, backport PRs are excluded from docs generation since their documentation is authored against the original forward PR on the default branch; drafting a second docs PR here would be duplicate noise.

Triggered signals (1): diagnostic_documentation_changed (evidence: docs/list-of-diagnostics.md modified — internal diagnostic ID doc, not user docs). This signal does not override the exclusion.

No docs PR created. Recommend checking whether a docs PR was already drafted for the original PR #19310.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-app-model Issues pertaining to the APIs in Aspire.Hosting, e.g. DistributedApplication

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants