Не удается прочитать appsettings.json без внедрения зависимостей из-за отсутствия построителя конфигураций.

Я пытаюсь читать из appsettings.json и не хочу использовать DI. Я просто хочу получить доступ к файлу. Я следую простой конфигурации, как было предложено по MS.

using System.IO;
using Microsoft.Extensions.Configuration;

class Program
{
  public static IConfigurationRoot Configuration { get; set; }

  static void Main(string[] args)
  {
    IConfigurationBuilder builder = new ConfigurationBuilder()
      .SetBasePath(Directory.GetCurrentDirectory())
      .AddJsonFile("appsettings.json");

    Configuration = builder.Build();
  }
}

Когда я указываю ссылку на Microsoft.Extensions.Configuration, классы переходят от красного выделения к зеленому, за исключением одного — создания экземпляра Configuration Builder. Выдает следующую ошибку.

Ошибка CS0246 Не удалось найти имя типа или пространства имен «ConfigurationBuilder» (вы пропустили директиву использования или ссылку на сборку?)

Все примеры, которые я нашел, настроены одинаково. Даже в документах для Configuration Builder говорится что он должен быть там. Я в недоумении, как поступить.

Я использую .NET Core 2.0, если это имеет какое-либо значение.


person Community    schedule 09.09.2017    source источник
comment
это странно, я создал такое же консольное приложение, и это не проблема. Вы создаете новое пустое консольное приложение .net Core 2.0?   -  person kloarubeek    schedule 09.09.2017
comment
Вы добавили правильный пакет? без мета-пакета ASP.NET Core, который вам нужен, чтобы ссылаться на него самостоятельно. P.S. вопрос совершенно не связан с DI, поскольку конфигурация никогда не требовала этого, а новое ключевое слово использовалось даже в ASP:NET Core.   -  person Tseng    schedule 09.09.2017
comment
@kloarubeek Я тоже не могу этого объяснить. Вы можете подтвердить, что пакет Microsoft.Extensions.Configuration.Json установлен? Мне любопытно, потому что, когда я его установил (вот так) , как предложено в ответе ниже, я заставил его работать. Пожалуйста, проверьте Dependecies/NuGet в Обозревателе решений (по какой-то причине он не отображается в моем Обозревателе решений NuGet).   -  person    schedule 10.09.2017
comment
@Tseng Возможно, я стал жертвой того, что MS помогла мне с шаблоном проекта, из-за чего я не знал, что мне нужны некоторые вещи. Рад это узнать, спасибо. Какой именно пакет вы предлагаете ConfigurationBuilder в in? Я ожидаю, что он будет таким же, как IConfigurationBuilder, и, как я упоминаю в своем вопросе, действительно работал.   -  person    schedule 10.09.2017
comment
Да, я оставил только Microsoft.Extensions.Configuration и Microsoft.Extensions.Configuration.Json, так что, вероятно, это связано с отсутствующим .AddJsonFile.   -  person kloarubeek    schedule 10.09.2017
comment
Если вы ищете пакет, содержащий определенный класс и/или метод расширения, используйте Reverse Package Microsoft/.NET Core Team. Выполните поиск, чтобы найти его. т. е. packagesearch.azurewebsites.net/?q=AddJsonFile   -  person Tseng    schedule 10.09.2017


Ответы (2)


AddJsonFile находится в пакете Microsoft.Extensions.Configuration.Json и в пространстве имен Microsoft.Extensions.Configuration.

Поэтому в проект необходимо добавить пакет Microsoft.Extensions.Configuration.Json. После того, как все пакеты восстановлены успешно, он работает отлично. Если вы уже добавили их, другая ошибка может блокировать сборку до того, как эта точка будет скомпилирована.

person nandithakw    schedule 10.09.2017

У меня было нечто подобное. Я уже ссылался на ConfigurationBuilder и работал над другим проектом того же решения.

Я скопировал/вставил код ConfigurationBuilder в новый проект и получил ту же проблему, что и вы.

Я просмотрел установленные пакеты NuGet для решения.

Конечно, Microsoft.Extensions.Configuration.Json был установлен для рабочего проекта, но не для нового.

Установил его для нового проекта и вуаля.

person riemannzz    schedule 19.01.2019