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

时间:2015-07-28 09:05:22

标签: .net visual-studio-2015 asp.net-core

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

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

  "frameworks": {
    "dnx451": { },
    "dnxcore50": { }
  },

我试图将“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"
  }
}

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

2 个答案:

答案 0 :(得分:54)

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

在VS Tooling的未来版本中,我们将更好地检测到这一点,但在此之前,对于希望定位.NET版本以上的Web应用程序来说,事情有点粗糙< / strong> 4.5.1。目前,我建议在此之前使用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

我们会将此添加到Known Issues,因为看起来我们错过了它,正如我上面所说,我们将改进VS中的默认体验,所以这没有必要:)。

答案 1 :(得分:2)

"DNX_IIS_RUNTIME_FRAMEWORK" : "DNX46"

该值区分大小写