該文章是系列文章 基於.NetCore和ABP框架如何讓Windows服務執行Quartz定時做業 的其中一篇。html
Windsor是ABP框架自帶的IOC容器。
關於什麼是IOC,你能夠Bing或者Google一下,英文不錯的話推薦看一看 https://www.tutorialsteacher.com/ioc。
更多關於Castle Windsor 能夠閱讀下列文章git
如今比較經常使用的DI組件能夠訪問awesome系列查看:github
問題點在於ABP框架使用的是Castle Windsor,而微軟提供的官方容器是Microsoft.Extensions.DependencyInjection。json
這就涉及到一個使用Castle Windsor替換Microsoft.Extensions.DependencyInjection的問題。
Castle Windsor提供了註冊的方法,本身實現的話,能夠經過循環訪問微軟自帶DI容器,將其一一註冊到Castle Windsor容器。app
也能夠nuget引用一個包:Castle.Windsor.MsDependencyInjection,源碼查看:https://github.com/volosoft/castle-windsor-ms-adapter框架
代碼改自如何在控制檯應用(.Net Core)使用appsettings.json配置,須要再添加兩個包ide
Microsoft.Extensions.Hosting Castle.Windsor.MsDependencyInjection
須要添加如下代碼函數
public IConfiguration AppConfiguration { get; set; } public override void PreInitialize() { var host = new HostBuilder().ConfigureAppConfiguration((hostContext, configApp) => { var hostingEnvironment = hostContext.HostingEnvironment; AppConfiguration = AppConfigurations.Get(hostingEnvironment.ContentRootPath, hostingEnvironment.EnvironmentName); }).ConfigureServices((hostContext, services) => { services.AddSingleton(AppConfiguration); WindsorRegistrationHelper.CreateServiceProvider(IocManager.IocContainer, services); }); host.Build(); }