2016-11-21 4 views
0

Сегодня (11 ноября 2016 г.) Я загрузил новую версию Visual Studio 2017 RC, установил .NET Core 1.1 и настроил проект Web Api (ASP.NET Core Web Application (.NET Core)). Затем я следовал инструкциям на how to read app settings from a config file. Это отлично работает.Как читать конфигурацию .Net Core в стандартной библиотеке классов?

Затем я создал новый проект в том же решении. Это была Class Library (.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?

ответ

2

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

+0

Спасибо за ваш ответ! Это заставило меня проверить, возможно, недостающие ссылки. Оказывается, я ссылался на * Microsoft.Extensions.Configuration (1.1.0) *, но не * Microsoft.Extensions.Options.ConfigurationExtensions (1.1.0) *. После очередной перезагрузки VS 2017 это, наконец, сработало! – Halvard

 Смежные вопросы

  • Нет связанных вопросов^_^