为什么我找不到方法:' Void Microsoft.AspNet.Hosting.HostingEnvironment..ctor()'从源代码使用MVC时?

时间:2015-01-07 19:10:52

标签: asp.net asp.net-mvc asp.net-core

我从https://github.com/aspnet/Mvc下载了MVC的源代码,在ASP.NET 5 Starter Web项目中,我在解决方案级别添加了global/global.json

global.json中,我指出了MVC源的位置:

{
    "sources":  [ "C:\\development\\github\\Mvc\\src" ]
}

当我构建并运行项目时,我得到了:

enter image description here

有谁可以指出我可能做错了什么?我希望能够运行ASP.NET项目并调试MVC。

3 个答案:

答案 0 :(得分:4)

在这里盲目拍摄,但这是使用信号源时最常见的问题:确保您使用的是相同Feed /分支中的软件包和来源。

当您从ASPNET的GitHub repos克隆源时,对于大多数repos,默认分支是dev。该分支中的代码对应于来自MyGet(https://www.myget.org/F/aspnetvnext/api/v2)而不是NuGet的包。

但是,如果你使用NuGet中的包和dev分支中的代码(反之亦然),你肯定会遇到像你看到的奇怪的错误(缺少方法,不正确的参数等)。

答案 1 :(得分:1)

最后编辑遇到类似问题我找到了这个来源:

http://davidfowl.com/diagnosing-dependency-issues-with-asp-net-5/

最重要的部分是软件包的版本与dnx 的版本不同。但是,软件包无法指定它们所需的最小dnx版本,因此存在问题。 ASP.NET团队表示他们将标记程序包所需的最低版本的dnx,因此这个错误将消失,但是在此之前我们必须忍受它。

这是一篇引文,与文章中的你/我的问题有关(没有我之前想象的动态):

  

如果您看到方法缺少类型缺失异常或可能是程序集加载失败,您可能最终运行betaX软件包和betaY dnx,反之亦然。

我的解决方案(已检查并且有效!)

  1. 如果我使用特定的运行时版本等于软件包的版本,或者我只是将特定运行时版本取消选中,那么一切都很好,

  2. 此外,如果使用星号指定包版本,例如1.0.0- *而不是1.0.0-beta6,则存在大量编译/智能感知错误。

  3. 所以,底线是:所有版本必须完全匹配,至少目前是这样。

答案 2 :(得分:0)

正如上面的答案所解释的那样,这是你应该在项目中看到的路径:

"dependencies": {
    "Microsoft.AspNet.Server.IIS":  "1.0.0-beta2",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta2",
    "Microsoft.AspNet.Mvc": "6.0.0-beta2",
    "Microsoft.AspNet.Routing": "1.0.0-beta2",
    "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta2",
    "EntityFramework": "6.1.2"

}