|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System.Reflection;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace Aspire.Hosting;
internal sealed class DistributedApplicationLifecycle(
ILogger<DistributedApplication> logger,
IConfiguration configuration,
DistributedApplicationExecutionContext executionContext) : IHostedLifecycleService
{
public Task StartAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
public Task StartedAsync(CancellationToken cancellationToken)
{
if (executionContext.IsRunMode)
{
logger.LogInformation("Distributed application started. Press Ctrl+C to shut down.");
}
return Task.CompletedTask;
}
public Task StartingAsync(CancellationToken cancellationToken)
{
if (GetType().Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion is string informationalVersion)
{
// Write version at info level so it's written to the console by default. Help us debug user issues.
// Display version and commit like 8.0.0-preview.2.23619.3+17dd83f67c6822954ec9a918ef2d048a78ad4697
logger.LogInformation("Aspire version: {Version}", informationalVersion);
}
if (executionContext.IsRunMode)
{
logger.LogInformation("Distributed application starting.");
logger.LogInformation("Application host directory is: {AppHostDirectory}", configuration["AppHost:Directory"]);
}
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
public Task StoppedAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
public Task StoppingAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
}
|