Чому 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 .
Тормод Хаген

2
Посилання розірвано
WPFUser

Ця відповідь все ще буде корисно через чотири роки!
ПАМ’ЯТКА

24

Я знаю, що це трохи давно, але я просто зіткнувся з цією проблемою при спробі побудувати свій перший пустий проект Asp.net core 1.0. Для того, щоб використовувати AddJsonFileметод, ви повинні додати посилання Microsoft.Extensions.Configuration.Jsonна ваш проект через Nuget .

Щоб встановити посилання, запустіть наведену нижче команду в консолі менеджера пакетів:

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

4

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

Моя конфігурація включає:

{
  "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

1

За допомогою project.json вам потрібно буде додати його в залежності

dependencies {
"Microsoft.Extensions.Configuration.Json": "1.0.0"
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.