簡體   English   中英

VS2015 ASP.NET 5空項目無法正常工作,找不到ConfigurationBuilder.Build

[英]VS2015 ASP.NET 5 Empty project doesn't work, can't find ConfigurationBuilder.Build

試用新的VS2015項目。 我正在關注本教程,但缺少一些內容。 當我運行它時,出現500錯誤:

System.MissingMethodException: Method not found: 'Microsoft.Framework.Configuration.IConfiguration Microsoft.Framework.Configuration.ConfigurationBuilder.Build()'.
at Microsoft.AspNet.Loader.IIS.RuntimeHttpApplication.ApplicationStart(IHttpApplication application)
at Microsoft.AspNet.Loader.IIS.HttpApplicationBase.InvokeApplicationStart(IHttpApplication application)

.NET Framework version 4.0.30319.42000   |   Microsoft.AspNet.Loader.IIS version 1.0.0-beta5-11951   |   IIS version 10.0.10117.0 (fbl_srv2_iis_dev(sujitn).150512-1839)   |   Need help?

經過一番閱讀后,我發現您需要一個Configuration實例,盡管我發現的示例對我不起作用。 他們都將實例設置為“配置”字段,但是似乎不存在。 這些配置行全為紅色,因為名稱不存在:

public class Startup
{
    public Startup() {
        Configuration = new ConfigurationBuilder();
    }

    public void ConfigureServices(IServiceCollection services)
    {
        Configuration = new ConfigurationBuilder();
        services.AddMvc();
    }

    public void Configure(IApplicationBuilder app)
    {
        Configuration = new ConfigurationBuilder();

        app.Run(async (context) =>
        {
            await context.Response.WriteAsync("Hello World!");
        });

        app.UseMvc(m => {
            m.MapRoute(
                name: "default",
                template: "{controller}/{action}/{id?}",
                defaults: new { controller = "Home", action = "Index" });
        });
    }
}

這是使用空項目中的默認Startup類。 我手動添加了gulp和angular節點模塊。 我一定想念什么,但我不知道該怎么辦...

更新:這些是我在Startup.cs中的用法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Http;
using Microsoft.Framework.DependencyInjection;
using Microsoft.Framework.Configuration;

更新:這是我當前的project.json文件(我尚未手動修改):

{
    "webroot": "public",
    "version": "1.0.0-*",

    "dependencies": {
        "Microsoft.AspNet.Mvc": "6.0.0-beta7",
        "Microsoft.AspNet.Server.IIS": "1.0.0-beta5",
        "Microsoft.AspNet.Server.WebListener": "1.0.0-beta5"
    },

  "commands": {
    "web": "Microsoft.AspNet.Hosting --config hosting.ini"
  },

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

  "publishExclude": [
    "node_modules",
    "bower_components",
    "**.xproj",
    "**.user",
    "**.vspscc"
  ],
  "exclude": [
    "public",
    "node_modules",
    "bower_components"
  ]
}

更新:更改后beta5 s到beta7 S,根據意見,我得到了過去,這ConfigurationBuilder錯誤,並轉移到一個“無法加載文件或程序集Microsoft.Dnx.Host.Clr'或它的一個依賴”的錯誤,我懷疑這是另一個版本問題,我現在正在調查...但是我想那將是一個不同的問題。

作為由亨克默勒馬評論指出,原因ConfigurationBuilder.Build沒有被發現,我的Configuration線是紅色的是,我有好有壞包的版本(一些beta5的,有些β7的)。 該功能或者是在beta5之后的版本中添加的,或者由於庫不匹配而找不到。 升級到project.json中的project.json解決此問題。

我提到的后續錯誤也已修復

您在這里缺少了一些東西。 假設您使用的是beta7,並且需要config.json文件:

首先在Startup構造函數中構建一個IConfiguration實例:

private IConfiguration Configuration { get; }

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

    Configuration = configurationBuilder.Build();
}

不要忘記將Configuration屬性添加到您的類。 此外,您還需要Microsoft.Framework.Configuration.Json1.0.0-beta7 )。

現在,在ConfigureServices方法中,您可以從中綁定設置。 例如:

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<AppSettings>(Config.GetSection("AppSettings"));

    // ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM