using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using BlueWest.Core; using BlueWest.Tools; using BlueWest.WebApi.Interfaces; namespace BlueWest.WebApi { public class Program { public static EventManager EventManager { get; set; } private static ThreadServer _threadServer; /*private static CSharpCompilation GenerateCode(string sourceCode) { var codeString = SourceText.From(sourceCode); var parsedSyntaxTree = SyntaxFactory.ParseSyntaxTree(codeString, CSharpParseOptions.Default); return CSharpCompilation.Create("Hello.dll", new[] { parsedSyntaxTree }, references: ReferenceAssemblies.Net50, // install jared's Basic.Reference.Assemblies for this, otherwise, you are going to manually add the DLLs you want options: new CSharpCompilationOptions(OutputKind.ConsoleApplication, optimizationLevel: OptimizationLevel.Release)); }*/ public static IHost Host1 { get; private set; } public static void Main(string[] args) { Host1 = CreateHostBuilder(args) .UseContentRoot(Directory.GetCurrentDirectory()) .Build(); Host1.RunAsync(); var tryGetEventManager = Host1.Services.GetService(typeof(EventManager)); try { _ = Host1.Services.GetService(typeof(ExchangeInterface)); } catch (Exception e) { if (e is InvalidOperationException exception) { if (e.Source == "Pomelo.EntityFrameworkCore.MySql") { throw new InvalidOperationException("MySQL Error"); } } throw; } if(tryGetEventManager == null) Console.WriteLine($"Failed to get {nameof(EventManager)} Service."); if (tryGetEventManager is EventManager eventManager) { // Use RunASync System.Threading.Thread.Sleep(2500); _threadServer = new ThreadServer(eventManager); _threadServer.Init(); } } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); }); } }