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