Por que o Visual Studio informa que o método AddJsonFile () não está definido?

87

Estou desenvolvendo um projeto ASP.NET 5 WebAPI usando o VS Ultimate 2015 Preview. Estou tentando configurar o aplicativo desta forma (os números das linhas são apenas guias):

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 }

A linha 8 me dá um erro: 'Configuração' não contém uma definição para 'AddJsonFile' ...

O que está errado?

NetCito
fonte

Respostas:

206

Você precisa incluir o Microsoft.Extensions.Configuration.Jsonpacote NuGet se quiser chamar o .AddJsonFile()método.

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

Para ler mais, aqui está um bom tutorial: ASP.NET vNext Moving Parts: IConfiguration .

Lonig
fonte
9
Desde RC2 é agora Microsoft.Extensions.ConfigurationeMicrosoft.Extensions.Configuration.Json
Chris S
5
Para especificar ainda mais o comentário adicionado por Chris: A partir de 22.07.2016, você deve adicionar Microsoft.Extensions.Configuration.Jsoncomo uma dependência em seu arquivo project.json e, em seguida, adicionar using Microsoft.Extensions.Configurationsua classe Startup.cs .
Tormod Haugene
2
Links quebrados
Usuário WPF
Esta resposta ainda é útil quatro anos depois!
MEMark
24

Eu sei que isso é um pouco antigo, mas acabei de encontrar esse problema ao tentar construir meu primeiro projeto em branco Asp.net core 1.0. Para usar o AddJsonFilemétodo, você deve adicionar uma referência a Microsoft.Extensions.Configuration.Jsonao seu projeto via Nuget .

Para instalar a referência, execute o comando abaixo no console do gerenciador de pacotes:

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

Caso mais alguém esteja tendo problemas com isso, a Microsoft fez alterações significativas nesta parte da estrutura em 16 de agosto de 2015. Você deve importar as versões corretas das dependências e mudar para a nova forma de construir a configuração.

Minha configuração inclui:

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

Este código, inspirado por esta pergunta, pode ajudar você de alguma forma:

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

}

Espero que ajude.

John Thow
fonte
A Microsoft mudou novamente - veja a resposta de
WBuck
1

Em project.json, você precisará adicioná-lo às dependências

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