Perché Visual Studio mi dice che il metodo AddJsonFile () non è definito?


88

Sto sviluppando un progetto ASP.NET 5 WebAPI utilizzando VS Ultimate 2015 Preview. Sto cercando di configurare l'app in questo modo (i numeri di riga sono solo guide):

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 }

La riga 8 mi dà un errore: "Configurazione" non contiene una definizione per "AddJsonFile" ...

Che c'è?

Risposte:


210

È necessario includere il Microsoft.Extensions.Configuration.Jsonpacchetto NuGet se si desidera chiamare il .AddJsonFile()metodo.

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

Per ulteriori letture, ecco un bel tutorial: ASP.NET vNext Moving Parts: IConfiguration .


9
Dalla RC2 è ora Microsoft.Extensions.ConfigurationeMicrosoft.Extensions.Configuration.Json
Chris S

5
Per specificare ulteriormente il commento aggiunto da Chris: A partire dal 22.07.2016 è necessario aggiungere Microsoft.Extensions.Configuration.Jsoncome dipendenza nel file project.json e quindi aggiungere using Microsoft.Extensions.Configurationnella classe Startup.cs .
Tormod Haugene

2
I collegamenti sono interrotti
WPFUser

Questa risposta è ancora utile quattro anni dopo!
MEMark

24

So che è un po 'vecchio ma mi sono imbattuto in questo problema durante il tentativo di creare il mio primo progetto vuoto Asp.net core 1.0. Per utilizzare il AddJsonFilemetodo è necessario aggiungere un riferimento al Microsoft.Extensions.Configuration.Jsonprogetto tramite Nuget .

Per installare il riferimento, eseguire il comando seguente nella console del gestore pacchetti:

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

4

Nel caso in cui qualcun altro abbia avuto problemi con questo, Microsoft ha apportato modifiche sostanziali a questa parte del framework il 16 agosto 2015. È necessario importare le versioni corrette delle dipendenze e passare al nuovo modo di creare la configurazione.

La mia configurazione include:

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

Questo codice, ispirato a questa domanda, potrebbe in qualche modo aiutarti:

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

}

Spero che sia d'aiuto.


Microsoft lo ha cambiato di nuovo - vedi invece la risposta di
WBuck

1

Sotto project.json dovrai aggiungerlo all'interno delle dipendenze

dependencies {
"Microsoft.Extensions.Configuration.Json": "1.0.0"
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.