Skip to content

Commit 48e42f5

Browse files
committed
Merged PR 35108: Merge branch 'release/8.0-preview1' into 'internal/release/8.0-preview1'
2 parents 377dc1a + f7905ba commit 48e42f5

File tree

27 files changed

+81
-79
lines changed

27 files changed

+81
-79
lines changed

Directory.Packages.props

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@
8282
<PackageVersion Include="RabbitMQ.Client" Version="6.6.0" />
8383
<PackageVersion Include="StackExchange.Redis" Version="2.6.122" />
8484
<PackageVersion Include="Swashbuckle.AspNetCore" Version="6.5.0" />
85-
<PackageVersion Include="Yarp.ReverseProxy" Version="2.1.0-preview.1.23428.7" />
85+
<PackageVersion Include="Yarp.ReverseProxy" Version="2.1.0-preview.1.23556.5" />
8686
<!-- Open Telemetry -->
8787
<PackageVersion Include="Npgsql.OpenTelemetry" Version="8.0.0-rc.2" />
8888
<PackageVersion Include="OpenTelemetry.Exporter.InMemory" Version="1.7.0-alpha.1" />

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# .NET Aspire
22

3-
## Getting started with Aspire
3+
## Getting started with .NET Aspire
44

55
Follow instructions in [docs/getting-started.md](docs/getting-started.md) to get started using .NET Aspire.
66

docs/getting-perf-traces.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ Collect the trace using PerfView (https://github.com/microsoft/perfview/releases
77
1. Increase Circular MB to 8192.
88
1. Check the "Thread Time" checkbox.
99
1. Expand Advanced Options panel and make sure you have Kernel Base, Cpu Samples, File I/O, .NET, and Task (TPL) options checked.
10-
1. In "Additional Providers" add `*Microsoft-Aspire-Hosting` (note the asterisk before the Aspire provider name!).
10+
1. In "Additional Providers" add `*Microsoft-Aspire-Hosting` (note the asterisk before the .NET Aspire provider name!).
1111

1212
Once you are ready, git "Start Collection" button and run your scenario.
1313

1414
When done with the scenario, hit "Stop Collection". Wait for PerfView to finish merging and analyzing data (the "working" status bar stops flashing).
1515

16-
### Verify that the trace contains data Aspire data
16+
### Verify that the trace contains data .NET Aspire data
1717

1818
This is an optional step, but if you are wondering if your trace has been captured properly, you can check the following:
1919

docs/getting-started.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,15 @@ it, you need to perform the following steps:
5353
expiration length:
5454
[<img width="583" alt="image" src="https://user-images.githubusercontent.com/249088/160220117-7e79822e-a18a-445c-89ff-b3d9ca84892f.png">](https://github.com/settings/tokens/new)
5555

56-
1. At the command line, go to the root of the Aspire repo and run the following
56+
1. At the command line, go to the root of the .NET Aspire repo and run the following
5757
commands to add the package feed to your NuGet configuration, replacing the
5858
`<YOUR_USER_NAME>` and `<YOUR_TOKEN>` placeholders with the relevant values:
5959
```text
6060
dotnet nuget remove source dotnet-libraries-internal
6161
dotnet nuget add source -u <YOUR_USER_NAME> -p <YOUR_TOKEN> --name dotnet-libraries-internal "https://nuget.pkg.github.com/dotnet/index.json"
6262
```
6363

64-
## Install the Aspire dotnet workload
64+
## Install the .NET Aspire dotnet workload
6565

6666
### Visual Studio
6767

@@ -73,19 +73,19 @@ Ensure the `.NET Aspire SDK` component is checked in `Individual components`.
7373

7474
### Command line
7575

76-
1. The RTM nightly SDK is aware that the Aspire workload exists, but the real manifest is not installed by default. In order to install it, you'll need to update the workload in a directory that has a NuGet.config[^3] with the right feeds configured[^2] so that it can pull the latest manifest. Once you have created the NuGet.config file in your working directory, then you need to run the following command[^1]:
76+
1. The RTM nightly SDK is aware that the .NET Aspire workload exists, but the real manifest is not installed by default. In order to install it, you'll need to update the workload in a directory that has a NuGet.config[^3] with the right feeds configured[^2] so that it can pull the latest manifest. Once you have created the NuGet.config file in your working directory, then you need to run the following command[^1]:
7777

7878
```shell
7979
dotnet workload update --skip-sign-check --interactive
8080
```
8181

82-
2. The above command will update the Aspire manifest in your SDK build, meaning it will already be setup for command-line and Visual Studio in-product acquisition (IPA) of the Aspire workload. In order to manually install the workload, you can run the following command[^1]:
82+
2. The above command will update the .NET Aspire manifest in your SDK build, meaning it will already be setup for command-line and Visual Studio in-product acquisition (IPA) of the .NET Aspire workload. In order to manually install the workload, you can run the following command[^1]:
8383

8484
```shell
8585
dotnet workload install aspire --skip-sign-check --interactive
8686
```
8787

88-
[^1]: The `--skip-sign-check` flag is required because the packages we build out of the Aspire repo are not yet signed.
88+
[^1]: The `--skip-sign-check` flag is required because the packages we build out of the .NET Aspire repo are not yet signed.
8989
[^2]: If you want to create a separate NuGet.config instead, these are the contents you need:
9090
```xml
9191
<?xml version="1.0" encoding="utf-8"?>
@@ -111,7 +111,7 @@ Ensure the `.NET Aspire SDK` component is checked in `Individual components`.
111111

112112
## Using command line using workload templates
113113

114-
- To create an empty Aspire project[^3], run the following command::
114+
- To create an empty .NET Aspire project[^3], run the following command::
115115

116116
```shell
117117
dotnet new aspire
@@ -123,7 +123,7 @@ Ensure the `.NET Aspire SDK` component is checked in `Individual components`.
123123
dotnet new aspire-starter
124124
```
125125

126-
[^3]: In order for these commands to work, you must have already installed the Aspire workload by following the steps in #Install-the-Aspire-dotnet-workload section.
126+
[^3]: In order for these commands to work, you must have already installed the .NET Aspire workload by following the steps in #Install-the-Aspire-dotnet-workload section.
127127

128128
You need to create a `NuGet.config` file in the root directory of your project with the contents above.
129129
Once that is created you can build with

docs/open-telemetry-architecture.md

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# Aspire OpenTelemetry architecture
1+
# .NET Aspire OpenTelemetry architecture
22

3-
One of Aspire's objectives is to ensure that apps are straightforward to debug and diagnose. By default, Aspire apps are configured to collect and export telemetry using [OpenTelemetry (OTEL)](https://opentelemetry.io/). Additionally, Aspire local development includes UI in the dashboard for viewing OTEL data. Telemetry just works and is easy to use.
3+
One of .NET Aspire's objectives is to ensure that apps are straightforward to debug and diagnose. By default, .NET Aspire apps are configured to collect and export telemetry using [OpenTelemetry (OTEL)](https://opentelemetry.io/). Additionally, .NET Aspire local development includes UI in the dashboard for viewing OTEL data. Telemetry just works and is easy to use.
44

5-
This document details how OpenTelemtry is used in Aspire apps.
5+
This document details how OpenTelemtry is used in .NET Aspire apps.
66

77
## Telemetry types
88

@@ -18,7 +18,7 @@ When an OpenTelemetry SDK is configured in an app, it receives data from these A
1818

1919
The [.NET OpenTelemetry SDK](https://github.com/open-telemetry/opentelemetry-dotnet) offers features for gathering data from several .NET APIs, including `ILogger`, `Activity`, `Meter`, and `Instrument<T>`. It then facilitates the export of this telemetry data to a data store or reporting tool. The telemetry export mechanism relies on the [OpenTelemetry protocol (OTLP)](https://opentelemetry.io/docs/specs/otel/protocol/), which serves as a standardized approach for transmitting telemetry data through REST or gRPC.
2020

21-
.NET projects setup the .NET OpenTelemetry SDK using the _service defaults_ project. Aspire templates automatically create the service defaults, and Aspire apps call it at startup. The service defaults enable collecting and exporting telemetry for .NET apps.
21+
.NET projects setup the .NET OpenTelemetry SDK using the _service defaults_ project. .NET Aspire templates automatically create the service defaults, and .NET Aspire apps call it at startup. The service defaults enable collecting and exporting telemetry for .NET apps.
2222

2323
## OpenTelemetry environment variables
2424

@@ -32,24 +32,24 @@ Aspire apps launch with environment variables that configure the name and ID of
3232

3333
The environment variables are automatically set in local development.
3434

35-
## Aspire local development
35+
## .NET Aspire local development
3636

37-
The Aspire dashboard provides UI for viewing the telemetry of apps. Telemetry data is sent to the dashboard using OTLP, and the dashboard implements an OTLP server to receive telemetry data and store it in memory. The dashboard UI presents telemetry stored in memory.
37+
The .NET Aspire dashboard provides UI for viewing the telemetry of apps. Telemetry data is sent to the dashboard using OTLP, and the dashboard implements an OTLP server to receive telemetry data and store it in memory. The dashboard UI presents telemetry stored in memory.
3838

3939
Aspire debugging workflow:
4040

41-
* Developer starts the Aspire app with debugging, presses <kbd>F5</kbd>.
42-
* Aspire dashboard and developer control plane (DCP) start.
41+
* Developer starts the .NET Aspire app with debugging, presses <kbd>F5</kbd>.
42+
* .NET Aspire dashboard and developer control plane (DCP) start.
4343
* App configuration is run in the _AppHost_ project.
4444
* OTEL environment variables are automatically added to .NET projects during app configuration.
4545
* DCP provides the name (`OTEL_SERVICE_NAME`) and ID (`OTEL_RESOURCE_ATTRIBUTES`) of the app in exported telemetry.
4646
* The OTLP endpoint is an HTTP/2 port started by the dashboard. This endpoint is set in the `OTEL_EXPORTER_OTLP_ENDPOINT` environment variable on each project. That tells projects to export telemetry back to the dashboard.
4747
* Small export intervals (`OTEL_BSP_SCHEDULE_DELAY`, `OTEL_BLRP_SCHEDULE_DELAY`, `OTEL_METRIC_EXPORT_INTERVAL`) so data is quickly available in the dashboard. Small values are used in local development to prioritize dashboard responsiveness over efficiency.
4848
* The DCP starts configured projects, containers, and executables.
4949
* Once started, apps send telemetry to the dashboard.
50-
* Dashboard displays near real-time telemetry of all Aspire apps.
50+
* Dashboard displays near real-time telemetry of all .NET Aspire apps.
5151

52-
## Aspire deployment
52+
## .NET Aspire deployment
5353

5454
Aspire deployment environments should configure OTEL environment variables that make sense for their environment. For example, `OTEL_EXPORTER_OTLP_ENDPOINT` should be configured to the environment's local OTLP collector or monitoring service.
5555

docs/repo-instructions.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ You can launch VS with:
1111
1. `.\restore.cmd`
1212
2. `.\startvs.cmd`
1313

14-
# Run the Aspire eShopLite sample
14+
# Run the .NET Aspire eShopLite sample
1515

1616
## Enable Azure ServiceBus (optional)
1717

docs/specs/manifest-spec.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
# Manifest Specification for Aspire's Distributed Application Model
1+
# Manifest Specification for .NET Aspire's Distributed Application Model
22

3-
This is a specification for the manifest file for Aspire's Distributed Application Model. The purpose of the manifest file is to allow developers to export definitions of components that comprise their distributed application model and their dependencies so that other tools can process it to facilitate deployment into target runtime environments.
3+
This is a specification for the manifest file for .NET Aspire's Distributed Application Model. The purpose of the manifest file is to allow developers to export definitions of components that comprise their distributed application model and their dependencies so that other tools can process it to facilitate deployment into target runtime environments.
44

55
The format of the manifest file itself does not pre-suppose a particular target environment but this document will make reference to specific cloud providers and technologies for illustrative purposes.
66

77
## Basic model
88

9-
The Aspire distributed application model is comprised components which are typically deployed together as a unit. For example there may be a front-end ASP.NET Core application which calls into one or more backend services which in turn may depend on relational databases or caches. Consider the following sample (taken from the eShop light example):
9+
The .NET Aspire distributed application model is comprised components which are typically deployed together as a unit. For example there may be a front-end ASP.NET Core application which calls into one or more backend services which in turn may depend on relational databases or caches. Consider the following sample (taken from the eShop light example):
1010

1111
```csharp
1212
using Aspire.Hosting.Postgres;

docs/tips-and-known-issues.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ We have seen Docker get into weird state on "DevBox" machines that get hibernate
66

77
The remedy is to do "Restart Docker" gesture from the Docker icon in system tray.
88

9-
### If something goes wrong and you are left with a bunch of Aspire eShopLite orphaned processes and containers
9+
### If something goes wrong and you are left with a bunch of .NET Aspire eShopLite orphaned processes and containers
1010

11-
This will display process IDs of all the Aspire shopping running processes
11+
This will display process IDs of all the .NET Aspire shopping running processes
1212

1313
```ps1
1414
ps | where ProcessName -cmatch '(Api)|(Catalog)|(Basket)|(AppHost)|(MyFrontend)|(OrderProcessor)' | % {Write-Output $_.Id }

src/Aspire.Dashboard/DashboardWebApplication.cs

+4-2
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ public DashboardWebApplication(ILogger<DashboardWebApplication> logger, Action<I
4040

4141
if (dashboardUris.FirstOrDefault() is { } reportedDashboardUri)
4242
{
43-
_logger.LogInformation("Dashboard running at: {dashboardUri}", reportedDashboardUri);
43+
// dotnet watch needs the trailing slash removed. See https://github.com/dotnet/sdk/issues/36709
44+
_logger.LogInformation("Now listening on: {dashboardUri}", reportedDashboardUri.AbsoluteUri.TrimEnd('/'));
4445
}
4546

4647
var dashboardHttpsPort = dashboardUris.FirstOrDefault(IsHttps)?.Port;
@@ -53,7 +54,8 @@ public DashboardWebApplication(ILogger<DashboardWebApplication> logger, Action<I
5354

5455
if (otlpUris.FirstOrDefault() is { } reportedOtlpUri)
5556
{
56-
_logger.LogInformation("OTLP server running at: {dashboardUri}", reportedOtlpUri);
57+
// dotnet watch needs the trailing slash removed. See https://github.com/dotnet/sdk/issues/36709. Conform to dashboard URL format above
58+
_logger.LogInformation("OTLP server running at: {dashboardUri}", reportedOtlpUri.AbsoluteUri.TrimEnd('/'));
5759
}
5860

5961
_isAllHttps = dashboardHttpsPort is not null && IsHttps(otlpUris[0]);

src/Aspire.Hosting/build/Aspire.Hosting.targets

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ public class ]]>%(ClassName)<![CDATA[ : IServiceMetadata
103103
</Target>
104104

105105
<PropertyGroup>
106-
<AspirePublisher Condition="'(AspirePublisher)' == ''">manifest</AspirePublisher>
106+
<AspirePublisher Condition="'$(AspirePublisher)' == ''">manifest</AspirePublisher>
107107
<AspireManifestPublishOutputPath Condition="'$(AspireManifestPublishOutputPath)' == ''">$(_AspireIntermediatePath)manifest.json</AspireManifestPublishOutputPath>
108108
</PropertyGroup>
109109

src/Components/Aspire.Azure.Data.Tables/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Registers [TableServiceClient](https://learn.microsoft.com/dotnet/api/azure.data
1111

1212
### Install the package
1313

14-
Install the Aspire Azure Table storage library with [NuGet][nuget]:
14+
Install the .NET Aspire Azure Table storage library with [NuGet][nuget]:
1515

1616
```dotnetcli
1717
dotnet add package Aspire.Azure.Data.Tables
@@ -40,7 +40,7 @@ See the [Azure.Data.Tables documentation](https://github.com/Azure/azure-sdk-for
4040

4141
## Configuration
4242

43-
The Aspire Azure Table storage library provides multiple options to configure the Azure Table connection based on the requirements and conventions of your project. Note that either a `ServiceUri` or a `ConnectionString` is a required to be supplied.
43+
The .NET Aspire Azure Table storage library provides multiple options to configure the Azure Table connection based on the requirements and conventions of your project. Note that either a `ServiceUri` or a `ConnectionString` is a required to be supplied.
4444

4545
### Use a connection string
4646

src/Components/Aspire.Azure.Messaging.ServiceBus/README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Registers a [ServiceBusClient](https://learn.microsoft.com/dotnet/api/azure.mess
1111

1212
### Install the package
1313

14-
Install the Aspire Azure Service Bus library with [NuGet][nuget]:
14+
Install the .NET Aspire Azure Service Bus library with [NuGet][nuget]:
1515

1616
```dotnetcli
1717
dotnet add package Aspire.Azure.Messaging.ServiceBus
@@ -40,7 +40,7 @@ See the [Azure.Messaging.ServiceBus documentation](https://github.com/Azure/azur
4040

4141
## Configuration
4242

43-
The Aspire Azure Service Bus library provides multiple options to configure the Azure Service Bus connection based on the requirements and conventions of your project. Note that either a `Namespace` or a `ConnectionString` is a required to be supplied.
43+
The .NET Aspire Azure Service Bus library provides multiple options to configure the Azure Service Bus connection based on the requirements and conventions of your project. Note that either a `Namespace` or a `ConnectionString` is a required to be supplied.
4444

4545
### Use a connection string
4646

@@ -78,7 +78,7 @@ Alternatively, a connection string can be used.
7878

7979
### Use configuration providers
8080

81-
The Aspire Azure Service Bus library supports [Microsoft.Extensions.Configuration](https://learn.microsoft.com/dotnet/api/microsoft.extensions.configuration). It loads the `AzureMessagingServiceBusSettings` and `ServiceBusClientOptions` from configuration by using the `Aspire:Azure:Messaging:ServiceBus` key. Example `appsettings.json` that configures some of the options:
81+
The .NET Aspire Azure Service Bus library supports [Microsoft.Extensions.Configuration](https://learn.microsoft.com/dotnet/api/microsoft.extensions.configuration). It loads the `AzureMessagingServiceBusSettings` and `ServiceBusClientOptions` from configuration by using the `Aspire:Azure:Messaging:ServiceBus` key. Example `appsettings.json` that configures some of the options:
8282

8383
```json
8484
{

src/Components/Aspire.Azure.Security.KeyVault/README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Retrieves secrets from Azure Key Vault to use in your application. Registers a [
1111

1212
### Install the package
1313

14-
Install the Aspire Azure Key Vault library with [NuGet][nuget]:
14+
Install the .NET Aspire Azure Key Vault library with [NuGet][nuget]:
1515

1616
```dotnetcli
1717
dotnet add package Aspire.Azure.Security.KeyVault
@@ -59,7 +59,7 @@ See the [Azure.Security.KeyVault.Secrets documentation](https://github.com/Azure
5959

6060
## Configuration
6161

62-
The Aspire Azure Key Vault library provides multiple options to configure the Azure Key Vault connection based on the requirements and conventions of your project. Note that the `VaultUri` is required to be supplied.
62+
The .NET Aspire Azure Key Vault library provides multiple options to configure the Azure Key Vault connection based on the requirements and conventions of your project. Note that the `VaultUri` is required to be supplied.
6363

6464
### Use a connection string
6565

@@ -81,7 +81,7 @@ And then the vault URI will be retrieved from the `ConnectionStrings` configurat
8181

8282
### Use configuration providers
8383

84-
The Aspire Azure Key Vault library supports [Microsoft.Extensions.Configuration](https://learn.microsoft.com/dotnet/api/microsoft.extensions.configuration). It loads the `AzureSecurityKeyVaultSettings` and `SecretClientOptions` from configuration by using the `Aspire:Azure:Security:KeyVault` key. Example `appsettings.json` that configures some of the options:
84+
The .NET Aspire Azure Key Vault library supports [Microsoft.Extensions.Configuration](https://learn.microsoft.com/dotnet/api/microsoft.extensions.configuration). It loads the `AzureSecurityKeyVaultSettings` and `SecretClientOptions` from configuration by using the `Aspire:Azure:Security:KeyVault` key. Example `appsettings.json` that configures some of the options:
8585

8686
```json
8787
{

0 commit comments

Comments
 (0)