从VS创建一个ASP.NET 5应用程序时,project.json
文件包含以下条目:
"frameworks": {
"aspnet50": { },
"aspnetcore50": { }
}
现在,这个框架部分是什么以及为什么有这些条目" aspnet50"和#34; aspnetcore50"?我知道现在有完整的.NET和Core CLR,但是这部分似乎暗示有两个不同的ASP.NET 5:一个ASP.NET 5和一个ASP.NET Core 5.只有一个框架ASP.NET 5可以在完整的.NET或Core CLR之上运行吗?如果那就是为什么我们需要这些条目呢?
答案 0 :(得分:1)
Microsoft的“新”处理方式允许在Windows之外托管CLR。如果您有兴趣,我有blogpost这样做。
现在,要做到这一点,他们不得不将框架分开一点,因此,CORE CLR诞生了。来自webpage:
.NET Core 5是小型优化运行时,是ASP.NET Core 5的基础。它目前在Windows上运行,并将扩展为支持Linux和Mac。它是一种高性能和模块化设计,并且完全支持并且可以轻松采用新的.NET Core版本而不会影响其他应用程序。这些产品由.NET团队积极开发,并与开源开发人员社区合作开发。我们一起致力于通过新功能和新方案改进和扩展.NET平台。
为实现这一目标,一些功能显然被抛弃了。并且Asp.net必须针对您的应用程序定位一个有限的子集,以便在核心框架上工作。它基本上告诉框架将您可以使用的功能集限制为两者都支持的功能。
这是我的理解,但我可能错了: - )
答案 1 :(得分:1)
project.json中的“frameworks”条目可以在同一个项目中同时支持ASP.NET Core 5.0和ASP.NET 5.0。每个框架可能具有不同的依赖关系集,因为.NET Core具有有限的向后兼容性。
aspnet50 或 ASP.NET 5.0 将使用您的计算机上安装的机器级.NET Framework,该计算机通常与现有生态系统兼容。
aspnetcore50 或 ASP.NET Core 5.0 将使用新的应用本地.NET Core platform。 .NET Core是一个开源的跨平台 和包含.NET Framework子集的模块化框架。该 面向.NET Core的缺点是引用的包不能依赖于完整的.NET Framework。
如果您只是计划针对其中一个(可能是因为存在对需要完整.NET Framework的库的依赖性,例如Entity Framework 6),则可以删除另一个。