Sib*_*enu 2 c# windows-services dependency-injection quartz-scheduler service-provider
我有一个Quartz用于安排任务的 Windows 服务。而且我试图在Dependency Injection默认情况下实现asQuartz不支持 default Job Factory。所以我必须创建一个自定义Job Factory如下。
var scheduler = await GetScheduler();
var serviceProvider = GetConfiguredServiceProvider();
scheduler.JobFactory = new CustomJobFactory(serviceProvider);
Run Code Online (Sandbox Code Playgroud)
下面是我的代码GetConfiguredServiceProvider()。
private IServiceProvider GetConfiguredServiceProvider() {
var services = new ServiceCollection()
.AddScoped<IDailyJob, DailyJob>()
.AddScoped<IWeeklyJob, WeeklyJob>()
.AddScoped<IMonthlyJob, MonthlyJob>()
.AddScoped<IHelperService, HelperService>();
return services.BuildServiceProvider();
}
Run Code Online (Sandbox Code Playgroud)
但在线上.AddScoped<IDailyJob, DailyJob>()我收到一个错误
严重性代码说明项目文件行抑制状态错误 CS1061“ServiceCollection”不包含“AddScoped”的定义,并且找不到接受“ServiceCollection”类型的第一个参数的可访问扩展方法“AddScoped”(您是否缺少 using 指令或汇编参考?)
还有其他人遇到过同样的问题吗?
最后我能够弄清楚这个问题。问题是我缺少Microsoft.Extensions.DependencyInjection.Abstractions. 通常这会在您安装软件包时添加到您的Microsoft.Extensions.DependencyInjection软件包中,似乎它没有自动添加到我的解决方案中。在我添加之后Microsoft.Extensions.DependencyInjection.Abstractions,构建错误消失了。
您也可以尝试删除该软件包Microsoft.Extensions.DependencyInjection,然后重新安装它并检查它是否Microsoft.Extensions.DependencyInjection.Abstractions默认添加了该软件包。
希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
2771 次 |
| 最近记录: |