Kestrel运行哪个框架?

时间:2015-06-15 09:53:34

标签: azure asp.net-core .net-core dnx dnvm

我有一个新的ASP.NET 5项目,并按如下所示设置project.json;

    "frameworks": {
    "dnx451":  {
        "dependencies": {
            "ExternalLibrary": "1.3.0" }
        },
    "dnxcore50": {}
}

我正在通过Kestrel运行项目,使用project.json中定义的默认命令。

"kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5001"

一切正常。项目运行并且依赖项运行良好。我唯一不明白谁决定使用哪个底层框架?

据我所知,如果Kestrel使用dnxcore50,项目应该会失败。如果是这种情况,我们如何推动Kestrel使用它呢?

正如旁注,项目运行良好,没有任何错误,但当我尝试使用DNU手动构建项目时,我得到以下错误。我认为此时并不重要,因为据我所知,它在运行时不会导致故障。只是想添加它以防万一。

http://pastebin.com/x44VtXct

1 个答案:

答案 0 :(得分:2)

在Visual Studio 2015中,使用的框架按以下顺序确定:

  1. 项目属性。右键单击解决方案资源管理器中的.xproj,然后选择“属性”。前往"应用程序"部分(默认),您可以"使用特定DNX版本",包括版本,平台和架构。

  2. global.json。我不知道平台是否可以在这里更改,但例如:

    "sdk": {
        "version": "1.0.0-beta6-12032"
    }
    
  3. Visual Studio默认使用特定的运行时,具体取决于其版本。我相信VS 2015 RC默认使用beta4,.Net Framework,x64。

  4. 从命令行运行时,它由您的活动dnvm确定。您可以使用命令dnvm list显示已安装的VM。您将获得类似于以下内容的列表:

    Active Version           Runtime Architecture Location                    Alias
    ------ -------           ------- ------------ --------                    -----
           1.0.0-beta4       clr     x64          C:\Users\Matt\.dnx\runtimes
           1.0.0-beta4       clr     x86          C:\Users\Matt\.dnx\runtimes
           1.0.0-beta4       coreclr x64          C:\Users\Matt\.dnx\runtimes
           1.0.0-beta4       coreclr x86          C:\Users\Matt\.dnx\runtimes
           1.0.0-beta4-11566 clr     x86          C:\Users\Matt\.dnx\runtimes
           1.0.0-beta5-11855 clr     x64          C:\Users\Matt\.dnx\runtimes
           1.0.0-beta5-11855 clr     x86          C:\Users\Matt\.dnx\runtimes
           1.0.0-beta5-11855 coreclr x64          C:\Users\Matt\.dnx\runtimes
           1.0.0-beta6-11921 clr     x64          C:\Users\Matt\.dnx\runtimes
           1.0.0-beta6-11921 clr     x86          C:\Users\Matt\.dnx\runtimes x64
           1.0.0-beta6-12005 clr     x64          C:\Users\Matt\.dnx\runtimes
           1.0.0-beta6-12005 clr     x86          C:\Users\Matt\.dnx\runtimes
      *    1.0.0-beta6-12032 clr     x64          C:\Users\Matt\.dnx\runtimes default
           1.0.0-beta6-12032 clr     x86          C:\Users\Matt\.dnx\runtimes
    

    *表示您当前的VM。 coreclr使用dnxcore50,其他人(可能是Mac上的mono)使用相应的框架,但似乎编译为dnx451