使用ASP.NET Core Web应用程序(.NET Core)与net461设置为唯一框架并使用(.NET Framework)模板之间的区别

随着.NET Core RC2的发布,微软使得现在有3个Web应用程序模板:

ASP.NET Web应用程序(.NET Framework) – 旧的
ASP.NET核心Web应用程序(.NET Framework) – 新的,只能在Windows上托pipe
ASP.NET核心Web应用程序(.NET核心) – Linux,OSX,Windows

我试图使用新的核心Web应用程序模板,但没有试图针对Linux,OSX,Windows,所以它看起来像ASP.NET核心Web应用程序(.NET Framework)是完美的。 我花了一段时间,但我了解到,为了添加一个类库,将使用这个项目types,您需要添加一个类库(.NET Core),并将框架部分更改为只有net461以匹配Web应用程序。

"frameworks": { "net461": { } } 

我的问题:

创buildASP.NET Core Web应用程序(.NET Core)和project.json之间的区别是使net461成为唯一的目标框架

只是创build一个默认只包含net461的ASP.NET Core Web Application(.NET Framework)项目。

还有没有其他的差别,我不知道像项目发布的方式等…?

创buildASP.NET Core Web应用程序(.NET Core)和project.json之间的区别是使.NET461成为唯一的目标框架

这与制作ASP.NET Core Web Application.NET Framework )项目是一样的。 两者之间的项目types由project.json确定,并且在project.json中将其从.NET Core定位到面向.NET Framework 。 在以前的ASP.NET Core发行版/testing版中,可以在project.json同时使用Frameworks,但只能发布到一个。 不知道这是否仍然有可能。

只是创build一个默认只包含.NET461的ASP.NET Core Web应用程序(.NET Framework)项目。

还有其他的区别,我不知道像项目发布的方式等如果你的目标.NET框架,而不是.NET Core你的应用程序不能跨平​​台,你的应用程序只能在Windows上运行,而不是Linux /苹果电脑。

有独立的ASP.NET Core Web应用程序( .NET Core )和ASP.NET Core Web应用程序( .NET Framework )的原因是因为后者允许您使用依赖于的函数,包或第三方库Windows和相同的.NET Framework或更高版本将需要安装在机器上。

前者没有.NET Framework要求,但允许你的应用程序跨平台,当你发布你的应用程序时,它将所有依赖的.NET Core dll文件发布到发布目录,以这种方式绕过了.NET Framework安装要求。

它也将影响编译,如果你的目标是.NET Core ,并使用Windows特定的函数或包,你将得到一个编译错误。

您可以轻松地通过调整您的project.json来定位这两者之间的切换。

Microsoft Docs

在以下情况下,应该使用.NET Core作为服务器应用程序

  • 你有跨平台的需求。

  • 您的目标是微服务。

  • 您正在使用Docker容器。

  • 您需要高性能和可扩展的系统。

  • 您需要通过应用程序并行.NET版本。

在下列情况下,您应该为您的服务

  • 您的应用程序当前使用.NET Framework(build议扩展而不是迁移)
  • 您需要使用不可用于.NET Core的第三方.NET库或NuGet软件包。
  • 您需要使用不可用于.NET Core的.NET技术。
  • 您需要使用不支持.NET Core的平台。

首先在创build针对不同框架的ASP.NET Core Web应用程序时,在project.json文件中看到不同之处。

asp.net核心与不同框架的区别

根据你的问题,如果你改变ASP.NET核心Web应用程序(.NET核心)project.json框架只有net461和保存,它会恢复包,并会给出以下错误。

在这里输入图像说明

如果您删除了Microsoft.NETCore.App依赖项并保存该文件,它将再次恢复依赖关系,并不会给出任何错误。

如果您注意到第一个图像,那么这个图像最终会成为一个带有.NET Framework的ASP.NET核心Web应用程序。

起初我也感到困惑。 主要区别在于ASP.NET Web应用程序(.NET Framework)是我们一直使用的正常的asp.net。 它包含App_Start文件夹web.config,Global.asax等。(就像MVC5,你明白了..)。

而ASP.NET核心Web应用程序(.NET Framework)是一个核心框架(MVC6)。 (不依赖于System.Web)。 全新的project.json .. startup.cs和program.cs等等。它也支持.net框架的所有旧库。