Почему Visual Studio сообщает мне, что метод AddJsonFile () не определен?


87

Я разрабатываю проект ASP.NET 5 WebAPI с использованием VS Ultimate 2015 Preview. Я пытаюсь настроить приложение таким образом (номера строк - это просто ориентиры):

1 using Microsoft.Framework.ConfigurationModel;
2
3 public IConfiguration Configuration { get; private set; }
4 
5 public Startup()
6 {
7     Configuration = new Configuration()
8         .AddJsonFile("config.json")
9         .AddEnvironmentVariables();
10 }

Строка 8 дает мне ошибку: «Конфигурация» не содержит определения для «AddJsonFile» ...

Что не так?

Ответы:


206

Вам нужно включить Microsoft.Extensions.Configuration.Jsonпакет NuGet, если вы хотите вызвать .AddJsonFile()метод.

См. Https://github.com/aspnet/Configuration/tree/dev/src/Microsoft.Framework.ConfigurationModel.Json

Для дальнейшего чтения вот хороший учебник: ASP.NET vNext Moving Parts: IConfiguration .


9
С RC2 это сейчас Microsoft.Extensions.ConfigurationиMicrosoft.Extensions.Configuration.Json
Chris S

5
Чтобы дополнительно указать комментарий, добавленный Крисом: С 22.07.2016 вы должны добавить Microsoft.Extensions.Configuration.Jsonв качестве зависимости в файл project.json , а затем добавить using Microsoft.Extensions.Configurationв свой класс Startup.cs .
Tormod Haugene

2
Ссылки не работают
WPFUser

Этот ответ все еще актуален четыре года спустя!
MEMark

24

Я знаю, что это немного устарело, но я столкнулся с этой проблемой при попытке создать свой первый пустой проект Asp.net core 1.0. Чтобы использовать AddJsonFileметод, вы должны добавить ссылку Microsoft.Extensions.Configuration.Jsonна свой проект через Nuget .

Чтобы установить ссылку, выполните следующую команду в консоли диспетчера пакетов:

PM> Install-Package Microsoft.Extensions.Configuration.Json

4

На случай, если у кого-то еще возникнут проблемы с этим, Microsoft внесла критические изменения в эту часть инфраструктуры 16 августа 2015 года. Вы должны импортировать правильные версии зависимостей и переключиться на новый способ создания конфигурации.

Моя конфигурация включает:

{
  "webroot": "wwwroot",
  "version": "1.0.0-*",

  "dependencies": {
    "Microsoft.Framework.Runtime": "1.0.0-*",
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta7",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta7",
    "Microsoft.AspNet.Mvc": "6.0.0-beta7",
    "Microsoft.Framework.Configuration": "1.0.0-beta7",
    "Microsoft.Framework.Configuration.Json": "1.0.0-*"
  },
...
}

Этот код, навеянный этим вопросом, может как-то помочь вам:

using System;
using Microsoft.AspNet.Builder;
using Microsoft.Framework.DependencyInjection;
using Messenger.Services;
using Microsoft.Framework.Configuration;
using Microsoft.Dnx.Runtime;
using Microsoft.AspNet.Hosting;

namespace Messenger
{
    public class Startup
    {
        public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
        {
            var configurationBuilder = new ConfigurationBuilder(appEnv.ApplicationBasePath)
                .AddJsonFile("config.json")
                .AddEnvironmentVariables();
            Configuration = configurationBuilder.Build();
        }

        public IConfiguration Configuration { get; set; }
    }
...

}

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


Microsoft снова изменила его - вместо этого см. Ответ
WBuck

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.