随着.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相关问答推荐

ASP.NET多行查询文本框中的多个名称并将结果添加到单个网格视图

SqlBulkCopy 超时

用于链接字符串中的 url 的 C# 代码

ASP.NET Web 应用程序消息框

System.Web.HttpContext 无法识别

通过 jQuery 调用 ASP.NET 服务器端方法

GridView 与嵌套类的属性绑定

HttpContext.Current.Cache.Insert 和 HttpContext.Current.Cache.Add 有什么区别

如何设置默认页面 asp.net

如何在 IIS 7.5 上使用 ASP.NET 表单身份验证保护静态文件?

Owin 中是否有来自 Global.asax 的 Application_End?

回发后 Document.Ready() 不起作用

如何使用 ASP.NET 和 jQuery 返回 JSON

IIS Express 安装目录在哪里?

如何在 ASP.Net Gridview 中添加确认删除选项?

如何response.write bytearray?

LinkBut​​ton 向 OnClick 后面的代码发送值

强制 IIS Express 进入classic 管道模式

使用 FormsAuthentication.SetAuthCookie 存储更多信息

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