Why does Visual Studio tell me that the AddJsonFile() method is not defined?

88

I'm developing an ASP.NET 5 WebAPI project using VS Ultimate 2015 Preview. I'm trying to configure the app in this way (line numbers are just guides):

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 }

Line 8 gives me an error: 'Configuration' does not contain a definition for 'AddJsonFile'...

What is wrong?

NetCito
sumber

Jawaban:

210

Anda perlu menyertakan Microsoft.Extensions.Configuration.Jsonpaket NuGet jika ingin memanggil .AddJsonFile()metode tersebut.

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

Untuk bacaan lebih lanjut, inilah tutorial yang bagus: ASP.NET vNext Moving Parts: IConfiguration .

Lonig
sumber
9
Since RC2 it's now Microsoft.Extensions.Configuration and Microsoft.Extensions.Configuration.Json
Chris S
5
To further specify the comment added by Chris: As of 22.07.2016 you should add Microsoft.Extensions.Configuration.Json as a dependency in your project.json file, and then add using Microsoft.Extensions.Configuration in your Startup.cs class.
Tormod Haugene
2
Links are broken
WPFUser
This answer is still useful four years later!
MEMark
24

Saya tahu ini agak tua tetapi saya baru saja mengalami masalah ini ketika mencoba membangun proyek kosong Asp.net core 1.0 pertama saya. Untuk menggunakan AddJsonFilemetode ini, Anda harus menambahkan referensi ke Microsoft.Extensions.Configuration.Jsonproyek Anda melalui Nuget .

Untuk menginstal referensi, jalankan perintah di bawah ini di konsol manajer paket:

PM> Install-Package Microsoft.Extensions.Configuration.Json
WBuck
sumber
4

Jika ada orang lain yang mengalami masalah dengan ini, Microsoft telah membuat perubahan yang merusak pada bagian kerangka kerja ini pada 16 Agustus 2015. Anda harus mengimpor versi yang benar dari dependensi dan beralih ke cara baru untuk membangun konfigurasi.

Konfigurasi saya meliputi:

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

Kode ini, yang terinspirasi oleh pertanyaan ini mungkin bisa membantu Anda:

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

}

Semoga membantu.

John Thow
sumber
Microsoft mengubahnya lagi - lihat jawaban
WBuck
1

Di bawah project.json Anda perlu menambahkannya dalam dependensi

dependencies {
"Microsoft.Extensions.Configuration.Json": "1.0.0"
}
D. AhmedRafik
sumber