随着.NET Core RC2的发布,Microsoft推出了3个Web应用程序模板:

  • ASP.NET Web应用程序(.NET Framework)-旧版本
  • ASP.NET核心Web应用程序(.NET Framework)-新的,仅在Windows上托管
  • ASP.NET核心Web应用程序(.NET核心)-Linux、OSX、Windows

我正在try 使用新的核心Web应用程序模板,但没有try 以Linux、OSX、Windows为目标,因此ASP.NET核心Web应用程序(.NET Framework)似乎非常适合我.我花了一段时间,但我了解到,为了添加一个可以使用此项目类型的类库,您需要添加一个类库(.NET Core),并将Framework部分更改为仅net461以匹配Web应用程序.

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

My Question:

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

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

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

推荐答案

创建ASP.NET核心Web应用程序与创建 (.Net Core),并且在project.json中使.NET461成为唯一的目标 框架

这和制作ASP.NET Core Web Application(.NET Framework)个项目是一样的.两者之间的项目类型由.csproj文件决定,您在.csproj中将其从目标.NET Core更改为目标.NET Framework.在ASP.NET Core的早期版本/beta版中,两个框架都可以放在一个project.json文件中(在.NET Core 2.0中被一个简化的.csproj文件取代,更多的.NET开发人员都熟悉这个文件),但您只能发布到一个.

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

还有其他我不知道的区别吗,比如项目发布的方式等等

之所以有单独的ASP.NET Core个Web应用程序(.NET Core)和ASP.NET Core个Web应用程序(.NET Framework),是因为后者允许您使用依赖于Windows的功能、软件包或第三方库,并且需要在机器上安装相同的.NET Framework或更高版本.

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

它还会影响编译,就好像您以.NET Core为目标并使用特定于Windows的函数或包时会出现编译错误一样.

您可以通过调整您的.csproj来轻松地在两者之间切换,以针对其中一个或另一个.

Microsoft Docs

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

  • 您有跨平台的需求.

  • 你的目标是微服务.

  • 您正在使用Docker容器.

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

  • 你需要和我并肩作战.NET版本的应用程序.

你应该使用.在以下情况下,服务器应用程序的NET Framework:

  • 您的应用程序当前正在使用.NET框架(建议进行扩展,而不是迁移)
  • 你需要使用第三方软件.NET库或NuGet包不适用于.净核心.
  • 您需要使用.NET Core不可用的.NET技术.
  • 你需要使用一个不支持的平台.净核心.

Update (2018/10/30)

发布日期为2019 Q1ASP.Net Core 3只支持.NET CoreNOT .NET Framework,这已经是announced年前的事了

正如本月早些时候在.NET博客上宣布的那样,由于.NET Framework的就地更新特性,以及希望限制可能会 destruct 现有应用程序的更改,.NET Framework将更少地获得.NET Core的更新平台和语言功能.为了确保ASP.NET Core能够充分利用.NET Core的改进,ASP.NET Core从3.0开始将只在.NET Core上运行.展望future ,您可以简单地将ASP.NET Core视为.NET Core的一部分.

目前在.NET Framework上使用ASP.NET Core的客户可以使用2.1LTS版本以完全受支持的方式继续这样做.根据.NET支持政策,2.1的支持和服务将至少持续到2021年8月21日(宣布为LTS版本3年后).

Asp.net相关问答推荐

AJAX返回未定义、失败

在这个 For 循环计数没有增加

如何向 Array.IndexOf 添加不区分大小写的选项

IIS 中的嵌套 ASP.NET应用程序继承父配置值?

ASP.NET 平台是否有与 Heroku 等价的工具?

asp.net mvc 中的 RedirectToAction 用法

你如何确定哪个验证器失败了?

我应该如何在类和应用层之间传递数据?

如何从 HTTP 请求中获取 MAC 地址?

从命令行复制 VS2008发布网站

存在 ios 7 虚拟键盘时,div 元素不会停留在底部

无法序列化会话状态

与 Twitter Bootstrap Bundle 的 ASP.NET MVC4

ASP.NET IIS Web.config [内部服务器错误]

Fiddler 没有从 ASP.NET 网站嗅探 SOAP 流量

将 C# ASP.NET 数组传递给 Javascript 数组

ASP.net 网站中的 C# 密码文本框

为什么 IFormFile 显示为空,我该如何解决?

如何使用 int ID 列更改 ASP.net Identity 2.0 的表名?

您的下一个 ASP.NET 项目的 Select 是什么:Web 窗体还是 MVC?