using EnvelopeGenerator.Service; using EnvelopeGenerator.Service.Schedulers; using Microsoft.Extensions.Options; using NLog.Extensions.Logging; var builder = Host.CreateApplicationBuilder(args); // NLog builder.Logging.ClearProviders(); builder.Logging.AddNLog("nlog.config"); // Configuration builder.Services.Configure( builder.Configuration.GetSection("ServiceConfig")); // Resolve connection string once for singleton registrations var connectionString = builder.Configuration.GetConnectionString("Default") ?? throw new InvalidOperationException("ConnectionStrings:Default is not configured."); // Services builder.Services.AddSingleton(); builder.Services.AddSingleton(sp => new SchedulerFinishEnvelope( sp.GetRequiredService>(), sp.GetRequiredService>(), connectionString)); builder.Services.AddSingleton(sp => new SchedulerEnvelopeTaskApi( sp.GetRequiredService>(), sp.GetRequiredService>(), connectionString)); builder.Services.AddHostedService(); // Windows Service (SCM) support — replaces legacy ProjectInstaller/installutil builder.Services.AddWindowsService(options => options.ServiceName = "EnvelopeGenerator.Service"); var host = builder.Build(); host.Run();