static void Main(string[] args) { var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); if (string.IsNullOrEmpty(environment)) { environment = "Development"; } var directory = Directory.GetCurrentDirectory(); var config = new ConfigurationBuilder() .SetBasePath(directory) .AddCommandLine(args) .AddJsonFile($"appsettings.{environment}.json") .Build(); var services = new ServiceCollection(); services.AddLogging(); var startup = new Startup(config); startup.ConfigureService(services); var containerBuilder = new Autofac.ContainerBuilder(); containerBuilder.Populate(services); var container = containerBuilder.Build(); var provider = new AutofacServiceProvider(container); var logger = provider.GetService <ILoggerFactory>(); logger.AddNLog(); GlobalDiagnosticsContext.Set("currentDirectory", directory); LogManager.LoadConfiguration("nlog.config"); IAction action = null; var jobConfig = config.GetSection("JobConfig").Get <JobConfig>(); switch (jobConfig.Action) { case "schedulePeriodicInspection": action = provider.GetService <SchedulePeriodicInspectionAction>(); break; } try { action?.Invoke().GetAwaiter().GetResult(); } catch (Exception ex) { var log = LogManager.GetCurrentClassLogger(); log.Error(ex); } }
private static async Task HostingExtensionMethodsAsync(string[] args, CancellationToken ct) { var loggerFactory = new LoggerFactory() .AddConsole(LogLevel.Trace, true); var logger = loggerFactory.CreateLogger <Program>(); using (logger.BeginScope("Example:{exampleNumber}", "02")) { logger.LogInformation("Hosting an application using extension methods"); using (var hostBuilder = new HostBuilder("ASPNETCORE_ENVIRONMENT") .UseLoggerFactory(loggerFactory) .ConfigureConfigurationBuilder(param => { param.Builder .SetBasePath(param.Environment.ContentRootPath) .AddJsonFile("appsettings.json", true, true) .AddJsonFile($"appsettings.{param.Environment.Name}.json", true, true) .AddEnvironmentVariables() .AddCommandLine(args); }) .ConfigureConfiguration(param => { if (param.Environment.IsDevelopment()) { param.Configuration["CacheTimeoutInMs"] = "1000"; } }) .ConfigureLoggerFactory(param => { NLog.LogManager.LoadConfiguration( param.Environment.ContentRootFileProvider.GetFileInfo( param.Environment.IsDevelopment() ? "nlog.config" : $"nlog.{param.Environment.Name}.config") .PhysicalPath); param.LoggerFactory.AddNLog(); }) .ConfigureServiceCollection(param => { param.ServiceCollection .AddOptions() .Configure <ExampleHostOptions>(param.Configuration) .AddSingleton(k => k.GetRequiredService <IOptions <ExampleHostOptions> >().Value); }) .UseServiceProviderBuilder(param => { var container = new Autofac.ContainerBuilder(); container.Populate(param.ServiceCollection); return(new AutofacServiceProvider(container.Build())); })) { await hostBuilder.RunHostAsync <ExampleHost>(ct); } logger.LogInformation("Terminated"); } }
public override IServiceProvider BuildServiceProvider(IServiceProviderBuilderParam param) { var container = new Autofac.ContainerBuilder(); container.Populate(param.ServiceCollection); return(new AutofacServiceProvider(container.Build())); }
test_xx() { var collection = new ServiceCollection(); var containerBuilder = new Autofac.ContainerBuilder(); containerBuilder.Populate(collection); using var container = containerBuilder.Build(); }