using System.Reflection; using Com.Ctrip.Framework.Apollo; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Sln.Wcs.HikRoBotSdk; using Sln.Wcs.Serilog; namespace Sln.Wcs { public class Program { static async Task Main(string[] args) { var services = new ServiceCollection(); ConfigureServices(services); var serviceProvider = services.BuildServiceProvider(); serviceProvider.UseSerilogExtensions(); var config = serviceProvider.GetService(); var log = serviceProvider.GetService(); log.Info($"系统启动成功,日志存放位置:{config["logPath"]}"); } private static void ConfigureServices(IServiceCollection services) { #region Apollo配置 var basePath = AppContext.BaseDirectory; var localConfiguration = new ConfigurationBuilder() .SetBasePath(basePath) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .Build(); var apolloConfigSection = localConfiguration.GetSection("apollo"); services.AddSingleton(localConfiguration); var configurationBuilder = new ConfigurationBuilder() .SetBasePath(basePath) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddApollo(apolloConfigSection) .AddDefault(); var apolloConfiguration = configurationBuilder.Build(); services.Remove(new ServiceDescriptor(typeof(IConfiguration), localConfiguration)); services.AddSingleton(apolloConfiguration); #endregion Assembly[] assemblies = { Assembly.LoadFrom(Path.Combine(basePath, "Sln.Wcs.Common.dll")), Assembly.LoadFrom(Path.Combine(basePath, "Sln.Wcs.HikRoBotApi.dll")), Assembly.LoadFrom(Path.Combine(basePath, "Sln.Wcs.HikRoBotSdk.dll")), }; services.Scan(scan => scan.FromAssemblies(assemblies) .AddClasses() .AsImplementedInterfaces() .AsSelf() .WithTransientLifetime()); services.AddSingleton(typeof(SerilogHelper)); } } }