Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VS 2015。为ASP.NET 5 web项目设置正确的目标框架_.net_Visual Studio 2015_Asp.net Core - Fatal编程技术网

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

VS 2015。为ASP.NET 5 web项目设置正确的目标框架,.net,visual-studio-2015,asp.net-core,.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": { } }, 我已尝试将“d

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

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

  "frameworks": {
    "dnx451": { },
    "dnxcore50": { }
  },
我已尝试将“dnx451”更改为“dnx46”。该项目构建得很好,但当我尝试运行它时,收到以下错误消息:

当前运行时目标框架与“…”不兼容

当前运行时目标框架:“DNX,版本=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的不同版本。问题是DNX知道您的项目的目标是dnx46,但IIS不是:)。因此,IIS从.NET 4.5.1(默认)开始,并尝试加载与4.5.1不兼容的项目

在VS工具的未来版本中,我们将在检测这一点上做得更好,但在那之前,对于希望将.NET版本定位在4.5.1以上的Web应用程序来说,情况有点困难。目前,我建议在此之前只使用
dnx451
(如果您不依赖.NET 4.5.2/4.6功能),但如果您需要使用4.5.2或更高版本,我将在下面提供一些说明,说明如何在今天实现这一点

注意:
dnx452
dnx46
在控制台应用程序中以及在使用IIS以外的服务器(如Kestrel或WebListener)时都受到完全支持。基本上,使用本机
dnx.exe
bootstrapper可以启动的任何东西都可以与
dnx451
dnx46
一起使用,但其他托管环境(IIS、IIS Express)需要额外提示才能启动正确的框架

要在今天实现这一点,您需要将环境变量
DNX\u IIS\u RUNTIME\u FRAMEWORK
设置为要使用的目标框架。您可以在web应用程序的“项目属性”页面的“调试”选项卡上执行此操作。只需选择IIS Express配置文件并添加环境变量,如下所示:

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


该值区分大小写

global.json中有什么内容?如果右键单击“项目”并选择“属性”,是否选中了特定的框架?查看更多的project.json以查看主要依赖项可能有助于诊断错误。我已经更新了最初的帖子,并在其中添加了global.json的内容。但是,我已经尝试更改此处列出的“sdk”版本,但没有任何帮助。您没有显示project.json的dependencies部分。beta6应该在昨天发布,它似乎确实出现在nuget提要中,但还没有发布发布公告,我认为应该有VS 2015的相应工具更新。现在我将使用beta5,直到更多关于beta6发布的消息。依赖项中的内容确实很重要,我看到过一些错误,其中一些主要部分的依赖项需要移动到dnxcore50I以下的依赖项中。我也遇到了同样的问题。将
“Microsoft.AspNet.Server.IIS”:“1.0.0-beta6”
添加到my project.json中修复了该问题。但我不知道为什么。也许这对你也有帮助。谢谢你这么详细的解释。很高兴知道这不是我的错:)@Andrew Nurse我需要卸载beta5才能工作吗?显然,它一直试图用dnx 451启动iis,尽管我努力使用一个特定的运行时(beta6)。今天我试图创建一个新项目,但这个错误一直发生(beta6)。这个解决方案对我来说从来都不起作用。如果有人还没有发现这个问题,在生产环境中,IIS不会看到这个设置,除非在服务器上手动设置环境变量。事实上,我一直在vs2015之外构建更多内容,并编写了一个publish powershell脚本;这为我解决了这个问题,同时让我不让管理员从我冰冷、死气沉沉的手上抓到ef7和DI。简而言之,我有针对.NET 4.5.2的类库,我刚刚更新的ASP.NET 5 framework项目是从头开始创建的,包含了DNX 4.5.1。由于我不依赖于4.5.2+功能,我将我所有的类库都指向了.NET 4.5.1-重建它们(非常重要)-然后终于可以引用它们了。从我所阅读的DNX for framework identification开始消失。读完这两篇文章。。。。
"DNX_IIS_RUNTIME_FRAMEWORK" : "DNX46"