using System.Text; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Console; using WarcViewerBlazorWinForm.Backend.Logging; using WarcViewerBlazorWinForm.Library.AssemblyInject; using WarcViewerBlazorWinForm.Library.EventBus; namespace WarcViewerBlazorWinForm { internal class Program { /// /// The main entry point for the application. /// [STAThread] private static void Main() { // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); //TestCases.Run().Wait; var builder = Host.CreateDefaultBuilder(); var mainForm = new ViewerMainForm(); var loggingIntoEventBus = new LoggingIntoEventBus(); builder.ConfigureServices((ctx, services) => { //控制台日志格式 services.AddLogging(opt => { opt.AddSimpleConsole(p => { p.TimestampFormat = "[dd HH:mm:ss] "; p.SingleLine = true; p.ColorBehavior = LoggerColorBehavior.Enabled; }) .AddDebug() .AddProvider(loggingIntoEventBus); services.AddSingleton(opt); }); services.AddWindowsFormsBlazorWebView(); services.AddAssemblyInject(); services.AddBootstrapBlazor(); services.AddSingleton(mainForm); }); var host = builder.Build(); var serviceProvider = host.Services; loggingIntoEventBus.EventBus = serviceProvider.GetRequiredService(); mainForm.ServiceProvider = serviceProvider; host.Start(); Application.Run(mainForm); host.StopAsync().Wait(); } } }