/// <summary> /// 添加模块 /// </summary> /// <param name="services"></param> /// <param name="contentRootPath"></param> /// <returns></returns> public static IServiceCollection AddModules(this IServiceCollection services, string contentRootPath) { GlobalConfiguration.Modules = _moduleConfigurationManager.GetModules(); ModuleAssemblyLoadContext context = new ModuleAssemblyLoadContext(); foreach (var module in GlobalConfiguration.Modules) { // var moduleFolder = new DirectoryInfo(Path.Combine(contentRootPath, $@"Modules\{module.Id}\{module.Id}.dll")); using FileStream fs = new FileStream(moduleFolder.FullName, FileMode.Open); module.Assembly = context.LoadFromStream(fs); // RegisterModuleInitializerServices(module, ref services); } return(services); }
/// <summary> /// 添加模块 /// </summary> /// <param name="services"></param> /// <param name="contentRootPath"></param> /// <returns></returns> public static IServiceCollection AddModules(this IServiceCollection services, string contentRootPath) { try { GlobalConfiguration.Modules = _moduleConfigurationManager.GetModules(); ModuleAssemblyLoadContext context = new ModuleAssemblyLoadContext(); foreach (var module in GlobalConfiguration.Modules) { var dllFilePath = Path.Combine(contentRootPath, $@"Modules/{module.Id}/{module.Id}.dll"); var moduleFolder = new DirectoryInfo(dllFilePath); if (File.Exists(moduleFolder.FullName)) { using FileStream fs = new FileStream(moduleFolder.FullName, FileMode.Open); module.Assembly = context.LoadFromStream(fs); // RegisterModuleInitializerServices(module, ref services); } else { _logger.Warn($"{dllFilePath} file is not find!"); } //处理视图文件程序集加载 var viewsFilePath = Path.Combine(contentRootPath, $@"Modules/{module.Id}/{module.Id}.Views.dll"); moduleFolder = new DirectoryInfo(viewsFilePath); if (File.Exists(moduleFolder.FullName)) { using FileStream viewsFileStream = new FileStream(moduleFolder.FullName, FileMode.Open); module.ViewsAssembly = context.LoadFromStream(viewsFileStream); } else { _logger.Warn($"{viewsFilePath} file is not find!"); } } } catch (Exception ex) { _logger.Error(ex); } return(services); }