2016-03-15 12 views
29

Próbuję ustawić ścieżkę podstawową aplikacji dla aplikacji internetowej .Net, którą buduję. Wciąż dostaję błędy w Konstruktorze konfiguracji. To jest błąd, który otrzymuję.Ustawianie ścieżki podstawowej za pomocą narzędzia ConfigurationBuilder

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

Ja zakładając, że dostaniemy ten sam błąd na moich .AddJsonFile() i .AddEnvironmentVariables(). Czy zrobiłem coś nie tak? Czy nie dodałem odpowiedniej zależności do mojego project.json? Załączam mój startup.cs i mój 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); 
    } 
} 

Błąd znajduje się w funkcji prawej u góry startup.cs public startup.

Odpowiedz

64

udało mi się rozwiązać ten problem. Jeśli jeszcze go nie rozwiązałeś, spróbuj wykonać następujące polecenie w pliku project.json. Dodaj następujący:

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

i powinno działać

+0

Jak to zrobić w EF Core 2.0, ponieważ obecnie nie ma pliku project.json? – ATHER

+1

@ATHER: dodaj dwa nugety w ten sam sposób, w jaki dodajesz inne nugety. – Dejan

+1

@ATHER 'dotnet dodaj pakiet ' gdzie nazwaPakietu w tym przypadku to 'Microsoft.Extensions.Configuration.FileExtensions', lub w Visual Studio dodaj pakiet nuget –

1

spróbuj dodać następujące do zależnościami project.json:

"Microsoft.Extensions.Configuration": "1.0.0-*", 
"Microsoft.Extensions.Configuration.Abstractions": "1.0.0-*", 
+0

Dzięki za sugestię! Próbowałem dodać oba do project.json, a następnie zrobiłem "przywracanie dnu". Ale nadal mam ten sam błąd w moim pliku Startup.cs. Jakieś inne pomysły? Znalazłem dokumentację dla dokładnej funkcji, której używam ** [tutaj] (https://github.com/aspnet/Configuration/blob/1.0.0-beta8/src/Microsoft.Framework.Configuration.FileExtensions/FileConfigurationExtensions. cs) **. 'SetBasePath()' – currymanswag

1

Dodaj następujące do project.json:

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

spróbuj dodać następujące do zależnościami project.json: "Microsoft.Extensions.Configuration.CommandLine": "1.1.1",

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

ten pracował dla mnie.

Powiązane problemy