Pourquoi Visual Studio me dit-il que la méthode AddJsonFile () n'est pas définie?

87

Je développe un projet WebAPI ASP.NET 5 à l'aide de VS Ultimate 2015 Preview. J'essaie de configurer l'application de cette manière (les numéros de ligne ne sont que des guides):

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 ligne 8 me donne une erreur: 'Configuration' ne contient pas de définition pour 'AddJsonFile' ...

Qu'est-ce qui ne va pas?

NetCito
la source

Réponses:

206

Vous devez inclure le Microsoft.Extensions.Configuration.Jsonpackage NuGet si vous souhaitez appeler la .AddJsonFile()méthode.

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

Pour plus d'informations, voici un tutoriel sympa: ASP.NET vNext Moving Parts: IConfiguration .

Lonig
la source
9
Depuis RC2 c'est maintenant Microsoft.Extensions.ConfigurationetMicrosoft.Extensions.Configuration.Json
Chris S
5
Pour préciser davantage le commentaire ajouté par Chris: À partir du 22.07.2016, vous devez ajouter Microsoft.Extensions.Configuration.Jsoncomme dépendance dans votre fichier project.json , puis ajouter using Microsoft.Extensions.Configurationdans votre classe Startup.cs .
Tormod Haugene
2
Les liens sont rompus
WPFUser
Cette réponse est toujours utile quatre ans plus tard!
MEMark
24

Je sais que c'est un peu vieux, mais je viens de rencontrer ce problème en essayant de créer mon premier projet vierge Asp.net core 1.0. Pour utiliser la AddJsonFileméthode, vous devez ajouter une référence Microsoft.Extensions.Configuration.Jsonà votre projet via Nuget .

Pour installer la référence, exécutez la commande ci-dessous dans la console du gestionnaire de packages:

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

Au cas où quelqu'un d'autre aurait des problèmes avec cela, Microsoft a apporté des modifications majeures à cette partie du framework le 16 août 2015. Vous devez importer les bonnes versions des dépendances et basculer vers la nouvelle façon de construire la configuration.

Ma configuration comprend:

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

Ce code, inspiré de cette question, pourrait vous aider dans une certaine mesure:

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

}

J'espère que cela aide.

John Thow
la source
Microsoft l'a encore changé - voir la réponse de WBuck à la place
r590
1

Sous project.json, vous devrez l'ajouter dans les dépendances

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