using DevExpress.CodeParser; using DevExpress.Utils.Localization; using DevExpress.Xpo; using DevExpress.XtraGrid.Localization; using DevExpress.XtraReports.Native.Templates; using DevExpress.XtraSplashScreen; using Ips.AdcAlgorithm; using Ips.Library; using Ips.Library.Basic; using Ips.Library.Basic.IO; using Ips.Library.DxpLib; using Ips.Library.Entity; using Ips.Library.LocLib; using Ips.LocAlgorithm; using Ips.Sps.Refs; using Ips.Sps.Scheduling.SigLocs; using Ips.Sps.Store; using System.Configuration; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Loader; using System.Text; namespace Ips.Sps.Host.Win { internal static class Program { [STAThread] static void Main() { AssemblyLoadContext.Default.Resolving += ResolveAssembly; AppHelper.OneStart(SpsConst.AppName, () => { AppHelper.InitAppSettings(); XpoInit(); ConfigInit(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.SetHighDpiMode(HighDpiMode.SystemAware); SplashScreenManager.ShowForm(typeof(SpsSplashScreen)); var mainWin = new MainWin() { Text = SpsConst.AppName }; Application.Run(mainWin); }); } static void XpoInit() { string connectionString = ConfigurationManager.ConnectionStrings["spsdb"]?.ConnectionString; if (connectionString.IsNullOrWhitespace()) { //var dbPath = DriveUtil.GetMaxDrivePath("spsdata"); //DirectoryUtil.CreateIfNotExists(dbPath); //var dbFile = Path.Combine(dbPath, "sps2.db"); //var dbFile = Path.Combine(Application.StartupPath, "AppData", "sps2.db"); var dbFile = Path.Combine(Application.StartupPath, "AppData", "spsdb", "sps.db"); if (!File.Exists(dbFile)) { string emptydb = Path.Combine(Application.StartupPath, "AppData", "spsdb", "sps_init.db"); File.Copy(emptydb, dbFile); } connectionString = $"XpoProvider=SQLite;Data Source={dbFile}"; } ConnectionHelper.Connect(connectionString); using (var uow = new UnitOfWork()) InitDataHelper.Seed(uow); } static void ConfigInit() { AdcConst.MinWaitTime = ToolConfig.GetAppSetting("AdWaitTime").To(10); string baseHttpAddr = ToolConfig.GetAppSetting("AdBaseAddr"); AdcConst.BaseHttpAddr = baseHttpAddr.AppendUrlSuffix("api/"); RefManager.RefFindMin = ToolConfig.GetAppSetting("RefTimeOut").To(10); SpsConst.UseGpuDdc = ToolConfig.GetAppSetting("UseGpuDdc").To(false); SpsConst.EnableCatchFixError = ToolConfig.GetAppSetting("EnableCatchFixError").To(false); SpsConst.NoRefIsValidPos = ToolConfig.GetAppSetting("NoRefIsValidPos").To(true); SpsConst.DfoLocTurn = (long)(ToolConfig.GetAppSetting("DfoLocTurn").To(2225d) * 1e6); SpsConst.DefaultStdfErr = ToolConfig.GetAppSetting("DefaultStdfErr").To(0d); SpsConst.EnableLocGdopErr = ToolConfig.GetAppSetting("EnableLocGdopErr").To(false); SpsConst.EnableDtfLoc32 = ToolConfig.GetAppSetting("EnableDtfLoc32").To(false); SpsConst.EnablEphTle = ToolConfig.GetAppSetting("EnablEphTle").To(false); ChsLocalizer.UseChs(); } private static Assembly ResolveAssembly(AssemblyLoadContext alc, AssemblyName assemblyName) { string pathMaybe = Path.Combine(AppContext.BaseDirectory, "AddIns", $"{assemblyName.Name}.dll"); if (File.Exists(pathMaybe)) return alc.LoadFromAssemblyPath(pathMaybe); return null; } } }