IDistributedApplicationTestingBuilder Properties
Hosting.DistributedApplication for testing purposes. public virtual Assembly? AppHostAssembly { get; }public virtual string AppHostDirectory { get; }public virtual ConfigurationManager Configuration { get; }Remarks
public virtual IHostEnvironment Environment { get; }public virtual IDistributedApplicationEventing Eventing { get; }public virtual DistributedApplicationExecutionContext ExecutionContext { get; }Remarks
The IDistributedApplicationBuilder.ExecutionContext property provides access key information about the context in which the distributed application is running. The most important properties that the Hosting.DistributedApplicationExecutionContext provides is the DistributedApplicationExecutionContext.IsPublishMode and DistributedApplicationExecutionContext.IsRunMode properties. Developers building .NET 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 Hosting.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;}public virtual IFileSystemService FileSystemService { get; }public virtual IDistributedApplicationPipeline Pipeline { get; }public virtual IResourceCollection Resources { get; }Remarks
public virtual IServiceCollection Services { get; }public virtual IUserSecretsManager UserSecretsManager { get; }