Skip to content

Content for .NET Aspire 9.5 #4261

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions docs/compatibility/9.4/cosmosdb-serverless-defaults.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
title: "Breaking change - Azure Cosmos DB now provisions serverless accounts by default"
description: "Learn about the breaking change in .NET Aspire 9.4 where Azure Cosmos DB resources default to serverless accounts so they can scale to zero."
ms.date: 08/14/2025
ai-usage: ai-assisted
ms.custom: https://github.com/dotnet/docs-aspire/issues/4244
---

# Azure Cosmos DB now provisions serverless accounts by default

Starting in .NET Aspire 9.4, Azure Cosmos DB resources provision with the `EnableServerless` capability by default. New Cosmos DB accounts created by Aspire use the serverless model so they can scale to zero when idle.

## Version introduced

.NET Aspire 9.4

## Previous behavior

Azure Cosmos DB accounts were created using the default, provisioned throughput capacity. Unless you explicitly enabled serverless, deployments used provisioned capacity.

Example:

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var cosmos = builder.AddAzureCosmosDB("cosmos");
// Result: provisioned throughput (non-serverless)
```

## New behavior

By default, Azure Cosmos DB accounts are created with the `EnableServerless` capability so they can scale to zero.

Example:

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var cosmos = builder.AddAzureCosmosDB("cosmos");
// Result: serverless (EnableServerless capability applied)
```

## Type of breaking change

This is a [behavioral change](../categories.md#behavioral-change).

## Reason for change

Serverless is recommended for dev/test workloads because it scales to zero cost when not in use. Aligning the default with serverless helps avoid unexpected charges and improves the out‑of‑box experience. See also the related deployment issue about duplicate capabilities when upgrading: <https://github.com/dotnet/aspire/issues/10808>.

## Recommended action

- To restore the previous behavior (provisioned throughput), call the default SKU extension on the Cosmos resource builder:

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var provisionedCosmos = builder.AddAzureCosmosDB("cosmos")
.WithDefaultAzureSku();
```

- If you previously added the `EnableServerless` capability manually, remove that customization. Leaving it in place can result in duplicate capabilities and failed deployments when upgrading (see <https://github.com/dotnet/aspire/issues/10808>).

## Affected APIs

- <xref:Aspire.Hosting.AzureCosmosExtensions.AddAzureCosmosDB*?displayProperty=fullName>
- <xref:Aspire.Hosting.AzureCosmosExtensions.WithDefaultAzureSku*?displayProperty=fullName>
3 changes: 2 additions & 1 deletion docs/compatibility/9.4/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: Breaking changes in .NET Aspire 9.4
titleSuffix: ""
description: Navigate to the breaking changes in .NET Aspire 9.4.
ms.date: 07/22/2025
ms.date: 08/14/2025
---

# Breaking changes in .NET Aspire 9.4
Expand All @@ -19,6 +19,7 @@ If you're migrating an app to .NET Aspire 9.4, the breaking changes listed here
| Title | Type of change | Introduced version |
|--|--|--|
| [AddAzureOpenAI defaults to CognitiveServicesOpenAIUser role](add-azure-openai-default-changes.md) | Behavioral change | 9.4 |
| [Azure Cosmos DB now provisions serverless accounts by default](cosmosdb-serverless-defaults.md) | Behavioral change | 9.4 |
| [Azure Storage APIs renamed and refactored](azure-storage-apis-renamed.md) | Binary incompatible, source incompatible | 9.4 |
| [BicepSecretOutputReference and GetSecretOutput are now obsolete](getsecretoutput-deprecated.md) | Binary incompatible, source incompatible | 9.4 |
| [Deprecating various known parameters in AzureBicepResource](azure-bicep-parameters-deprecated.md) | Source incompatible, behavioral change | 9.4 |
Expand Down
21 changes: 21 additions & 0 deletions docs/compatibility/9.5/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
title: Breaking changes in .NET Aspire 9.5
titleSuffix: ""
description: Navigate to the breaking changes in .NET Aspire 9.5.
ms.date: 08/14/2025
---

# Breaking changes in .NET Aspire 9.5

If you're migrating an app to .NET Aspire 9.5, the breaking changes listed here might affect you.

[!INCLUDE [binary-source-behavioral](../includes/binary-source-behavioral.md)]

> [!NOTE]
> This article is a work in progress. It's not a complete list of breaking changes in .NET Aspire 9.5.

## Breaking changes

| Title | Type of change | Introduced version |
|--|--|--|
| [Azure Cosmos DB now provisions serverless accounts by default](cosmosdb-serverless-defaults.md) | Behavioral change | 9.5 |
11 changes: 10 additions & 1 deletion docs/compatibility/toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,17 @@ items:
href: ../get-started/aspire-overview.md
- name: Breaking changes
href: breaking-changes.md
- name: .NET Aspire 9.4
- name: .NET Aspire 9.5
expanded: true
items:
- name: Overview
href: 9.5/index.md
- name: Breaking changes in 9.5
expanded: true
items:
- name: Azure Cosmos DB now provisions serverless accounts by default
href: 9.5/cosmosdb-serverless-defaults.md
- name: .NET Aspire 9.4
items:
- name: Overview
href: 9.4/index.md
Expand Down
4 changes: 2 additions & 2 deletions docs/fundamentals/dashboard/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ docker run --rm -it -p 18888:18888 -p 4317:18889 -d --name aspire-dashboard \
-e DASHBOARD__TELEMETRYLIMITS__MAXLOGCOUNT='1000' \
-e DASHBOARD__TELEMETRYLIMITS__MAXTRACECOUNT='1000' \
-e DASHBOARD__TELEMETRYLIMITS__MAXMETRICSCOUNT='1000' \
mcr.microsoft.com/dotnet/aspire-dashboard:9.4
mcr.microsoft.com/dotnet/aspire-dashboard:9.5
```

## [PowerShell](#tab/powershell)
Expand All @@ -36,7 +36,7 @@ docker run --rm -it -p 18888:18888 -p 4317:18889 -d --name aspire-dashboard `
-e DASHBOARD__TELEMETRYLIMITS__MAXLOGCOUNT='1000' `
-e DASHBOARD__TELEMETRYLIMITS__MAXTRACECOUNT='1000' `
-e DASHBOARD__TELEMETRYLIMITS__MAXMETRICSCOUNT='1000' `
mcr.microsoft.com/dotnet/aspire-dashboard:9.4
mcr.microsoft.com/dotnet/aspire-dashboard:9.5
```

---
Expand Down
8 changes: 4 additions & 4 deletions docs/fundamentals/dashboard/enable-browser-telemetry.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ docker run --rm -it -d \
-p 4317:18889 \
-p 4318:18890 \
--name aspire-dashboard \
mcr.microsoft.com/dotnet/aspire-dashboard:9.4
mcr.microsoft.com/dotnet/aspire-dashboard:9.5
```

### [PowerShell](#tab/powershell)
Expand All @@ -61,7 +61,7 @@ docker run --rm -it -d `
-p 4317:18889 `
-p 4318:18890 `
--name aspire-dashboard `
mcr.microsoft.com/dotnet/aspire-dashboard:9.4
mcr.microsoft.com/dotnet/aspire-dashboard:9.5
```

---
Expand All @@ -85,7 +85,7 @@ docker run --rm -it -d \
-p 4318:18890 \
-e DASHBOARD__OTLP__CORS__ALLOWEDORIGINS=https://localhost:8080 \
--name aspire-dashboard \
mcr.microsoft.com/dotnet/aspire-dashboard:9.4
mcr.microsoft.com/dotnet/aspire-dashboard:9.5
```

### [PowerShell](#tab/powershell)
Expand All @@ -97,7 +97,7 @@ docker run --rm -it -d `
-p 4318:18890 `
-e DASHBOARD__OTLP__CORS__ALLOWEDORIGINS=https://localhost:8080 `
--name aspire-dashboard `
mcr.microsoft.com/dotnet/aspire-dashboard:9.4
mcr.microsoft.com/dotnet/aspire-dashboard:9.5
```

---
Expand Down
6 changes: 3 additions & 3 deletions docs/fundamentals/dashboard/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,21 +34,21 @@ The .NET Aspire dashboard is also shipped as a Docker image and can be used stan

```bash
docker run --rm -it -p 18888:18888 -p 4317:18889 -d --name aspire-dashboard \
mcr.microsoft.com/dotnet/aspire-dashboard:9.4
mcr.microsoft.com/dotnet/aspire-dashboard:9.5
```

## [PowerShell](#tab/powershell)

```powershell
docker run --rm -it -p 18888:18888 -p 4317:18889 -d --name aspire-dashboard `
mcr.microsoft.com/dotnet/aspire-dashboard:9.4
mcr.microsoft.com/dotnet/aspire-dashboard:9.5
```

---

The preceding Docker command:

- Starts a container from the `mcr.microsoft.com/dotnet/aspire-dashboard:9.4` image.
- Starts a container from the `mcr.microsoft.com/dotnet/aspire-dashboard:9.5` image.
- The container instance exposing two ports:
- Maps the dashboard's OTLP port `18889` to the host's port `4317`. Port `4317` receives OpenTelemetry data from apps. Apps send data using [OpenTelemetry Protocol (OTLP)](https://opentelemetry.io/docs/specs/otlp/).
- Maps the dashboard's port `18888` to the host's port `18888`. Port `18888` has the dashboard UI. Navigate to `http://localhost:18888` in the browser to view the dashboard.
Expand Down
4 changes: 2 additions & 2 deletions docs/fundamentals/dashboard/security-considerations.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ API key authentication can be enabled on the telemetry endpoint with some additi
docker run --rm -it -d -p 18888:18888 -p 4317:18889 --name aspire-dashboard \
-e DASHBOARD__OTLP__AUTHMODE='ApiKey' \
-e DASHBOARD__OTLP__PRIMARYAPIKEY='{MY_APIKEY}' \
mcr.microsoft.com/dotnet/aspire-dashboard:9.4
mcr.microsoft.com/dotnet/aspire-dashboard:9.5
```

## [PowerShell](#tab/powershell)
Expand All @@ -66,7 +66,7 @@ docker run --rm -it -d -p 18888:18888 -p 4317:18889 --name aspire-dashboard \
docker run --rm -it -d -p 18888:18888 -p 4317:18889 --name aspire-dashboard `
-e DASHBOARD__OTLP__AUTHMODE='ApiKey' `
-e DASHBOARD__OTLP__PRIMARYAPIKEY='{MY_APIKEY}' `
mcr.microsoft.com/dotnet/aspire-dashboard:9.4
mcr.microsoft.com/dotnet/aspire-dashboard:9.5
```

---
Expand Down
4 changes: 2 additions & 2 deletions docs/fundamentals/dashboard/standalone-for-nodejs.md
Original file line number Diff line number Diff line change
Expand Up @@ -149,14 +149,14 @@ To start the Aspire dashboard in standalone mode, run the following Docker comma

```bash
docker run --rm -it -p 18888:18888 -p 4317:18889 --name aspire-dashboard \
mcr.microsoft.com/dotnet/aspire-dashboard:9.4
mcr.microsoft.com/dotnet/aspire-dashboard:9.5
```

### [PowerShell](#tab/powershell)

```powershell
docker run --rm -it -p 18888:18888 -p 4317:18889 --name aspire-dashboard `
mcr.microsoft.com/dotnet/aspire-dashboard:9.4
mcr.microsoft.com/dotnet/aspire-dashboard:9.5
```

---
Expand Down
2 changes: 1 addition & 1 deletion docs/fundamentals/dashboard/standalone-for-python.md
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ To start the Aspire dashboard in standalone mode, run the following Docker comma

```bash
docker run --rm -it -p 18888:18888 -p 4317:18889 --name aspire-dashboard \
mcr.microsoft.com/dotnet/aspire-dashboard:9.4
mcr.microsoft.com/dotnet/aspire-dashboard:9.5
```

In the Docker logs, the endpoint and key for the dashboard are displayed. Copy the key and navigate to `http://localhost:18888` in a web browser. Enter the key to log in to the dashboard.
Expand Down
2 changes: 1 addition & 1 deletion docs/fundamentals/dashboard/standalone.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ docker run --rm -it -d `

The preceding Docker command:

- Starts a container from the `mcr.microsoft.com/dotnet/aspire-dashboard:9.4` image.
- Starts a container from the `mcr.microsoft.com/dotnet/aspire-dashboard:9.5` image.
- The container expose two ports:
- Mapping the dashboard's OTLP port `18889` to the host's port `4317`. Port `4317` receives OpenTelemetry data from apps. Apps send data using [OpenTelemetry Protocol (OTLP)](https://opentelemetry.io/docs/specs/otlp/).
- Mapping the dashboard's port `18888` to the host's port `18888`. Port `18888` has the dashboard UI. Navigate to `http://localhost:18888` in the browser to view the dashboard.
Expand Down
4 changes: 2 additions & 2 deletions docs/toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ items:
href: get-started/github-codespaces.md
- name: Dev Containers
href: get-started/dev-containers.md
- name: What's new in .NET Aspire 9.4
href: whats-new/dotnet-aspire-9.4.md
- name: What's new in .NET Aspire 9.5
href: whats-new/dotnet-aspire-9.5.md
- name: Upgrade to .NET Aspire 9.0
href: get-started/upgrade-to-aspire-9.md

Expand Down
9 changes: 9 additions & 0 deletions docs/whats-new/dotnet-aspire-9.5.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
title: What's new in .NET Aspire 9.5
description: Learn what's new in the official general availability release of .NET Aspire 9.5.
ms.date: 08/13/2025
---

# What's new in .NET Aspire 9.5

`TODO: Write all the what's new content...`
8 changes: 5 additions & 3 deletions docs/whats-new/index.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@ summary: Welcome to what's new in .NET Aspire docs. Use this page to quickly fin
metadata:
title: .NET Aspire what's new?
description: Learn about new and updated content in .NET Aspire docs.
ms.date: 07/03/2025
ms.date: 08/13/2025
ms.topic: landing-page
landingContent:
- title: .NET Aspire release documentation
linkLists:
- linkListType: whats-new
links:
- text: What's new in .NET Aspire 9.5
url: dotnet-aspire-9.5.md
- text: What's new in .NET Aspire 9.4
url: dotnet-aspire-9.4.md
- text: What's new in .NET Aspire 9.3
Expand All @@ -32,6 +34,8 @@ landingContent:
linkLists:
- linkListType: whats-new
links:
- text: .NET Aspire 9.4.1
url: https://github.com/dotnet/aspire/releases/tag/v9.4.1
- text: .NET Aspire 9.4
url: https://github.com/dotnet/aspire/releases/tag/v9.4.0
- text: .NET Aspire 9.3
Expand All @@ -48,8 +52,6 @@ landingContent:
url: https://github.com/dotnet/aspire/releases/tag/v8.2.1
- text: .NET Aspire 8.2.0
url: https://github.com/dotnet/aspire/releases/tag/v8.2.0
- text: .NET Aspire 8.1.0
url: https://github.com/dotnet/aspire/releases/tag/v8.1.0
- text: Older releases
url: https://github.com/dotnet/aspire/releases
- title: Latest documentation updates
Expand Down
4 changes: 4 additions & 0 deletions docs/whats-new/toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ items:
- name: Latest product updates
expanded: true
items:
- name: What's new in .NET Aspire 9.5
href: dotnet-aspire-9.5.md
- name: What's new in .NET Aspire 9.4
href: dotnet-aspire-9.4.md
- name: What's new in .NET Aspire 9.3
Expand All @@ -26,6 +28,8 @@ items:
href: ../compatibility/breaking-changes.md
- name: GitHub releases
items:
- name: .NET Aspire 9.4.1
href: https://github.com/dotnet/aspire/releases/tag/v9.4.1
- name: .NET Aspire 9.4
href: https://github.com/dotnet/aspire/releases/tag/v9.4.0
- name: .NET Aspire 9.3
Expand Down
Loading