为啥 Visual Studio 告诉我 AddJsonFile() 方法未定义?
Posted
技术标签:
【中文标题】为啥 Visual Studio 告诉我 AddJsonFile() 方法未定义?【英文标题】: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”的定义...
怎么了?
【问题讨论】:
【参考方案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.Configuration
和 Microsoft.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
方法,您必须通过Nuget 将Microsoft.Extensions.Configuration.Json
的引用添加到您的项目中。
要安装参考,请在包管理器控制台中运行以下命令:
PM> Install-Package Microsoft.Extensions.Configuration.Json
【讨论】:
【参考方案4】:在 project.json 下,您需要将其添加到依赖项中
dependencies
"Microsoft.Extensions.Configuration.Json": "1.0.0"
【讨论】:
以上是关于为啥 Visual Studio 告诉我 AddJsonFile() 方法未定义?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在visual studio 2008 VC++中运行一个Win32控制台应用程序后,弹出一个“没有找到MSVCP90D.dll”?
为啥我的visual stdio 2010连错误程序也能编译成功。。。。
为啥visual studio 2013安装后,没有c#模板?