Microsoft's .NET Aspire 13.5 release brings a visual refresh to the dashboard and aspire.dev homepage, plus a slate of quality-of-life features. The Interaction Service now supports file uploads and progress dialogs for resource commands, and a new WithTerminal() API embeds live interactive terminal sessions directly in the dashboard. Deployment modeling gets richer too: Kubernetes environments can define persistent volumes bound to workloads, and Azure resources can be referenced across subscriptions, resource groups, and tenants via new AsExisting* methods. The Aspire CLI is now distributed through Homebrew, WinGet, npm, Nix, mise, and NuGet in addition to existing install paths.

6m read timeFrom devblogs.microsoft.com
Post cover image
Table of contents
A fresh view of Aspire Copy linkYour AppHost can ask for files Copy linkWe put a terminal in the dashboard Copy linkMore ways to describe your production deployment Copy linkEasier than ever to get started with Homebrew, WinGet, and more Copy linkTry Aspire 13.5 Copy link

Questions this post answers

How do I add a persistent volume to a Kubernetes environment in Aspire 13.5?

Use AddKubernetesEnvironment to create the environment, then call AddPersistentVolume with WithStorageClass, WithCapacity, and WithAccessMode to configure it, and WithPersistentVolume on a container to bind it. Aspire emits the persistent volume claim and renders the workload as a StatefulSet. This is a preview API in Aspire 13.5, tracked under diagnostic ASPIRECOMPUTE002. Track preview APIs like Kubernetes persistent volumes in Aspire as they stabilize, via daily.dev.

How can I reference an existing Azure resource in a different subscription or tenant from my Aspire AppHost?

Aspire 13.5 adds AsExistingInResourceGroup, AsExistingInSubscription, and AsExistingInTenant methods, along with run-mode and publish-mode variants, so a resource like AddAzureServiceBus can point at infrastructure owned by another team or outside its own resource group. Names and scopes can be literal values or Aspire parameters, keeping environment details out of the AppHost source. Developers wiring shared Azure infrastructure into their AppHost can follow this pattern via daily.dev.

How do I get an interactive terminal for a resource inside the Aspire dashboard?

Add WithTerminal() to a resource definition and it gains an interactive terminal session inside the Aspire dashboard, letting you type into it, switch between replicas, and toggle back to console logs without stopping the session. Multiple viewers can attach simultaneously, and matching aspire terminal CLI commands let you list and attach to sessions from a shell. This is an experimental preview feature in Aspire 13.5. Anyone running REPLs or interactive tools inside distributed apps can follow this via daily.dev.

7.7K Impressions