示例#1
0
        /// <summary>
        /// 初始化系统
        /// </summary>
        /// <param name="args"></param>
        public static void PreWorks(string[] args)
        {
            RayConfiguration.Root = new ConfigurationBuilder()
                                    .AddJsonFile("appsettings.json", false, true)
                                    //.AddJsonFile("appsettings.local.json", true,true)
                                    .AddExcludeEmptyEnvironmentVariables("Ray_")
                                    .AddCommandLine(args, Constants.CommandLineMapper)
                                    .Build();


            //日志:
            Log.Logger = new LoggerConfiguration()
                         .ReadFrom.Configuration(RayConfiguration.Root)
                         .WriteTo.TextWriter(PushService.PushStringWriter,
                                             GetConsoleLogLevel(),
                                             GetConsoleLogTemplate() + "\r\n")//用来做微信推送
                         .CreateLogger();

            var dictionary = Environment.GetEnvironmentVariables()
                             .Cast <DictionaryEntry>()
                             .Where(it => it.Key.ToString().StartsWith("Ray_", StringComparison.OrdinalIgnoreCase))
                             .ToDictionary(it => it.Key.ToString(), it => it.Value.ToString());

            System.Console.WriteLine("env:" + JsonSerializer.Serialize(dictionary, JsonSerializerOptionsBuilder.Builder(x => x.WriteIndented = true)));

            var nc = RayConfiguration.Root["DailyTaskConfig:NumberOfCoins"];

            Log.Logger.Information($"空:{nc == ""}");
            Log.Logger.Information($"null:{nc == null}");
            Log.Logger.Information($"空格:{nc == " "}");
            Log.Logger.Information($"5:{nc == "5"}");
            Log.Logger.Information($"10:{nc == "10"}");
            Log.Logger.Information($"20:{nc == "20"}");

            int.TryParse(nc, out int result);
            Log.Logger.Information($"value+1:{result + 1}");

            System.Console.WriteLine("test");

            //Host:
            var hostBuilder = new HostBuilder()
                              .ConfigureServices((hostContext, services) =>
            {
                services.AddSingleton <IConfiguration>(RayConfiguration.Root);
                services.AddBiliBiliConfigs(RayConfiguration.Root);
                services.AddBiliBiliClientApi();
                services.AddDomainServices();
                services.AddAppServices();
            })
                              .UseSerilog()
                              .UseConsoleLifetime();

            RayContainer.Root = hostBuilder.Build().Services;
        }
        public override void Load()
        {
            var dictionary = Environment.GetEnvironmentVariables()
                             .Cast <DictionaryEntry>()
                             .Where(it => it.Key.ToString().StartsWith(prefix, StringComparison.OrdinalIgnoreCase) &&
                                    !string.IsNullOrWhiteSpace(it.Value.ToString()))//过滤掉空值的(使用GitHub Actions的脚本传入环境变量,空值会覆盖,本地并不会,所以这里做了特殊处理)
                             .ToDictionary(it => it.Key.ToString().Substring(prefix.Length), it => it.Value.ToString());

            System.Console.WriteLine(JsonSerializer.Serialize(dictionary, JsonSerializerOptionsBuilder.Builder(x => x.WriteIndented = true)));

            this.Data = new Dictionary <string, string>(dictionary, StringComparer.OrdinalIgnoreCase);
        }