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

C# 使用ASP.NET Core Web应用程序(.NET Core)并将net461设置为唯一框架与使用(.NET framework)模板之间的区别,c#,asp.net,.net,asp.net-core,C#,Asp.net,.net,Asp.net Core,随着.NET Core RC2的发布,Microsoft实现了这一点,因此现在有3个Web应用程序模板: ASP.NET Web应用程序(.NET Framework)-旧版本 ASP.NET核心Web应用程序(.NET Framework)-新的,仅在Windows上托管 ASP.NET核心Web应用程序(.NET核心)-Linux、OSX、Windows 我正在尝试使用新的核心Web应用程序模板,但没有尝试针对Linux、OSX和Windows,因此ASP.NET核心Web应用程序(.N

随着.NET Core RC2的发布,Microsoft实现了这一点,因此现在有3个Web应用程序模板:

  • ASP.NET Web应用程序(.NET Framework)-旧版本
  • ASP.NET核心Web应用程序(.NET Framework)-新的,仅在Windows上托管
  • ASP.NET核心Web应用程序(.NET核心)-Linux、OSX、Windows
我正在尝试使用新的核心Web应用程序模板,但没有尝试针对Linux、OSX和Windows,因此ASP.NET核心Web应用程序(.NET Framework)似乎非常适合我。这花了我一段时间,但我了解到,为了添加一个可用于此项目类型的类库,您需要添加一个类库(.NET Core),并将frameworks部分更改为仅为net461以匹配Web应用程序

"frameworks": {
    "net461": { }
}
我的问题:

创建ASP.NET核心Web应用程序(.NET Core)与在project.json中使net461成为唯一的目标框架有什么区别

只需创建一个ASP.NET核心Web应用程序(.NET Framework)项目,默认情况下该项目仅包括net461


是否还有其他我不知道的差异,比如项目发布的方式等?

起初我也很困惑。主要区别在于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等。。。它还支持.NETFramework的所有旧库

创建ASP.NET核心Web应用程序之间的区别是什么 (.NET Core)和project.json中,使.NET461成为唯一的目标 框架

这与制作一个
ASP.NET核心Web应用程序
.NET Framework
)项目是一样的。两者之间的项目类型由
.csproj
文件确定,您在
.csproj
中将其从目标
.NET Core
更改为目标
.NET Framework
。在
ASP.NET Core
的早期发行版/测试版中,可以在
project.json
文件中同时包含这两个框架(该文件已被更多.NET开发人员熟悉的.NET Core 2.0中简化的
.csproj
文件所取代),但您只能发布到一个

仅创建一个ASP.NET核心Web应用程序(.NET Framework)项目,默认情况下该项目仅包含.NET461

还有其他我不知道的区别吗,比如项目发布的方式,等等 如果您的目标是.NET Framework而不是.NET Core,则您的应用程序不能跨平台,并且您的应用程序只能在Windows上运行,不能在Linux/Mac上运行

存在独立的
ASP.NET核心
Web应用程序(
.NET核心
)和
ASP.NET核心
Web应用程序(
.NET Framework
)的原因是后者允许您使用函数,计算机上需要安装依赖于Windows和相同的
.NET Framework
或更高版本的软件包或第三方库

前者没有
.NET Framework
要求,但允许您的应用程序跨平台发布,当您发布应用程序时,它会将所有依赖的
.NET Core
dll文件发布到发布目录,从而绕过
.NET Framework
安装要求

它还将影响编译,就好像您以
.NET Core
为目标,并使用Windows特定的函数或包时,您将获得编译错误

您可以通过调整
.csproj
以其中一个为目标,轻松地在两者之间切换

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

  • 你有跨平台的需求

  • 您的目标是微服务

  • 您正在使用Docker容器

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

  • 您需要按应用程序同时提供.NET版本

  • "frameworks": {
        "net461": { }
    }
    
在以下情况下,您应该为服务器应用程序使用.NET Framework:

  • 您的应用程序当前使用.NET Framework(建议扩展而不是迁移)
  • 您需要使用不适用于.NET Core的第三方.NET库或NuGet包
  • 您需要使用.NET核心无法使用的.NET技术
  • 您需要使用不支持.NET Core的平台
更新(2018/10/30)

一直以来,发布日期为的ASP.Net Core 3将只支持
.Net Core
而不支持
.Net Framework

正如本月早些时候在.NET博客上宣布的那样,.NET Framework将减少.NET核心的更新平台和语言功能,这是由于.NET Framework的就地更新特性以及限制可能破坏现有应用程序的更改的愿望。为了确保ASP.NET Core能够充分利用.NET Core未来的改进,ASP.NET Core将从3.0开始仅在.NET Core上运行。向前看,您可以简单地将ASP.NET Core视为.NET Core的一部分

今天,使用.NET Framework上的ASP.NET Core的客户可以继续使用2.1 LTS版本以完全受支持的方式进行此操作。根据.NET支持政策,2.1的支持和服务将至少持续到2021年8月21日(宣布为LTS版本后3年)


当您使用c时,首先看到project.json文件中的差异