5

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

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

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

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

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

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

顺便说一句,该项目运行良好,完全没有错误,但是当我尝试使用 DNU 手动构建项目时,我收到以下错误。在这一点上,我认为它并不重要,因为据我所知,它不会在运行时导致失败。只是想添加它以防万一。

http://pastebin.com/x44VtXct

4

1 回答 1

2

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

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

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

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

从命令行运行时,它由您的 active 决定dnvm。您可以使用该命令dnvm list显示已安装的虚拟机。您将获得类似于以下内容的列表:

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

表示您当前的*虚拟机。coreclr使用dnxcore50,而其他(可能mono在您的 Mac 上)使用相应的框架,但似乎编译为dnx451.

于 2015-06-15T13:09:21.073 回答