Skip to content
DocsTry Aspire
DocsTry

DistributedApplicationBuilder Properties

ClassProperties12 members
A builder for creating instances of DistributedApplication.
AppHostAssemblySection titled AppHostAssemblynullableAssembly?
Assembly of the app host project.
public Assembly? AppHostAssembly { get; }
AppHostDirectorySection titled AppHostDirectorystring
Directory of the project where the app host is located. Defaults to the content root if there's no project.
public string AppHostDirectory { get; }
public string AppHostPath { get; }
ConfigurationSection titled ConfigurationConfigurationManager
Gets the set of key/value configuration properties.
public ConfigurationManager Configuration { get; }
This can be mutated by adding more configuration sources, which will update its current view.
EnvironmentSection titled EnvironmentIHostEnvironment
Gets the information about the hosting environment an application is running in.
public IHostEnvironment Environment { get; }
Eventing infrastructure for AppHost lifecycle.
public IDistributedApplicationEventing Eventing { get; }
Execution context for this invocation of the AppHost.
public DistributedApplicationExecutionContext ExecutionContext { get; }

The IDistributedApplicationBuilder.ExecutionContext property provides access key information about the context in which the distributed application is running. The most important properties that the DistributedApplicationExecutionContext provides is the DistributedApplicationExecutionContext.IsPublishMode and DistributedApplicationExecutionContext.IsRunMode properties. Developers building Aspire based applications may whish to change the application model depending on whether they are running locally, or whether they are publishing to the cloud.

An example of using the DistributedApplicationExecutionContext.IsRunMode property on the IDistributedApplicationBuilder via the IResourceBuilder`1.ApplicationBuilder. In this case an extension method is used to generate a stable node name for RabbitMQ for local development runs.

private static IResourceBuilder<RabbitMQServerResource> RunWithStableNodeName(
this IResourceBuilder<RabbitMQServerResource> builder)
{
if (builder.ApplicationBuilder.ExecutionContext.IsRunMode)
{
builder.WithEnvironment(context =>
{
// Set a stable node name so queue storage is consistent between sessions
var nodeName = $"{builder.Resource.Name}@localhost";
context.EnvironmentVariables["RABBITMQ_NODENAME"] = nodeName;
});
}
return builder;
}
Gets the service for managing Aspire file system operations.
public IFileSystemService FileSystemService { get; }

The IDistributedApplicationBuilder.FileSystemService provides a centralized way to manage temporary files and directories used by Aspire, enabling testability and consistent temp file management.

Resources and infrastructure code should use this service instead of static methods like Path.GetTempPath or Directory.CreateTempSubdirectory to ensure consistent directory management across the application.

Gets the deployment pipeline for this distributed application.
public IDistributedApplicationPipeline Pipeline { get; }
The pipeline allows adding custom deployment steps that execute during the deploy process. Steps can declare dependencies on other steps to control execution order.
Gets the collection of resources for the distributed application.
public IResourceCollection Resources { get; }
This can be mutated by adding more resources, which will update its current view.
ServicesSection titled ServicesIServiceCollection
Gets a collection of services for the application to compose. This is useful for adding user provided or framework provided services.
public IServiceCollection Services { get; }
Gets the service for managing user secrets.
public IUserSecretsManager UserSecretsManager { get; }

The IDistributedApplicationBuilder.UserSecretsManager provides a centralized way to manage user secrets used by Aspire, enabling testability and consistent secret management.