Skip to content

Add .NET 11 support to project templates#18849

Merged
DamianEdwards merged 2 commits into
mainfrom
damianedwards-plan-dotnet-11-templates
Jul 23, 2026
Merged

Add .NET 11 support to project templates#18849
DamianEdwards merged 2 commits into
mainfrom
damianedwards-plan-dotnet-11-templates

Conversation

@DamianEdwards

Copy link
Copy Markdown
Member

Description

Adds .NET 11 Preview 6 as an opt-in target framework for Aspire project templates so users can start evaluating Aspire applications on .NET 11 while the templates continue to default to .NET 10.

This updates all nine framework-aware templates, adds the .NET 11 Microsoft.AspNetCore.OpenApi package substitution, and provisions dedicated .NET 8, 9, 10, and 11 SDK layouts for template compatibility testing. The combined test layout now uses the .NET 11 SDK with all supported runtimes.

The Aspire .NET starter also adopts applicable changes from the ASP.NET Core .NET 11 Preview 6 Blazor template:

  • Uses the new <BasePath /> component when targeting .NET 11.
  • Persists the error page request ID on .NET 10 and later.
  • Replaces the inline navigation click handler with a collocated JavaScript module.

The existing .NET 10 template default and repository global.json SDK pin remain unchanged.

User-facing usage

Create an Aspire starter application targeting .NET 11:

dotnet new aspire-starter -f net11.0

Validation included provisioning all template SDK layouts, packing all shipping packages, and running the standalone, support-project, and .dev.localhost template test matrices across the supported SDK/TFM combinations.

Fixes #13957

Checklist

  • Is this feature complete?
    • Yes. Ready to ship.
    • No. Follow-up changes expected.
  • Are you including unit tests for the changes and scenario tests if relevant?
    • Yes
    • No
  • Did you add public API?
    • Yes
      • If yes, did you have an API Review for it?
        • Yes
        • No
      • Did you add <remarks /> and <code /> elements on your triple slash comments?
        • Yes
        • No
    • No
  • Does the change make any security assumptions or guarantees?
    • Yes
      • If yes, have you done a threat model and had a security review?
        • Yes
        • No
    • No

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 9e2f03a8-cadd-4cd5-91b2-d9a8eca0a8a5
Copilot AI review requested due to automatic review settings July 21, 2026 20:14
@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 -- 18849

Or

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

@github-actions

This comment has been minimized.

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

Adds opt-in .NET 11 Preview 6 support across Aspire templates while retaining .NET 10 defaults.

Changes:

  • Adds net11.0 to nine templates and framework-specific package substitutions.
  • Updates starter Blazor content for .NET 11.
  • Expands SDK provisioning and template compatibility tests through .NET 11.

Reviewed changes

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

Show a summary per file
File Description
tests/Shared/TemplatesTesting/BuildEnvironment.cs Adds .NET 11 test environments.
tests/Shared/Aspire.Templates.Testing.targets Provisions supported SDK/runtime layouts.
tests/helix/send-to-helix-templatestests.targets Adds the .NET 11 SDK payload.
tests/Aspire.Templates.Tests/TestSdk.cs Defines explicit SDK versions.
tests/Aspire.Templates.Tests/TemplateTestsBase.cs Expands SDK/TFM test combinations.
tests/Aspire.Templates.Tests/TemplateAppFixture.cs Renames the default framework enum value.
tests/Aspire.Templates.Tests/StarterTemplateWithRedisCacheFixture_PreviousTFM.cs Updates the .NET 8 fixture.
tests/Aspire.Templates.Tests/StarterTemplateFixture_PreviousTFM.cs Updates the .NET 8 fixture.
tests/Aspire.Templates.Tests/NewUpAndBuildSupportProjectTemplatesTests.cs Maps new SDK environments.
tests/Aspire.Templates.Tests/NewUpAndBuildStandaloneTemplateTests.cs Validates generated starter content.
tests/Aspire.Templates.Tests/LocalhostTldHostnameTests.cs Tests hostname generation on .NET 10/11.
src/Aspire.ProjectTemplates/Aspire.ProjectTemplates.csproj Adds the .NET 11 OpenAPI replacement.
eng/Versions.props Defines .NET 11 Preview 6 versions.
src/Aspire.ProjectTemplates/templates/aspire-xunit/.template.config/template.json Adds net11.0.
src/Aspire.ProjectTemplates/templates/aspire-xunit/.template.config/localize/templatestrings.zh-Hant.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-xunit/.template.config/localize/templatestrings.zh-Hans.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-xunit/.template.config/localize/templatestrings.tr.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-xunit/.template.config/localize/templatestrings.ru.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-xunit/.template.config/localize/templatestrings.pt-BR.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-xunit/.template.config/localize/templatestrings.pl.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-xunit/.template.config/localize/templatestrings.ko.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-xunit/.template.config/localize/templatestrings.ja.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-xunit/.template.config/localize/templatestrings.it.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-xunit/.template.config/localize/templatestrings.fr.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-xunit/.template.config/localize/templatestrings.es.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-xunit/.template.config/localize/templatestrings.en.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-xunit/.template.config/localize/templatestrings.de.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-xunit/.template.config/localize/templatestrings.cs.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/Aspire-StarterApplication.1.Server/Aspire-StarterApplication.1.Server.csproj Selects the .NET 11 OpenAPI package.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/template.json Adds .NET 11 and localhost support.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.zh-Hant.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.zh-Hans.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.tr.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.ru.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.pt-BR.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.pl.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.ko.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.ja.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.it.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.fr.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.es.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.en.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.de.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.cs.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-starter/Aspire-StarterApplication.1.Web/Components/Pages/Error.razor Persists request IDs on .NET 10+.
src/Aspire.ProjectTemplates/templates/aspire-starter/Aspire-StarterApplication.1.Web/Components/Layout/NavMenu.razor.js Adds collocated navigation behavior.
src/Aspire.ProjectTemplates/templates/aspire-starter/Aspire-StarterApplication.1.Web/Components/Layout/NavMenu.razor Loads the navigation module.
src/Aspire.ProjectTemplates/templates/aspire-starter/Aspire-StarterApplication.1.Web/Components/App.razor Uses BasePath on .NET 11.
src/Aspire.ProjectTemplates/templates/aspire-starter/Aspire-StarterApplication.1.Web/Components/_Imports.razor Imports the .NET 11 endpoint namespace.
src/Aspire.ProjectTemplates/templates/aspire-starter/Aspire-StarterApplication.1.ApiService/Aspire-StarterApplication.1.ApiService.csproj Selects the .NET 11 OpenAPI package.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/template.json Adds .NET 11 and localhost support.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.zh-Hant.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.zh-Hans.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.tr.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.ru.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.pt-BR.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.pl.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.ko.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.ja.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.it.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.fr.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.es.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.en.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.de.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.cs.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-servicedefaults/.template.config/template.json Adds net11.0.
src/Aspire.ProjectTemplates/templates/aspire-servicedefaults/.template.config/localize/templatestrings.zh-Hant.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-servicedefaults/.template.config/localize/templatestrings.zh-Hans.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-servicedefaults/.template.config/localize/templatestrings.tr.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-servicedefaults/.template.config/localize/templatestrings.ru.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-servicedefaults/.template.config/localize/templatestrings.pt-BR.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-servicedefaults/.template.config/localize/templatestrings.pl.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-servicedefaults/.template.config/localize/templatestrings.ko.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-servicedefaults/.template.config/localize/templatestrings.ja.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-servicedefaults/.template.config/localize/templatestrings.it.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-servicedefaults/.template.config/localize/templatestrings.fr.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-servicedefaults/.template.config/localize/templatestrings.es.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-servicedefaults/.template.config/localize/templatestrings.en.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-servicedefaults/.template.config/localize/templatestrings.de.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-servicedefaults/.template.config/localize/templatestrings.cs.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-nunit/.template.config/template.json Adds net11.0.
src/Aspire.ProjectTemplates/templates/aspire-nunit/.template.config/localize/templatestrings.zh-Hant.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-nunit/.template.config/localize/templatestrings.zh-Hans.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-nunit/.template.config/localize/templatestrings.tr.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-nunit/.template.config/localize/templatestrings.ru.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-nunit/.template.config/localize/templatestrings.pt-BR.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-nunit/.template.config/localize/templatestrings.pl.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-nunit/.template.config/localize/templatestrings.ko.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-nunit/.template.config/localize/templatestrings.ja.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-nunit/.template.config/localize/templatestrings.it.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-nunit/.template.config/localize/templatestrings.fr.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-nunit/.template.config/localize/templatestrings.es.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-nunit/.template.config/localize/templatestrings.en.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-nunit/.template.config/localize/templatestrings.de.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-nunit/.template.config/localize/templatestrings.cs.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-mstest/.template.config/template.json Adds net11.0.
src/Aspire.ProjectTemplates/templates/aspire-mstest/.template.config/localize/templatestrings.zh-Hant.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-mstest/.template.config/localize/templatestrings.zh-Hans.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-mstest/.template.config/localize/templatestrings.tr.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-mstest/.template.config/localize/templatestrings.ru.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-mstest/.template.config/localize/templatestrings.pt-BR.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-mstest/.template.config/localize/templatestrings.pl.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-mstest/.template.config/localize/templatestrings.ko.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-mstest/.template.config/localize/templatestrings.ja.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-mstest/.template.config/localize/templatestrings.it.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-mstest/.template.config/localize/templatestrings.fr.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-mstest/.template.config/localize/templatestrings.es.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-mstest/.template.config/localize/templatestrings.en.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-mstest/.template.config/localize/templatestrings.de.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-mstest/.template.config/localize/templatestrings.cs.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/template.json Adds .NET 11 capability metadata.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.zh-Hant.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.zh-Hans.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.tr.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.ru.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.pt-BR.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.pl.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.ko.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.ja.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.it.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.fr.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.es.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.en.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.de.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.cs.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/template.json Adds .NET 11 and localhost support.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.zh-Hant.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.zh-Hans.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.tr.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.ru.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.pt-BR.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.pl.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.ko.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.ja.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.it.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.fr.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.es.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.en.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.de.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.cs.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/template.json Adds .NET 11 and localhost support.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.zh-Hant.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.zh-Hans.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.tr.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.ru.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.pt-BR.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.pl.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.ko.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.ja.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.it.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.fr.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.es.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.en.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.de.json Adds localized-choice metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.cs.json Adds localized-choice metadata.

Comment thread eng/Versions.props Outdated
@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.

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

Copilot-Session: 9e2f03a8-cadd-4cd5-91b2-d9a8eca0a8a5
Copilot AI review requested due to automatic review settings July 21, 2026 21:05
@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.

Runs the full test matrix + all jobs (ALL) — a rule matching 'eng/Versions.props' selects ALL


Selection computed for commit 73333af.

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

Copilot reviewed 158 out of 158 changed files in this pull request and generated no new comments.

@DamianEdwards

Copy link
Copy Markdown
Member Author

PR Testing Report

PR Information

Artifact Version Verification

  • Expected Commit: 73333af72027752959fd80291780bcf248eb538a
  • Installed CLI Version: 13.5.0-pr.18849.g73333af7
  • Artifact Workflow: https://github.com/microsoft/aspire/actions/runs/29868550061
  • Workflow Head SHA: 73333af72027752959fd80291780bcf248eb538a
  • Status: PASS - the installed PR CLI and package hive match the PR head.

Changes Analyzed

Change Categories

  • CLI behavior
  • Hosting integration behavior
  • Dashboard package assets
  • Project templates
  • Template SDK/test infrastructure
  • Client/component integrations
  • VS Code extension

Product Surface

  • Nine framework-aware template manifests add net11.0.
  • The Blazor starter adopts the .NET 11 BasePath component, persistent Error request ID state, and a collocated navigation JavaScript module.
  • The API service uses Microsoft.AspNetCore.OpenApi Preview 6 for net11.0.
  • The dashboard package carries the matching Preview 6 blazor.web.11.js.
  • Template tests provision the .NET 11 Preview 6 SDK/runtime and include it in the Helix payload.

Test Scenarios Executed

Scenario 1: Published PR Artifact Identity

Objective: Verify testing uses the packages built from the latest PR commit.

Coverage Type: Artifact integrity

Status: PASS

Results:

  • Installed the dogfood build from workflow run 29868550061.
  • The installed CLI reports 13.5.0-pr.18849.g73333af7.
  • The downloaded hive contains Aspire.ProjectTemplates.13.5.0-pr.18849.g73333af7.nupkg and matching Aspire packages.
  • The local test environment used SDK 11.0.100-preview.6.26359.118.

Scenario 2: All Nine net11.0 Templates

Objective: Instantiate every modified template from the published PR nupkg and verify generated projects build.

Coverage Type: Happy path and package validation

Status: PASS

Templates instantiated:

  1. aspire-apphost-singlefile
  2. aspire-apphost
  3. aspire
  4. aspire-mstest
  5. aspire-nunit
  6. aspire-servicedefaults
  7. aspire-starter
  8. aspire-ts-cs-starter
  9. aspire-xunit

Results:

  • All nine template commands completed successfully with -f net11.0.
  • All 13 generated .csproj files contain <TargetFramework>net11.0</TargetFramework>.
  • The eight project-based outputs built successfully with zero warnings and zero errors.
  • The single-file AppHost started successfully; its build log used SDK 11.0.100-preview.6.26359.118, and aspire describe returned an empty, valid resource model.

Scenario 3: .NET 11 Blazor Starter Runtime

Objective: Run the generated starter with the published PR CLI and verify dashboard, frontend, API, and runtime behavior.

Coverage Type: Runtime/browser smoke

Status: PASS

Results:

  • webfrontend and apiservice reached Healthy.
  • The AppHost loaded Microsoft.NETCore.App\11.0.0-preview.6.26359.118.
  • Both resource processes loaded coreclr.dll from Microsoft.NETCore.App\11.0.0-preview.6.26359.118.
  • Frontend HTTP and HTTPS endpoints returned 200 with expected content.
  • API HTTP and HTTPS /weatherforecast endpoints returned 200 with five forecast records.
  • API HTTP and HTTPS /openapi/v1.json endpoints returned 200, OpenAPI 3.2.0, and the /weatherforecast operation.
  • Rendered HTML contained the base element produced by <BasePath />.
  • The rendered import map referenced NavMenu.razor.js.
  • The fingerprinted collocated module returned 200 and contained the expected nav-scrollable click registration.

Scenario 4: Dashboard Preview 6 Asset

Objective: Verify the published dashboard package contains and serves the updated .NET 11 Blazor client asset.

Coverage Type: Packaged artifact and live HTTP delivery

Status: PASS

Results:

  • Aspire.Dashboard.Sdk.win-x64.13.5.0-pr.18849.g73333af7.nupkg contains tools/wwwroot/framework/blazor.web.11.js.
  • The packaged asset is 233,195 bytes.
  • The running dashboard returned 200 from /framework/blazor.web.11.js.
  • The served bytes exactly matched the file in the published PR package.

Observation: The Windows dogfood path hosts the dashboard in the native aspire-managed process, and its rendered page selected blazor.web.10.js. Therefore the .NET 11 asset was verified at package and live-route level rather than as the active dashboard bootstrap script. The generated AppHost, frontend, and API processes all ran on .NET 11 Preview 6.

Scenario 5: Default and Unsupported Framework Boundaries

Objective: Confirm the opt-in does not change defaults and invalid future TFMs fail safely.

Coverage Type: Boundary/unhappy path

Status: PASS

Results:

  • A starter created without -f generated four net10.0 projects.
  • The default starter retained the legacy <base href="/" /> output and did not emit <BasePath />.
  • -f net12.0 exited non-zero (127), reported an invalid choice, and did not create a usable AppHost project.

CI Infrastructure Validation

  • PR workflow: CI run 29868550061 completed successfully at the tested head SHA.
  • Artifact observable: The dogfood installer downloaded the native CLI and built NuGet artifacts from that run; package version and commit identity matched.
  • Template coverage: The run completed the standalone and support-project template test jobs on Windows and Linux, including package build and test setup.
  • Local observable: The published template nupkg generated all nine net11.0 variants, all project variants built with Preview 6, and the runtime smoke covered the generated starter.
  • Helix note: This PR changes the public Helix template payload, but no public Azure DevOps/Helix run was triggered as part of this local product validation.

Evidence

Evidence is preserved in:

C:\Users\dedward\.copilot\session-state\f1ad0d78-7823-4a75-ac76-3cf7fb4b7f13\files\pr-18849-testing

Key files:

  • artifact-identity.json
  • create-results.json
  • generated-content-audit.json
  • build-summary.json
  • starter-describe.json
  • resource-runtimes.json
  • endpoint-results.json
  • openapi-results.json
  • starter-browser-assets.json
  • dashboard-asset-comparison.json
  • default-behavior.json
  • invalid-net12-result.json
  • singlefile-net11-log-markers.json
  • ci-run.json
  • pr-state.json

Summary

Scenario Status Notes
PR artifact identity PASS Installed CLI and packages match 73333af7
Nine-template net11.0 matrix PASS Nine generated; eight project variants built; single-file variant ran
Starter runtime PASS Healthy resources; HTTP/HTTPS frontend, API, OpenAPI, and browser assets verified
Dashboard Preview 6 asset PASS Published and served asset matched byte-for-byte
Default/invalid framework behavior PASS Default remains net10.0; net12.0 rejected safely

Overall Result

PR VERIFIED

The published PR build provides working opt-in .NET 11 Preview 6 template output while preserving the .NET 10 default. No product issue was found during local testing.

@DamianEdwards
DamianEdwards marked this pull request as ready for review July 21, 2026 23:54

@adamint adamint left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Looks good, thanks!

@DamianEdwards
DamianEdwards merged commit f98b3c2 into main Jul 23, 2026
342 checks passed
@DamianEdwards
DamianEdwards deleted the damianedwards-plan-dotnet-11-templates branch July 23, 2026 22:02
@microsoft-github-policy-service microsoft-github-policy-service Bot added this to the 13.5 milestone Jul 23, 2026
@radical radical mentioned this pull request Jul 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[WebToolsE2E][Aspire] Cannot use command '-f' to create an aspire project with target net11.0

3 participants