2016-03-15 15 views
29

Tôi đang cố gắng thiết lập đường dẫn cơ sở ứng dụng cho ứng dụng web .Net Tôi đang xây dựng. Tôi tiếp tục gặp lỗi trên Trình tạo cấu hình. Đây là lỗi tôi nhận được.Thiết lập đường dẫn cơ sở bằng cách sử dụng 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?)

Tôi giả định tôi sẽ nhận được lỗi tương tự cho .AddJsonFile() tôi và .AddEnvironmentVariables(). Tôi đã làm gì sai sao? Tôi có không thêm phụ thuộc đúng vào project.json của tôi không? Tôi đã đính kèm startup.cs và project.json của mình.

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ỗi này là trong public startup chức năng ngay gần đầu startup.cs.

Trả lời

64

tôi đã có thể giải quyết vấn đề này. Nếu bạn chưa giải quyết nó, hãy thử sau đây trong project.json. Thêm dòng sau:

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

và nó cũng làm việc

+0

Làm thế nào để làm điều này trong EF Core 2.0 kể từ bây giờ không có tệp project.json? – ATHER

+1

@ATHER: chỉ cần thêm hai nugets giống như cách bạn thêm bất kỳ nugets khác. – Dejan

+1

@ATHER 'dotnet thêm gói ' trong đó packageName trong trường hợp này là 'Microsoft.Extensions.Configuration.FileExtensions' hoặc trong Visual Studio thêm gói nuget –

1

Hãy thử thêm dòng sau vào phụ thuộc project.json của bạn:

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

Cảm ơn bạn đã đề xuất! Tôi đã thử thêm cả hai vào project.json và sau đó đã làm một "khôi phục dnu". Nhưng tôi vẫn nhận được lỗi tương tự trong Startup.cs của tôi. Bất kỳ ý tưởng nào khác? Tôi tìm thấy tài liệu cho hàm chính xác tôi đang sử dụng ** [ở đây] (https://github.com/aspnet/Configuration/blob/1.0.0-beta8/src/Microsoft.Framework.Configuration.FileExtensions/FileConfigurationExtensions. cs) **. 'SetBasePath()' – currymanswag

1

Thêm dòng sau vào project.json của bạn:

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

Hãy thử thêm dòng sau vào phụ thuộc project.json của bạn: "Microsoft.Extensions.Configuration.CommandLine": "1.1.1",

Hoặc trong project.csproj:
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="1.1.1" />

này đã làm cho tôi.

Các vấn đề liên quan