ServiceCollection не содержит определения для AddScoped, и не удалось найти доступный метод расширения, принимающий первый аргумент типа

У меня есть служба 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>() я получаю сообщение об ошибке

Код серьезности Описание Ошибка состояния подавления строки файла проекта CS1061 «ServiceCollection» не содержит определения для «AddScoped», и не удалось найти доступный метод расширения «AddScoped», принимающий первый аргумент типа «ServiceCollection» (вы пропустили директиву using или ссылка на сборку?)

Кто-нибудь еще сталкивался с этой же проблемой?


person Sibeesh Venu    schedule 01.08.2019    source источник
comment
хммм, ну, у вас не хватает директивы using или ссылки на сборку?   -  person Selvin    schedule 01.08.2019
comment
Я чувствую, что должен быть дубликат, но я не смог его найти, поэтому +1 (хотя тривиальное исправление)   -  person A Friend    schedule 01.08.2019
comment
Да я тоже сначала думал, потом не нашел. Вот почему я опубликовал это. Спасибо   -  person Sibeesh Venu    schedule 01.08.2019


Ответы (1)


Наконец-то я смог разобраться в проблеме. Проблема заключалась в том, что мне не хватало ссылки на Microsoft.Extensions.DependencyInjection.Abstractions. Обычно это будет добавлено в ваши пакеты при установке пакета Microsoft.Extensions.DependencyInjection, похоже, что оно не было автоматически добавлено в мое решение. И после того, как я добавил Microsoft.Extensions.DependencyInjection.Abstractions, ошибка сборки исчезла.

Вы также можете попробовать удалить пакет Microsoft.Extensions.DependencyInjection, а затем переустановить его и проверить, добавляет ли он Microsoft.Extensions.DependencyInjection.Abstractions по умолчанию.

введите здесь описание изображения

Надеюсь, поможет.

person Sibeesh Venu    schedule 01.08.2019