我有一个新的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手动构建项目时,我得到以下错误。我认为此时并不重要,因为据我所知,它在运行时不会导致故障。只是想添加它以防万一。
答案 0 :(得分:2)
在Visual Studio 2015中,使用的框架按以下顺序确定:
项目属性。右键单击解决方案资源管理器中的.xproj,然后选择“属性”。前往"应用程序"部分(默认),您可以"使用特定DNX版本",包括版本,平台和架构。
global.json。我不知道平台是否可以在这里更改,但例如:
"sdk": {
"version": "1.0.0-beta6-12032"
}
Visual Studio默认使用特定的运行时,具体取决于其版本。我相信VS 2015 RC默认使用beta4,.Net Framework,x64。
从命令行运行时,它由您的活动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
。