关于.net:VS 2015.为ASP.NET 5 Web项目设置正确的目标框架

VS 2015. Setting right target framework for ASP.NET 5 web project

我在Visual Studio 2015中创建了新的ASP.NET 5 MVC项目。在"项目创建向导"中,我选择显示.NET Framework 4.6的模板,然后在下一个屏幕上从ASP.NET 5预览模板中选择"Web应用程序"。

但是,在创建之后,在project.json的"frameworks"部分中似乎只列出了"dnx451"和"dnxcore50":

1
2
3
4
 "frameworks": {
   "dnx451": { },
   "dnxcore50": { }
  },

我试着把"dnx451"改成"dnx46"。该项目已构建良好,但当我尝试运行它时,收到以下错误消息:

0

如何更改ASP.NET 5项目的"目标框架"?

以下是我的global.json:

1
2
3
4
5
6
7
8
9
10
11
12
{
 "projects": [
   "src",
   "test",
   "wrap"
  ],
 "sdk": {
   "version":"1.0.0-beta5",
   "runtime":"clr",
   "architecture":"x86"
  }
}

但这里所列的并不重要。我已经尝试过不同版本的1.0.0-beta5和最新的1.0.0-beta6


问题是,DNX知道您的项目针对的是dnx46,但IIS不是:)。因此,IIS以.NET 4.5.1(默认情况下)启动,并尝试加载与4.5.1不兼容的项目。

在未来版本的vs工具中,我们将更好地检测到这一点,但是在那之前,对于那些希望以高于4.5.1的.NET版本为目标的Web应用程序来说,还有些困难。目前,我建议在那之前使用dnx451(如果您不依赖.NET 4.5.2/4.6功能),但如果您需要使用4.5.2或更高版本,我将在下面提供一些说明,说明如何使这项工作在今天进行。

注意:控制台应用程序和使用除IIS以外的服务器(如Kestrel或WebListener)时,完全支持dnx452dnx46。基本上,使用本机dnx.exe引导程序可以启动的任何东西都可以与dnx451dnx46一起使用,但其他宿主环境(IIS、IIS Express)需要额外的提示来启动正确的框架。

要使这项工作在今天进行,您需要将环境变量DNX_IIS_RUNTIME_FRAMEWORK设置为要使用的目标框架。可以在"调试"选项卡上的Web应用程序的"项目属性"页中执行此操作。只需选择IIS Express配置文件并按如下方式添加环境变量:

Launch Profile

我们将把这个添加到已知的问题中,因为看起来我们错过了它,正如我上面所说,我们将改进vs的默认体验,所以这是不必要的:)。


1
"DNX_IIS_RUNTIME_FRAMEWORK" :"DNX46"

该值区分大小写