.NET Core项目添加对.NET Framework项目的引用。它为什么可能?

时间:2017-12-18 18:08:40

标签: asp.net .net asp.net-core

我有以下项目:

.NET Core 2.0 Web应用程序

.NET Standard 2.0类库&

.NET Framework 4.5类库。

我将.net框架类库的引用添加到asp.net核心web api项目中。它看起来效果很好。

我想知道为什么可以将.NET Framework类库项目的引用添加到ASP.NET Core Web API或MVC中?

它不应该只允许向Core项目添加标准库或核心库引用? 这个带有.NET Framework类库引用的核心Web项目是否仍然跨平台?

更新

根据Phiter评论:

"如果您将.net框架库导入到您的项目中,它将不再是跨平台的,但如果您愿意,可以自由地执行。他们允许它,因为您可能想要使用.net核心并且仍然在Windows上。"

因此,如果这是一个原因,如果我想将我的项目绑定到.NET Framework并保留在Windows上,为什么我从一开始就使用Core Web Project?

我认为我们使用核心项目来实现跨平台能力,如果没有,.Net框架不是更好的选择吗?

更新

mason评论:

"没什么好笑的:ASP.NET Core项目不必在.NET Core上运行。它也可以在.NET Framework上运行。

仅仅因为它被称为“核心”'并不意味着他们是相关的。他们本可以称之为ASP.NET FancyPants并让它在.NET Core和.NET Framework上运行,你不会感到困惑。微软只是简单地命名。"

更新(2018年11月12日)

A first look at changes coming in ASP.NET Core 3.0 - Fully leveraging .NET Core

作为announced on the .NET Blog earlier this month,由于.NET Framework的就地更新特性以及限制更改的愿望,.NET Framework将获得更少的.NET Core中更新的平台和语言功能。那可能会破坏现有的应用程序。确保ASP.NET Core能够充分利用.NET Core向前发展的改进,ASP.NET Core will only run on .NET Core starting from 3.0。继续前进,您可以简单地将ASP.NET Core视为.NET Core的一部分。

今天在.NET Framework上使用ASP.NET Core的客户可以使用2.1 LTS release以完全支持的方式继续这样做。 2.1的支持和服务将持续到2021年8月21日(根据.NET Core support policy宣布LTS发布后3年)。

2 个答案:

答案 0 :(得分:8)

这只是作为.NET Standard/Core 2.0的一部分添加的。只要.NET Framework DLL仅引用.NET标准中的内容,它就会使用类型转发到.NET Core实现。

答案 1 :(得分:3)

我不知道是什么让微软允许将.net框架类库引入.net核心项目,但作为程序员,我很满意这个补贴。

您认为允许.net核心应用程序引用.net框架库非常有用,以防您想要从Windows开始并计划将来跨平台。

我们处于许多有用的开源库不完全支持.net核心的阶段,直到本文发表之日,masstransit就是一个例子,所以当我开发一个新软件时,我将使用.net核心项目取决于这些库,我将在以后支持.net核心时更新它们。