using LogoForceTestApp.Modules.MainModule.Models; using LogoForceTestApp.Modules.MainModule; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Configuration; using Prism.DryIoc; using Prism.Ioc; using Prism.Modularity; using Serilog.Events; using Serilog; using System; using System.IO; using System.Threading.Tasks; using System.Windows; using System.Windows.Threading; using LogoForceTestApp.Services.Interfaces; using LogoForceTestApp.Services; using LogoForceTestApp.Views; using DryIoc; using Team.Utility; using DryIoc.Microsoft.DependencyInjection; using ConfigurationBuilder = Microsoft.Extensions.Configuration.ConfigurationBuilder; using Repository; using Microsoft.EntityFrameworkCore; using AutoMapper.EquivalencyExpression; using System.Linq; using System.Reflection; using TouchSocket.Sockets; using System.Text; using TouchSocket.Core; using LogoForceTestApp.Modules.MainModule.Views; using Prism.Events; using AutoMapper; using Mapper = AutoMapper.Mapper; using LogForceTestApp.Modules.MainModule; namespace LogoForceTestApp { /// /// App.xaml 的交互逻辑 /// public partial class App { private static readonly string logPath = AppDomain.CurrentDomain.BaseDirectory + "logs.db"; private readonly ILogger _log = new LoggerConfiguration() .WriteTo.Console(LogEventLevel.Debug) .WriteTo.Debug(LogEventLevel.Debug) .WriteTo.SQLite(logPath) .WriteTo.File(AppDomain.CurrentDomain.BaseDirectory + "logs/log.log", rollingInterval: RollingInterval.Day) .CreateLogger(); public static string Version { get; private set; } protected override void OnStartup(StartupEventArgs e) { var version =Assembly.GetExecutingAssembly().GetName().Version; Version = version.ToString(); var teamContext = new TeamDataContext(); teamContext.Database.Migrate(); DispatcherUnhandledException += App_DispatcherUnhandledException; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException; base.OnStartup(e); } protected override Window CreateShell() { Container.Resolve().Show(); //new KBWindow().Show(); return Container.Resolve(); } protected override void RegisterTypes(IContainerRegistry containerRegistry) { containerRegistry.RegisterSingleton(); containerRegistry.RegisterSingleton(); containerRegistry.RegisterInstance(_log); containerRegistry.RegisterSingleton(); containerRegistry.RegisterSingleton(); var configuration = new MapperConfiguration(cfg => { cfg.AddCollectionMappers(); cfg.AddProfile(new MainModuleProfile()); }); containerRegistry.RegisterInstance(typeof(IMapper), new Mapper(configuration)); //tcp TcpService tcpService = new TcpService(); tcpService.Setup(new TouchSocketConfig()//载入配置 .SetListenIPHosts(7790)//端口号 .ConfigureContainer(a =>//容器的配置顺序应该在最前面 { a.AddConsoleLogger();//添加一个控制台日志注入(注意:在maui中控制台日志不可用) })); tcpService.Start();//启动 containerRegistry.RegisterInstance(tcpService); } protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog) { moduleCatalog.AddModule(); } protected override IContainerExtension CreateContainerExtension() { var services = new ServiceCollection(); Serilog.Log.Logger = _log; services.AddLogging(c => c.AddSerilog()); var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", false, true); var configuration = builder.Build(); services.ConfigureWritable(configuration.GetSection(nameof(AppSettings))); services.AddHttpClient(); return new DryIocContainerExtension(new DryIoc.Container(CreateContainerRules()) .WithDependencyInjectionAdapter(services)); } private void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e) { _log.Information($"App TaskSchedulerUnobservedTaskException Exit:{e.Exception}"); } private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { _log.Information($"App CurrentDomainUnhandledException Exit:{e.ExceptionObject}"); } private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) { _log.Information($"App AppDispatcherUnhandledException Exit:{e.Exception}"); } } }