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

Ser*_*giy 38 .net visual-studio-2015 asp.net-core

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

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

  "frameworks": {
    "dnx451": { },
    "dnxcore50": { }
  },
Run Code Online (Sandbox Code Playgroud)

我试图将"dnx451"更改为"dnx46".该项目已经很好地构建但是当我尝试运行它时,我收到以下错误消息:

当前运行时目标框架与"..."不兼容.

当前运行时目标框架:'DNX,Version = v4.5.1(dnx451)'类型:CLR架构:x86版本:1.0.0-beta5

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

这是我的global.json现在:

{
  "projects": [
    "src",
    "test",
    "wrap"
  ],
  "sdk": {
    "version": "1.0.0-beta5",
    "runtime": "clr",
    "architecture": "x86"
  }
}
Run Code Online (Sandbox Code Playgroud)

但那里列出的是什么并不重要.我已经尝试过不同版本的1.0.0-beta5和最新的1.0.0-beta6

And*_*rse 54

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

在VS Tooling的未来版本中,我们将更好地检测到这一点,但在此之前,对于希望定位4.5.1 以上 .NET版本的Web应用程序来说,事情有点粗糙.目前,我建议在此dnx451之前使用(如果你不依赖于.NET 4.5.2/4.6功能),但如果你需要使用4.5.2,我将在下面提供一些如何使这项工作的说明或更高.

注:dnx452dnx46完全在控制台应用程序的支持,并使用IIS以外的服务器(如红隼或WebListener)时.基本上你可以使用本机dnx.exe引导程序启动的任何东西都可以使用dnx451,dnx46但是其他托管环境(IIS,IIS Express)需要额外的提示才能启动正确的框架.

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

启动资料

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