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();
}
}
}