Program.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using DevExpress.CodeParser;
  2. using DevExpress.Utils.Localization;
  3. using DevExpress.Xpo;
  4. using DevExpress.XtraGrid.Localization;
  5. using DevExpress.XtraReports.Native.Templates;
  6. using DevExpress.XtraSplashScreen;
  7. using Ips.AdcAlgorithm;
  8. using Ips.Library;
  9. using Ips.Library.Basic;
  10. using Ips.Library.Basic.IO;
  11. using Ips.Library.DxpLib;
  12. using Ips.Library.Entity;
  13. using Ips.Library.LocLib;
  14. using Ips.LocAlgorithm;
  15. using Ips.Sps.Refs;
  16. using Ips.Sps.Scheduling.SigLocs;
  17. using Ips.Sps.Store;
  18. using System.Configuration;
  19. using System.Diagnostics;
  20. using System.IO;
  21. using System.Reflection;
  22. using System.Runtime.CompilerServices;
  23. using System.Runtime.Loader;
  24. using System.Text;
  25. namespace Ips.Sps.Host.Win
  26. {
  27. internal static class Program
  28. {
  29. [STAThread]
  30. static void Main()
  31. {
  32. AssemblyLoadContext.Default.Resolving += ResolveAssembly;
  33. AppHelper.OneStart(SpsConst.AppName, () =>
  34. {
  35. AppHelper.InitAppSettings();
  36. XpoInit();
  37. ConfigInit();
  38. Application.EnableVisualStyles();
  39. Application.SetCompatibleTextRenderingDefault(false);
  40. Application.SetHighDpiMode(HighDpiMode.SystemAware);
  41. SplashScreenManager.ShowForm(typeof(SpsSplashScreen));
  42. var mainWin = new MainWin() { Text = SpsConst.AppName };
  43. Application.Run(mainWin);
  44. });
  45. }
  46. static void XpoInit()
  47. {
  48. string connectionString = ConfigurationManager.ConnectionStrings["spsdb"]?.ConnectionString;
  49. if (connectionString.IsNullOrWhitespace())
  50. {
  51. //var dbPath = DriveUtil.GetMaxDrivePath("spsdata");
  52. //DirectoryUtil.CreateIfNotExists(dbPath);
  53. //var dbFile = Path.Combine(dbPath, "sps2.db");
  54. //var dbFile = Path.Combine(Application.StartupPath, "AppData", "sps2.db");
  55. var dbFile = Path.Combine(Application.StartupPath, "AppData", "spsdb", "sps.db");
  56. if (!File.Exists(dbFile))
  57. {
  58. string emptydb = Path.Combine(Application.StartupPath, "AppData", "spsdb", "sps_init.db");
  59. File.Copy(emptydb, dbFile);
  60. }
  61. connectionString = $"XpoProvider=SQLite;Data Source={dbFile}";
  62. }
  63. ConnectionHelper.Connect(connectionString);
  64. using (var uow = new UnitOfWork())
  65. InitDataHelper.Seed(uow);
  66. }
  67. static void ConfigInit()
  68. {
  69. AdcConst.MinWaitTime = ToolConfig.GetAppSetting("AdWaitTime").To(10);
  70. string baseHttpAddr = ToolConfig.GetAppSetting("AdBaseAddr");
  71. AdcConst.BaseHttpAddr = baseHttpAddr.AppendUrlSuffix("api/");
  72. RefManager.RefFindMin = ToolConfig.GetAppSetting("RefTimeOut").To(10);
  73. SpsConst.UseGpuDdc = ToolConfig.GetAppSetting("UseGpuDdc").To(false);
  74. SpsConst.EnableCatchFixError = ToolConfig.GetAppSetting("EnableCatchFixError").To(false);
  75. SpsConst.NoRefIsValidPos = ToolConfig.GetAppSetting("NoRefIsValidPos").To(true);
  76. SpsConst.DfoLocTurn = (long)(ToolConfig.GetAppSetting("DfoLocTurn").To(2225d) * 1e6);
  77. SpsConst.DefaultStdfErr = ToolConfig.GetAppSetting("DefaultStdfErr").To(0d);
  78. SpsConst.EnableLocGdopErr = ToolConfig.GetAppSetting("EnableLocGdopErr").To(false);
  79. SpsConst.EnableDtfLoc32 = ToolConfig.GetAppSetting("EnableDtfLoc32").To(false);
  80. SpsConst.EnablEphTle = ToolConfig.GetAppSetting("EnablEphTle").To(false);
  81. ChsLocalizer.UseChs();
  82. }
  83. private static Assembly ResolveAssembly(AssemblyLoadContext alc, AssemblyName assemblyName)
  84. {
  85. string pathMaybe = Path.Combine(AppContext.BaseDirectory, "AddIns", $"{assemblyName.Name}.dll");
  86. if (File.Exists(pathMaybe))
  87. return alc.LoadFromAssemblyPath(pathMaybe);
  88. return null;
  89. }
  90. }
  91. }