Asp.net core 什么是aspnet50和aspnetcore50?

Asp.net core 什么是aspnet50和aspnetcore50?,asp.net-core,Asp.net Core,从VS创建一个ASP.NET 5应用程序时,project.json文件包含以下条目: "frameworks": { "aspnet50": { }, "aspnetcore50": { } } 现在,这个框架部分是什么?为什么会有这些条目“aspnet50”和“aspnetcore50”?我知道现在有完整的.NET和核心CLR,但这一部分似乎暗示有两个不同的ASP.NET 5:一个ASP.NET 5和一个ASP.NET核心5。只有一个框架ASP.NET 5可以运行在完整的.

从VS创建一个ASP.NET 5应用程序时,
project.json
文件包含以下条目:

"frameworks": {
    "aspnet50": { },
    "aspnetcore50": { }
}
现在,这个框架部分是什么?为什么会有这些条目“aspnet50”和“aspnetcore50”?我知道现在有完整的.NET和核心CLR,但这一部分似乎暗示有两个不同的ASP.NET 5:一个ASP.NET 5和一个ASP.NET核心5。只有一个框架ASP.NET 5可以运行在完整的.NET或核心CLR之上,对吗?如果是这样,为什么我们需要这些条目?

微软的“新”工作方式允许在Windows之外托管CLR。如果你感兴趣的话,我有一个想法

现在,要做到这一点,他们必须稍微拆分一下框架,因此,核心CLR诞生了。从:

.NET Core 5是小型优化运行时,它是ASP.NET Core 5的基础。它目前运行在Windows上,并将扩展到支持Linux和Mac。它是一种高性能和模块化设计,并支持完全并排,以便在不影响其他应用程序的情况下轻松采用新的.NET核心版本。这些产品由.NET团队积极开发,并与开源开发人员社区合作。我们一起致力于改进和扩展.NET平台,提供新功能和新场景

为了实现这一点,一些特性显然被抛弃了。Asp.net必须针对有限的子集,才能让你的应用程序在核心框架上工作。它基本上告诉框架将您可以使用的特性集限制在两者都支持的范围内

这是我的理解,但我可能错了:-)

project.json中的“frameworks”条目使得在同一个项目中同时支持ASP.NET Core 5.0和ASP.NET 5.0成为可能。每个框架可能有不同的依赖项集,因为.NET内核的向后兼容性有限

  • aspnet50ASP.NET 5.0将使用安装在您机器上的机器范围的.NET框架,该框架通常与现有生态系统兼容

  • aspnetcore50ASP.NET Core 5.0将使用新的本地应用程序。NETCore是一个开源的跨平台平台 以及包含.NET framework子集的模块化框架。这个 以.NET核心为目标的缺点是引用的包不能依赖于完整的.NET框架


如果您只是计划将其中一个作为目标(可能是因为对需要完整.NET Framework(如Entity Framework 6)的库存在依赖关系),您可以删除另一个。

您自己说过。“只有一个框架ASP.NET 5可以运行在完整的.NET或核心CLR之上”。目前所有新目标都有aspnet前缀,而完整的.NET框架的目标是net45。在这个twitter对话()中,大卫·福勒回答了同样的问题。他提到的net45和aspnet50之间的一个区别是后者中的存在。也有关于新项目结构中的多目标的良好信息。