Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 因此,在.NETCore3以后不再提供.NET标准支持的情况下,如何共享代码?_C#_Asp.net_.net_Asp.net Mvc_Asp.net Core - Fatal编程技术网

C# 因此,在.NETCore3以后不再提供.NET标准支持的情况下,如何共享代码?

C# 因此,在.NETCore3以后不再提供.NET标准支持的情况下,如何共享代码?,c#,asp.net,.net,asp.net-mvc,asp.net-core,C#,Asp.net,.net,Asp.net Mvc,Asp.net Core,因此,对于.NET Core 3.NET标准(以及.NET 5以外的标准),我们可以说今天我有以下应用程序: WebForms.NET4.61 .NETMVC5 .NETCore2.x 使用“通用”代码、枚举等作为.NET标准2.0。现在我想构建一个.NETCore3.x应用程序 所以对于简单的POCO、枚举、类型等,这不是问题。但是,对于任何支持更复杂(目前符合.NET标准2.0)的内容,解决方案是什么 在我看来,我再也不能在WebForms、.NETCore2.x、.NETCore3.x

因此,对于.NET Core 3.NET标准(以及.NET 5以外的标准),我们可以说今天我有以下应用程序:

  • WebForms.NET4.61
  • .NETMVC5
  • .NETCore2.x
使用“通用”代码、枚举等作为.NET标准2.0。现在我想构建一个.NETCore3.x应用程序

所以对于简单的POCO、枚举、类型等,这不是问题。但是,对于任何支持更复杂(目前符合.NET标准2.0)的内容,解决方案是什么


在我看来,我再也不能在WebForms、.NETCore2.x、.NETCore3.x、.NET5之间共享代码了。因此,假设我必须支持那些传统平台(Webforms、.Net Core 2),我还有什么选择?

Net Core 5的发布是为了让MS划清界限,将所有3个不同的平台合并在一起。从网络框架到网络核心5的飞跃可能会很重要,但关键是,不再需要网络标准(因为这只是框架和核心之间的桥梁。)从核心的一开始就很明显,这一天就要到来了。最终,随着Net Core 5的发布,我们知道了这一天。意图(我相信)Net Core 5将不再需要标准,并使框架进入新开发的退役阶段。

请注意,两者是不同的东西。Net Core是运行时和API,类似于.Net Framework,而ASP.Net Core是web框架,类似于ASP.Net。ASP.Net Core间接目标(1.x和2.x通过.Net标准)或者是内置的框架依赖关系(3.0及更高版本).NET内核,但它们是不同的东西

.NET Core 3.0支持向下兼容.NET标准2.0的.NET标准2.1,因此它支持.NET标准2.0(甚至支持.NET标准1.0)

.NET标准2.1是新的.NET标准,目前只有.NET Core 3.0支持,而且.NET Framework永远不支持它,因此除非新的mono版本支持它,否则它本身毫无意义

ASP.NET Core 2.2以.NET标准2.0为目标,因此它受到.NET Core 2.2和.NET Framework 4.7.2+的支持(也是4.6.1+,但存在问题)

ASP.NET Core 3.0是.NET Core 3.0中的一个框架依赖项。ASP.NET Core 3.0本身不再适用于所有.NET标准2.0实现,而只适用于支持以.NET标准2.0为目标的库的.NET Core 3.0。唯一的限制是它将不再适用于.NET framework

.NET 5是.NET Core的较新版本,因此它将继续支持.NET标准2.1、.NET标准2.0及以下版本

结论和建议:

  • 针对.NET标准2.0的库可以在.NET Core(从2.0到.NET 5及更高版本)和.NET Framework上工作,因此它可以用于在所有应用程序之间共享代码

  • .NET Framework和ASP.NET都将消亡。目前还没有关于是否有一种简单的方法可以将现有ASP.NET项目迁移到.NET 5的信息,但我想不会。因此,如果您想针对任何未来的.NET,需要从ASP.NET到ASP.NET核心进行完整的重构

  • .NET Core 3.0支持Windows窗体和WPF,而不是“Windows窗体核心”或“WPF核心”,因此API在从.NET Framework迁移到.NET Core 3.0时基本保持不变。因此,如果Windows窗体或WPF应用程序纯粹是一个UI项目,而没有其他对.NET Framework的框架依赖,则可以轻松地将其迁移到.NET Core


你提供的链接没有提到.NET Core 3不再支持.NET标准。它说ASP.NET Core 3.0只受.NET Core 3.0支持,而不受.NET Framework支持。你添加了错误的链接或误读了文章吗?@SimplyGed我希望我误读了这篇文章……为什么这篇文章仍然谈论Microsoft.Extensions那么仍然作为.NET标准吗?那么关于.NET Core 3、.NET仍将支持.NET标准2.0向前发展的推断也是如此吗?我看不到任何关于这方面的直接声明。宣布推出dotnet 5时说,他们仍在考虑将来当所有的dotnet汇集在一起时是否需要NET标准,我在播客录中听到了同样的说法目前还没有决定,但如果他们还在考虑dotnet 5是否需要它,那么它仍然存在于核心3中“鉴于.NET Standard 2.1中添加的许多API需要运行时更改才能有意义,.NET Framework 4.8将保留在.NET Standard 2.0上,而不是实现.NET Standard 2.1..NET Core 3.0以及即将发布的Xamarin、Mono和Unity版本将更新以实现.NET Standard 2.1。”