Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
Asp.net core 为什么许多.NET核心程序集是针对.NET标准构建的?_Asp.net Core_.net Core_.net Standard - Fatal编程技术网

Asp.net core 为什么许多.NET核心程序集是针对.NET标准构建的?

Asp.net core 为什么许多.NET核心程序集是针对.NET标准构建的?,asp.net-core,.net-core,.net-standard,Asp.net Core,.net Core,.net Standard,例如,NuGet Microsoft.AspNetCore.Server.Kestral targets.NETStandard。我知道这可能是一个实际的选择,因为现在.NET framework/Xamerin应用程序可以使用这个包。然而,微软在软件包中加入NetCore这个词似乎是一个奇怪的选择 如果我从我的.NET完整框架web api中引用这个包,那么严格来说,我的api是一个.NET完整框架api,即使它由开源的.NET core web服务器Kestral提供服务 有人知道微软为什么

例如,NuGet Microsoft.AspNetCore.Server.Kestral targets.NETStandard。我知道这可能是一个实际的选择,因为现在.NET framework/Xamerin应用程序可以使用这个包。然而,微软在软件包中加入NetCore这个词似乎是一个奇怪的选择

如果我从我的.NET完整框架web api中引用这个包,那么严格来说,我的api是一个.NET完整框架api,即使它由开源的.NET core web服务器Kestral提供服务


有人知道微软为什么使用这个术语,或者我误解了什么吗

ASP.NET核心与.NET核心不同。ASP.NET核心也可以在完整的框架上运行(当前)。包名称引用此文件,而不是.NET Core


如果可以,为什么任何包都不会以.NET标准为目标呢?它将允许比只针对某一子集更广泛的使用

ASP.NET核心与.NET核心不同。ASP.NET核心也可以在完整的框架上运行(当前)。包名称引用此文件,而不是.NET Core


如果可以,为什么任何包都不会以.NET标准为目标呢?它将允许比只针对某一子集更广泛的使用

作为Sami Kuhmonen回答的补充:

取自

.NET标准是.NET API的正式规范,旨在在所有.NET实现中提供。NET标准背后的动机是在.NET生态系统中建立更大的一致性。ECMA335继续为.NET实现行为建立统一性,但是对于.NET库实现的.NET基类库(BCL)没有类似的规范

.NET标准支持以下关键场景:

  • 为所有要实现的.NET实现定义统一的BCL API集,独立于工作负载
  • 使开发人员能够使用同一组API生成可跨.NET实现使用的可移植库
  • 由于.NET API(仅针对OS API),减少甚至消除了共享源代码的条件编译
这意味着任何针对.NET标准的东西都可以在任何机器上运行,只要它有一个实现其目标标准的框架。例如,任何以.NET Standard 2.0为目标的操作都可以在具有以下任何框架版本(或更高版本)的计算机上运行:

  • .NET核心2
  • .NET Framework 4.6.1
  • 单声道5.4
  • Xamarin iOS 10.14
  • Xamarin Mac 3.8
  • Xamarin安卓8.0
  • 通用Windows平台10.0.16299
  • 统一2018.1

作为萨米·库莫宁答案的补充:

取自

.NET标准是.NET API的正式规范,旨在在所有.NET实现中提供。NET标准背后的动机是在.NET生态系统中建立更大的一致性。ECMA335继续为.NET实现行为建立统一性,但是对于.NET库实现的.NET基类库(BCL)没有类似的规范

.NET标准支持以下关键场景:

  • 为所有要实现的.NET实现定义统一的BCL API集,独立于工作负载
  • 使开发人员能够使用同一组API生成可跨.NET实现使用的可移植库
  • 由于.NET API(仅针对OS API),减少甚至消除了共享源代码的条件编译
这意味着任何针对.NET标准的东西都可以在任何机器上运行,只要它有一个实现其目标标准的框架。例如,任何以.NET Standard 2.0为目标的操作都可以在具有以下任何框架版本(或更高版本)的计算机上运行:

  • .NET核心2
  • .NET Framework 4.6.1
  • 单声道5.4
  • Xamarin iOS 10.14
  • Xamarin Mac 3.8
  • Xamarin安卓8.0
  • 通用Windows平台10.0.16299
  • 统一2018.1

core通常意味着它没有平台依赖关系。可能会对您有所帮助。请注意,这仅适用于(ASP.NET Core 2.x.)。core通常意味着它没有平台依赖性。可能会对您有所帮助。请注意,这仅适用于(ASP.NET Core 2.x.)。