Aspire 9.5 is here with exciting new features and improvements that enhance the developer experience for building distributed applications.
For the complete list of changes and technical details, visit the official Aspire 9.5 release notes.
Let’s dive into some key highlights of this release.
Upgrading to Aspire 9.5
You can install the Aspire CLI at the command-line with these commands:
# Bash curl -sSL https://aspire.dev/install.sh | bash # PowerShell iex "& { $(irm https://aspire.dev/install.ps1) }"
One of the most exciting additions in Aspire 9.5 is the new aspire update
command (in preview), which simplifies the upgrade process significantly. This automatically detects and updates your AppHost SDK and Aspire integrations.
This preview command:
- Updates your SDK and AppHost packages automatically
- Validates package compatibility before applying changes
- Supports channel awareness – choose stable, daily, or custom builds
- Asks for confirmation before making changes
Preview Feature
Theaspire update
command is in preview and may change before general availability. We recommend using version control and inspecting changes after running it. Share your feedback about this feature on GitHub!
Updating from Aspire 8
If you’re still using the .NET Aspire workload (versions 8.x), follow the upgrade guide to Aspire 9 to upgrade to 9.5.Enhanced CLI Experience
Aspire 9.5 brings significant improvements to the command-line experience, making it more powerful and user-friendly for developers.
Single-File AppHost (Preview)
One of the most revolutionary features in Aspire 9.5 is the file-based AppHost support – a preview feature that introduces support for .NET 10’s new file-based apps. This means you can now create an Aspire AppHost with just one file and no project file needed! New and existing applications built with an AppHost project will continue to be supported.
What is File-Based AppHost?
The traditional Aspire AppHost requires a .csproj
file and multiple files to get started. With file-based AppHost, you can define your entire distributed application in a single apphost.cs
file. This builds on the work we’re delivering with .NET 10 that enables single-file applications.
This feature is currently behind a feature flag and requires .NET SDK 10.0.100 RC1 or later:
# Enable file-based AppHost support
aspire config set features.singlefileAppHostEnabled true
You can then use the aspire new
command to create a new, blank file-based apphost with this content:
#:sdk Aspire.AppHost.Sdk@9.5.0
var builder = DistributedApplication.CreateBuilder(args);
builder.Build().Run();
Additionally, an apphost.run.json
file will be written with launch profiles for your favorite code-editor to use.
Adding Resources and Projects to Your File-Based AppHost
Start adding integrations with aspire add
and add your other projects with single line directives in your apphost.cs
file.
#:sdk Aspire.AppHost.Sdk@9.5.0
#:project MyBlazorApp
var builder = DistributedApplication.CreateBuilder(args);
// Add an ASP.NET Core project
builder.AddProject<Projects.MyBlazorApp>("web");
builder.Build().Run();
We can then add Redis to our growing web application by executing the command:
aspire add Aspire.Hosting.Redis
Then adding the appropriate AddRedis
statement and WithReference
methods in the AppHost.cs
file:
#:sdk Aspire.AppHost.Sdk@9.5.0
#:package Aspire.Hosting.Redis@9.4.2
#:project MyBlazorApp
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache");
builder.AddProject<Projects.MyBlazorApp>("web")
.WithReference(cache)
.WaitForStart(cache);
builder.Build().Run();
This approach reduces the complexity of the Aspire configuration, especially for folks outside of the .NET ecosystem, without comprimising the full power of .NET. New users to Aspire can get started in seconds and can augment their existing applications with 1 command and 1 file. Learn more about file-based applications in our announcement blog post.
Dashboard Enhancements
The Aspire Dashboard has a handful of usability and functionality improvements in version 9.5, making it even more powerful for monitoring and debugging distributed applications.
Multi-Resource Console Logs
A long-awaited addition is the new “All” option in console logs that streams logs from every running resource simultaneously with color-coded prefixes so that you can see the various services that generated the log entries.
This unified view makes it much easier to understand the interactions between different services in your application.
New LLM Insights
Aspire 9.5 introduces the GenAI visualizer, which collates, summarizes, and visualizes LLM-centric calls within your app. When the dashboard detects AI telemetry, a sparkle icon (✨) is presented that will allow you to explore the interaction with the LLM. You’ll be able to see the prompts, responses, and even images returned from the LLM in the visualizer.
The GenAI telemetry conventions are evolving rapidly and we will update this feature to stay compatible.
New and Updated Integrations
Aspire 9.5 introduces several new integrations and significantly enhances existing ones, making it easier to work with AI services, cloud resources, and development tools.
AI Hosting Integrations
The new AddOpenAI
integration provides first-class support for modeling OpenAI endpoints and their associated models within your Aspire application.
var apiKey = builder.AddParameter("openai-api-key", secret: true);
var openai = builder.AddOpenAI("openai")
.WithApiKey(apiKey)
.WithEndpoint("https://api.openai.com");
var chatModel = openai.AddModel("chat", "gpt-4o-mini");
Additionally, we are introducing support for a strongly-typed catalog for GitHub and Azure AI Foundry models. This gives you intellisense support for all the up-to-date models that you can use.
var gpt4 = builder.AddAzureAIFoundry("foundryresource").AddDeployment("gpt4", AIFoundryModel.OpenAI.Gpt4); var mistral = builder.AddGitHubModel("mistral", GitHubModel.MistralAI.MistralLarge2411);
Dev Tunnels Hosting Integration
Aspire 9.5 introduces first-class support for Azure Dev Tunnels.
As a developer, this allows you to securely share your application running on your workstation with the outside network. You can test webhooks from public services, quickly get feedback from customers, and even test interactions from a mobile device using DevTunnels
var builder = DistributedApplication.CreateBuilder(args);
// Add a basic Dev Tunnel resource (default: private access)
var tunnel = builder.AddDevTunnel("dev-tunnel")
.WithAnonymousAccess();
// Add your web application
var webApp = builder.AddProject<Projects.WebApp>("webapp");
// Connect the tunnel to the web application endpoint
tunnel.WithReference(webApp.GetEndpoint("http"));
builder.Build().Run();
The Dev Tunnels integration automatically handles Azure authentication, tunnel lifecycle management, and provides public or private URLs (depending on configuration) to connected resources, making it easy to expose local development services securely to external consumers. Dev Tunnels also improves support for mobile dev, such as .NET MAUI, making it easy to launch both your backend and mobile app at once without complex dev-time config.
YARP Static Files Support
Aspire 9.5 adds static file serving capabilities to the YARP integration, enabling direct static file serving from YARP so your app can deliver HTML, CSS, JavaScript, and other assets efficiently. You can choose flexible source options, such as bind mounting local directories or utilizing Docker multi-stage builds, to suit your workflow. The static file support works reliably in both development and production environments, streamlining deployment and day-to-day operations.
The following example demonstrates how YARP can be configured to serve static files from a frontend ‘dist’ directory while also proxying API requests to a backend service. This approach streamlines resource management and routing within distributed applications.
var backendApi = builder.AddProject<Projects.Api>("api");
// YARP serves static files AND proxies API requests
var gateway = builder.AddYarp("app-gateway")
.WithStaticFiles("./frontend/dist")
.WithConfiguration(yarp =>
{
// API routes
yarp.AddRoute("/api/{**catch-all}", backendApi)
.WithTransformPathRemovePrefix("/api");
// Static files are served for all other routes
});
Cross-Process Call Stacks in Visual Studio 2026
You might have heard that the Visual Studio team officially released the first previews of Visual Studio 2026. Visual Studio’s Call Stack Window can now extend Aspire apps to show call stack frames from other debugged processes running on Windows. This feature is a game-changer for deep-dive diagnostics on distributed systems. Issues are found faster by reconstructing the full logical call path, even when the request hops between services. With deeper visibility into async operations, developers can debug smarter, not harder. Currently available only on Windows and Visual Studio 2026 Insiders.
Get Started Now
Ready to try Aspire 9.5? Install the new CLI and try the aspire update
command on your projects, then let us know what you think!
- GitHub: Collaborate with the team on GitHub
- Discord: Join the community on Discord to chat with the team and other developers
- Documentation: Explore the comprehensive documentation for detailed guides and tutorials.
For the complete list of changes and technical details, visit the official Aspire 9.5 release notes.
This should do the work, or am I missing something?