using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using WinFormsComponentOrientedHost.Composition; using WinFormsComponentOrientedHost.Infrastructure; using WinFormsComponentOrientedHost.Licensing; using WinFormsComponentOrientedHost.UI; namespace WinFormsComponentOrientedHost; internal static class Program { public static IConfiguration Configuration { get; private set; } = default!; [STAThread] static void Main() { ApplicationConfiguration.Initialize(); // Настраиваем конфиг var builder = new ConfigurationBuilder() .SetBasePath(AppContext.BaseDirectory) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: false); Configuration = builder.Build(); // Простой логгер в Debug/MsgBox var logger = new SimpleLogger(); // Лицензия var license = LicenseProvider.FromConfig(Configuration, logger); // Загрузчик плагинов var pluginsPath = Configuration["Plugins:Path"] ?? ".\\Plugins"; var loader = new ReflectionLoader(pluginsPath, logger); // HostServices var host = new HostServicesImpl(license, logger); var cs = Configuration["Database:ConnectionString"] ?? throw new Exception("No DB connection string"); var dbFactory = new WinFormsComponentOrientedHost.Data.AppDbContextFactory(cs); host.Register(dbFactory); try { using var db = dbFactory.CreateDbContext(); db.Database.EnsureCreated(); db.Database.Migrate(); } catch (Exception ex) { logger.Error("DB migrate failed", ex); } Application.Run(new FormMain(Configuration, host, loader)); } }