Как мне прочитать конфигурацию .Net Core в стандартной библиотеке классов?

Сегодня (11 ноября 2016 г.) я загрузил новую версию Visual Studio 2017 RC, установил .Net Core 1.1 и настроил проект Web Api (веб-приложение ASP.NET Core (.NET Core)). Затем я выполнил инструкции как прочтите настройки приложения из файла конфигурации. Это сработало нормально.

Затем я создал новый проект в том же решении. Это была библиотека классов (.NET Standard) в разделе .NET Core. Я добавил класс с интерфейсом и настроил его с внедрением зависимостей по умолчанию.

Наконец, я попытался использовать конфигурацию в библиотеке классов с помощью внедрения конструктора. Я получаю это сообщение об ошибке:

Не удалось найти тип или имя пространства имен 'IOptions ‹>'

Вот мой класс в библиотеке классов:

public class Firebase : IDatabase
{
    public Firebase(IOptions<AppSettings> appSettings)
    {
        //string basePath = 
    }
}  

Вот метод ConfigureServices в Startup.cs:

public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services.
        services.AddMvc();
        services.AddTransient<IDatabase, Firebase>();

        // Set up configuration files.
        services.AddOptions();
        services.Configure<AppSettings>(options => Configuration.GetSection("AppSettings").Bind(options));
    }  

Я пытался добавить

using Microsoft.Extensions.Options;  

чтобы он скомпилировался, но лампочка говорит мне, что это ненужная ссылка.

Что мне не хватает? Это невозможно? Есть ли специальная библиотека классов для .NET Core?


person Halvard    schedule 21.11.2016    source источник


Ответы (1)


В .NET Core правильно работать с IOptions{T}. Visual Studio 2017 указывает на ненужное использование. Это немного сбивает с толку, потому что Visual Studio указывает на это, когда указатель находится на Microsoft.Extensions.Options using. Что касается предложения, которое делает Visual Studio, оно не удаляет Microsoft.Extensions.Options using, а удаляет другие варианты использования e.q. `Система.

person Martijn van Put    schedule 21.11.2016
comment
Спасибо за Ваш ответ! Это заставило меня проверить, возможно, отсутствующие ссылки. Оказывается, я ссылался на Microsoft.Extensions.Configuration (1.1.0), но не на Microsoft.Extensions.Options.ConfigurationExtensions (1.1.0). После еще одного перезапуска VS 2017 это наконец сработало! - person Halvard; 22.11.2016