it-swarm.com.de

Festlegen des Basispfads mit ConfigurationBuilder

Ich versuche, den Anwendungsbasispfad für eine von mir erstellte .Net-Webanwendung festzulegen. Beim Builder für Konfiguration werden immer wieder Fehler angezeigt. Das ist der Fehler, den ich bekomme.

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?)

Ich gehe davon aus, dass ich für meine .AddJsonFile() und .AddEnvironmentVariables() den gleichen Fehler erhalte. Habe ich etwas falsch gemacht? Habe ich meinem project.json nicht die richtige Abhängigkeit hinzugefügt? Ich habe meine startup.cs und meine project.json beigefügt.

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

Der Fehler ist in der public startup Funktion ganz oben in startup.cs.

65
currymanswag

Ich konnte das Problem lösen. Wenn Sie es noch nicht gelöst haben, versuchen Sie Folgendes in der Datei project.json. Fügen Sie Folgendes hinzu:

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

und es sollte funktionieren

132
Fouad Zakka

Ich bin mir nicht sicher, ob noch jemand auf dieses Problem stößt, aber ich konnte es in einem dotnetcore-Konsolenprojekt (netcoreapp2.0) wie folgt beheben:

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

Wenn Sie . NET Core 1.x oder . NET Standard 1.x ausführen, sollten Sie den folgenden Befehl ausführen:

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

Wenn sich Ihr Projekt in einem anderen Ordner befindet:

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

... wobei MyProject der Name der .csproj - Datei ist.

3
Alisson

Fügen Sie Ihrer project.json-Abhängigkeit Folgendes hinzu: "Microsoft.Extensions.Configuration.CommandLine": "1.1.1",

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

Das hat bei mir funktioniert.

2

Fügen Sie Ihrem project.json Folgendes hinzu:

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

Versuchen Sie, Ihren project.json-Abhängigkeiten Folgendes hinzuzufügen:

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

Fügen Sie Ihrer .csproj - Datei Folgendes hinzu:

<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