Skip to content

[Epic] Aspire extension: next-generation Aspire support in azd #9479

Description

Summary

Create a first-party microsoft.azd.aspire extension as the next generation of Aspire support in azd.

The extension will use the Aspire CLI as the primary compatibility layer so azd can support C#, TypeScript/JavaScript, Python, and future Aspire AppHost languages without reproducing Aspire's language-specific runtime protocols.

The existing built-in C# Aspire implementation will enter maintenance mode. It will receive blocking compatibility, security, and reliability fixes, but new Aspire capabilities will be developed in the extension.

Goals

  • Introduce host: aspire as the clear public azure.yaml contract for Aspire projects.
  • Detect and initialize Aspire projects through the extension and Aspire CLI.
  • Preserve the azd workflows customers rely on: environment management, up, provision, deploy, down, pipeline configuration, hooks, output, and no-prompt automation.
  • Support App Service, Container Apps, and future deployment environments based on the AppHost model rather than azure.yaml host naming.
  • Support polyglot Aspire AppHosts according to the support level of the installed Aspire CLI.
  • Preserve backwards compatibility for existing host: containerapp plus language: dotnet projects.
  • Retire the built-in implementation only after extension parity and a safe migration path are established.

Architecture principles

  • Invoke the Aspire CLI through its documented machine-readable JSON/NDJSON interfaces.
  • Do not depend directly on Aspire's internal JSON-RPC, AppHost server, ATS, DCP, or auxiliary backchannel protocols unless they become supported public contracts.
  • Model an Aspire application as one aggregate aspire service. The extension does not need to reproduce the built-in importer's synthetic child services.
  • Keep generic orchestration, environments, hooks, pipelines, prompts, and telemetry in azd core.
  • Keep only the minimum bootstrap detection and legacy compatibility logic in core.
  • Align language support and stability claims with the Aspire CLI.

Proposed configuration

services:
  app:
    host: aspire
    project: ./apphost
infra:
  provider: aspire

language is intentionally optional because the Aspire CLI owns AppHost language discovery.

Workstreams

The linked sub-issues define the implementation phases. Each phase must leave the existing built-in implementation functional until the migration and retirement criteria are met.

Success criteria

  • New Aspire projects initialized by azd use host: aspire and the Aspire extension.
  • C#, TypeScript/JavaScript, and Python AppHosts can use standard azd workflows where supported by Aspire.
  • App Service and Container Apps deployment selection comes from the AppHost.
  • Existing Aspire projects continue working without mandatory configuration edits.
  • CI/no-prompt, telemetry, documentation, installation, and offline behavior have explicit supported contracts.
  • The built-in implementation can be removed without breaking legacy projects.

Phases

Metadata

Metadata

Labels

area/aspire.NET Aspire integrationenhancementNew feature or improvementepicLarge multi-issue initiative

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions