web-dev-qa-db-fra.com

Définition du chemin de base à l'aide de ConfigurationBuilder

J'essaie de définir le chemin d'accès de base d'une application Web .Net que je construis. Je continue à recevoir des erreurs sur le générateur de configuration. C'est l'erreur que je reçois.

DNX,Version=v4.5.1 error CS1061: 'ConfigurationBuilder' does not contain a definition for 'SetBasePath' and no extension method 'SetBasePath' accepting a first argument of type 'ConfigurationBuilder' could be found (are you missing a using directive or an Assembly reference?)

Je suppose que la même erreur se produira pour mes .AddJsonFile() et .AddEnvironmentVariables(). Est-ce que j'ai fait quelque chose de mal? N’ai-je pas ajouté la bonne dépendance à mon projet.json? J'ai joint mon startup.cs et mon project.json.

project.json

{
"version": "1.0.0-*",
"compilationOptions": {
"emitEntryPoint": true
},
"tooling": {
"defaultNamespace": "TripPlanner"
},

"dependencies": {
  "Microsoft.AspNet.StaticFiles":  "1.0.0-rc1-final",
  "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
  "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
  "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
  "Microsoft.Framework.Configuration": "1.0.0-beta8",
  "Microsoft.Framework.DependencyInjection": "1.0.0-beta8"
  //"Microsoft.Extensions.PlatformAbstractions": "1.0.0-beta8"
},

"commands": {
  "web": "Microsoft.AspNet.Server.Kestrel"
},

"frameworks": {
  "dnx451": { },
  "dnxcore50": { }
},

"exclude": [
  "wwwroot",
  "node_modules"
],
"publishExclude": [
  "**.user",
  "**.vspscc"
 ]
}

startup.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.PlatformAbstractions;
using Microsoft.Framework.Configuration;
using Microsoft.Framework.DependencyInjection;
using TripPlanner.Services;



namespace TripPlanner
{
  public class Startup
  {
    public static IConfigurationRoot Configuration;

    public Startup(IApplicationEnvironment appEnv){
        var builder = new ConfigurationBuilder()
            .SetBasePath(appEnv.ApplicationBasePath)
            .AddJsonFile("config.json")
            .AddEnvironmentVariables();

        Configuration = builder.Build();
    }

    // This method gets called by the runtime. Use this method to add services to the container.
    // For more information on how to configure your application, visit http://go.Microsoft.com/fwlink/?LinkID=398940
    public void ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection services)
    {
        services.AddMvc();
        #if DEBUG
        services.AddScoped<IMailService, DebugMailService> ();
        #else
        services.AddScoped<IMailService, RealMailService> ();
        #endif
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app)
    {
       //app.UseDefaultFiles();
       app.UseStaticFiles();
       app.UseMvc(config =>
       {
           config.MapRoute(
               name: "Default",
               template: "{controller}/{action}/{id?}",
               defaults: new { controller  = "App", action = "Index"}
           );
       });

    }

    // Entry point for the application.
    public static void Main(string[] args) => Microsoft.AspNet.Hosting.WebApplication.Run<Startup>(args);
  }
}

L'erreur est dans le public startup fonctionne très près du sommet de startup.cs.

65
currymanswag

J'ai pu résoudre le problème. Si vous ne l'avez pas encore résolu, essayez ce qui suit dans le fichier project.json. Ajouter ce qui suit:

"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-*",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final"

et ça devrait marcher

132
Fouad Zakka

Je ne sais pas si quelqu'un est toujours confronté à ce problème, mais j'ai pu le résoudre dans un projet de console dotnetcore (netcoreapp2.0) via:

dotnet add package Microsoft.Extensions.Configuration.Json
27
Bishop

Si vous exécutez un . NET Core 1.x ou .NET Standard 1.x, vous devez exécuter cette commande:

dotnet add package Microsoft.Extensions.Configuration.Json -v 1.1.1

Si votre projet est dans un autre dossier:

dotnet add .\src\MyProject package Microsoft.Extensions.Configuration.Json -v 1.1.1

... où MyProject est le nom du .csproj fichier.

3
Alisson

Essayez d’ajouter ce qui suit à vos dépendances project.json: "Microsoft.Extensions.Configuration.CommandLine": "1.1.1",

Ou dans project.csproj:
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="1.1.1" />

Cela a fonctionné pour moi.

2

Ajoutez ce qui suit à votre project.json:

"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-*"
2
dudu

Essayez d’ajouter ce qui suit à vos dépendances project.json:

"Microsoft.Extensions.Configuration": "1.0.0-*",
"Microsoft.Extensions.Configuration.Abstractions": "1.0.0-*",
1
Brett Christensen

Essayez d’ajouter ce qui suit dans votre .csproj fichier:

<ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="2.2.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.2.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.2.0" />
</ItemGroup>
0
Vijay Shaaruck