Aspnetcore下面服务器热更新与配置热加载


Asp.net的热更新方案Appdomain在aspnetcore中不被支持了

新的方案如下:    

 配置文件更新选项

  reloadOnChange = true

   var configurationBuilder = new ConfigurationBuilder()
         .SetBasePath(Directory.GetCurrentDirectory())
         .AddJsonFile("config.json", optional: false, reloadOnChange: true)
                       .AddEnvironmentVariables();
            IConfigurationRoot configuration = configurationBuilder.Build();

            config = configuration.GetSection("Name");

把需要热更新的组件dll名称和路径写入配置文件

使用二进制流的方式加载dll组件

      var name = $"{Directory.GetCurrentDirectory()}/{config.Value}";
      using (FileStream fs = new FileStream(name, FileMode.Open, FileAccess.Read))
            {
                var alc = AssemblyLoadContext.Default;
                var asm = alc.LoadFromStream(fs);
                var types = asm.GetTypes();

                var obj = Activator.CreateInstance(types[0]) as ITest;
                obj.Test();
            }

每次更新时,需要变更dll名称

同时更改config.json的配置项

重新加载即可

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM