【问题标题】:Why does Visual Studio tell me that the AddJsonFile() method is not defined?为什么 Visual Studio 告诉我 AddJsonFile() 方法未定义?
【发布时间】:2015-02-07 13:17:41
【问题描述】:

我正在使用 VS Ultimate 2015 Preview 开发一个 ASP.NET 5 WebAPI 项目。我正在尝试以这种方式配置应用程序(行号仅供参考):

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”的定义...

怎么了?

【问题讨论】:

    标签: c# configuration configuration-files asp.net-core config.json


    【解决方案1】:

    如果要调用.AddJsonFile() 方法,则需要包含Microsoft.Extensions.Configuration.Json NuGet 包。

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

    为了进一步阅读,这里有一个很好的教程:ASP.NET vNext Moving Parts: IConfiguration

    【讨论】:

    • 从 RC2 开始,现在是 Microsoft.Extensions.ConfigurationMicrosoft.Extensions.Configuration.Json
    • 要进一步指定 Chris 添加的评论:截至 2016 年 7 月 22 日,您应该在 project.json 中添加 Microsoft.Extensions.Configuration.Json 作为 dependency文件,然后在您的 Startup.cs 类中添加 using Microsoft.Extensions.Configuration
    • 链接已损坏
    • 这个答案四年后仍然有用!
    【解决方案2】:

    如果其他人遇到此问题,Microsoft 已于 2015 年 8 月 16 日对框架的这一部分进行了breaking changes。您必须导入正确版本的依赖项并切换到新的构建方式配置。

    我的配置包括:

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

    this question 启发的这段代码可能会对您有所帮助:

    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 的答案
    【解决方案3】:

    我知道这有点老了,但我在尝试构建我的第一个 Asp.net core 1.0 空白项目时遇到了这个问题。为了使用AddJsonFile 方法,您必须通过NugetMicrosoft.Extensions.Configuration.Json 的引用添加到您的项目中。

    要安装参考,请在包管理器控制台中运行以下命令:

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

    【讨论】:

      【解决方案4】:

      在 project.json 下,您需要将其添加到依赖项中

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-15
        相关资源
        最近更新 更多