เหตุใด Visual Studio จึงบอกฉันว่าไม่ได้กำหนดเมธอด AddJsonFile ()


88

ฉันกำลังพัฒนาโครงการ 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 ทำให้ฉันมีข้อผิดพลาด: 'Configuration' ไม่มีคำจำกัดความสำหรับ 'AddJsonFile' ...

เกิดอะไรขึ้น?

คำตอบ:


210

คุณต้องรวมMicrosoft.Extensions.Configuration.Jsonแพ็กเกจ NuGet หากคุณต้องการเรียกใช้.AddJsonFile()เมธอด

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

สำหรับการอ่านเพิ่มเติมที่นี่สอนดี: ASP.NET vNext ย้ายชิ้นส่วน: IConfiguration


9
ตั้งแต่ RC2 ตอนนี้Microsoft.Extensions.ConfigurationและMicrosoft.Extensions.Configuration.Json
Chris S

5
หากต้องการระบุความคิดเห็นเพิ่มเติมโดย Chris: ณ วันที่ 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 แทน
r590

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.