ServiceCollection 不包含 AddScoped 的定义,并且找不到接受类型的第一个参数的可访问扩展方法
ServiceCollection does not contain a definition for AddScoped and no accessible extension method accepting a first argument of type could be found
我有一个 windows 服务,它使用 Quartz
来安排任务。我正在尝试实现 Dependency Injection
,因为默认情况下 Quartz
不支持默认 Job Factory
。所以我必须创建一个自定义 Job Factory
如下。
var scheduler = await GetScheduler();
var serviceProvider = GetConfiguredServiceProvider();
scheduler.JobFactory = new CustomJobFactory(serviceProvider);
下面是我的代码 GetConfiguredServiceProvider()
。
private IServiceProvider GetConfiguredServiceProvider() {
var services = new ServiceCollection()
.AddScoped<IDailyJob, DailyJob>()
.AddScoped<IWeeklyJob, WeeklyJob>()
.AddScoped<IMonthlyJob, MonthlyJob>()
.AddScoped<IHelperService, HelperService>();
return services.BuildServiceProvider();
}
但是在 .AddScoped<IDailyJob, DailyJob>()
行我收到一个错误
Severity Code Description Project File Line Suppression State
Error CS1061 'ServiceCollection' does not contain a definition for
'AddScoped' and no accessible extension method 'AddScoped' accepting a
first argument of type 'ServiceCollection' could be found (are you
missing a using directive or an assembly
reference?)
还有其他人遇到同样的问题吗?
我终于弄清楚了问题所在。问题是我缺少 Microsoft.Extensions.DependencyInjection.Abstractions
的参考。通常这会在您安装 Microsoft.Extensions.DependencyInjection
包时添加到您的包中,但似乎不知何故它并没有自动添加到我的解决方案中。在我添加 Microsoft.Extensions.DependencyInjection.Abstractions
之后,构建错误消失了。
您也可以尝试删除软件包 Microsoft.Extensions.DependencyInjection
然后重新安装它并检查它是否默认添加 Microsoft.Extensions.DependencyInjection.Abstractions
。
希望对您有所帮助。
我有一个 windows 服务,它使用 Quartz
来安排任务。我正在尝试实现 Dependency Injection
,因为默认情况下 Quartz
不支持默认 Job Factory
。所以我必须创建一个自定义 Job Factory
如下。
var scheduler = await GetScheduler();
var serviceProvider = GetConfiguredServiceProvider();
scheduler.JobFactory = new CustomJobFactory(serviceProvider);
下面是我的代码 GetConfiguredServiceProvider()
。
private IServiceProvider GetConfiguredServiceProvider() {
var services = new ServiceCollection()
.AddScoped<IDailyJob, DailyJob>()
.AddScoped<IWeeklyJob, WeeklyJob>()
.AddScoped<IMonthlyJob, MonthlyJob>()
.AddScoped<IHelperService, HelperService>();
return services.BuildServiceProvider();
}
但是在 .AddScoped<IDailyJob, DailyJob>()
行我收到一个错误
Severity Code Description Project File Line Suppression State Error CS1061 'ServiceCollection' does not contain a definition for 'AddScoped' and no accessible extension method 'AddScoped' accepting a first argument of type 'ServiceCollection' could be found (are you missing a using directive or an assembly reference?)
还有其他人遇到同样的问题吗?
我终于弄清楚了问题所在。问题是我缺少 Microsoft.Extensions.DependencyInjection.Abstractions
的参考。通常这会在您安装 Microsoft.Extensions.DependencyInjection
包时添加到您的包中,但似乎不知何故它并没有自动添加到我的解决方案中。在我添加 Microsoft.Extensions.DependencyInjection.Abstractions
之后,构建错误消失了。
您也可以尝试删除软件包 Microsoft.Extensions.DependencyInjection
然后重新安装它并检查它是否默认添加 Microsoft.Extensions.DependencyInjection.Abstractions
。
希望对您有所帮助。