c# - لماذا يخبرني Visual Studio أن الأسلوب AddJsonFile() لم يتم تعريفه؟




configuration configuration-files (3)

أقوم بتطوير مشروع ASP.NET 5 WebAPI باستخدام معاينة VS Ultimate 2015. أحاول تكوين التطبيق بهذه الطريقة (أرقام الأسطر هي مجرد أدلة):

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

ما المشكله؟


أعرف أن هذا قديم بعض الشيء لكنني واجهت هذه المشكلة فقط عند محاولة إنشاء أول مشروع فارغ Asp.net core 1.0. لاستخدام طريقة AddJsonFile ، يجب عليك إضافة مرجع إلى Microsoft.Extensions.Configuration.Json إلى مشروعك عبر Nuget.

لتثبيت المرجع ، قم بتشغيل الأمر أدناه في وحدة التحكم في إدارة الحزمة:

م> تثبيت حزمة Microsoft.Extensions.Configuration.Json


تحت project.json ستحتاج إلى إضافته ضمن التبعيات

dependencies {
"Microsoft.Extensions.Configuration.Json": "1.0.0"
}

في حال واجه أي شخص آخر مشكلة في ذلك ، أجرت 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; }
    }
...

}

آمل أن يساعد.







config.json