Dlaczego program Visual Studio informuje mnie, że metoda AddJsonFile () nie została zdefiniowana?

87

Opracowuję projekt ASP.NET 5 WebAPI przy użyciu VS Ultimate 2015 Preview. Próbuję skonfigurować aplikację w ten sposób (numery linii to tylko wskazówki):

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 }

W wierszu 8 pojawia się błąd: „Konfiguracja” nie zawiera definicji dla „AddJsonFile” ...

Co jest nie tak?

NetCito
źródło

Odpowiedzi:

206

Microsoft.Extensions.Configuration.JsonJeśli chcesz wywołać .AddJsonFile()metodę, musisz dołączyć pakiet NuGet .

Zobacz: https://github.com/aspnet/Configuration/tree/dev/src/Microsoft.Framework.ConfigurationModel.Json

Aby uzyskać więcej informacji, zapoznaj się z fajnym samouczkiem: ASP.NET vNext Moving Parts: IConfiguration .

Lonig
źródło
9
Od RC2 jest teraz Microsoft.Extensions.ConfigurationiMicrosoft.Extensions.Configuration.Json
Chris S
5
Aby dokładniej określić komentarz dodany przez Chrisa: Od 22.07.2016 należy dodać Microsoft.Extensions.Configuration.Jsonjako zależność w swoim pliku project.json , a następnie dodać using Microsoft.Extensions.Configurationdo klasy Startup.cs .
Tormod Haugene
2
Linki są zepsute
WPFUser
Ta odpowiedź jest nadal przydatna cztery lata później!
MEMark
24

Wiem, że jest to trochę stare, ale właśnie napotkałem ten problem podczas próby zbudowania mojego pierwszego pustego projektu Asp.net core 1.0. Aby użyć tej AddJsonFilemetody, musisz dodać odwołanie Microsoft.Extensions.Configuration.Jsondo swojego projektu za pośrednictwem Nuget .

Aby zainstalować odniesienie, uruchom poniższe polecenie w konsoli menedżera pakietów:

PM> Install-Package Microsoft.Extensions.Configuration.Json
WBuck
źródło
4

Na wypadek, gdyby ktoś miał z tym problem, Microsoft wprowadził istotne zmiany w tej części frameworka 16 sierpnia 2015 r. Należy zaimportować odpowiednie wersje zależności i przejść na nowy sposób tworzenia konfiguracji.

Moja konfiguracja obejmuje:

{
  "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-*"
  },
...
}

Ten kod, zainspirowany tym pytaniem, może ci pomóc:

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; }
    }
...

}

Mam nadzieję, że to pomoże.

John Thow
źródło
Microsoft zmienił to ponownie - zamiast tego zobacz odpowiedź
WBucka
1

W pliku project.json musisz dodać go w ramach zależności

dependencies {
"Microsoft.Extensions.Configuration.Json": "1.0.0"
}
D.AhmedRafik
źródło