新的netstandardapp和netcoreapp TFM之间有什么区别?

我注意到NuGet最近增加了对与.NET Core相关的几个新的TFM的支持,包括:

  • netstandard (1.0-1.5)
  • netstandardapp (1.5)
  • netcoreapp (1.0)

据我所知, netstandard是一个可移植configuration文件的.NET Core等价物; 它允许您使用单个名字对象来定位多个平台,而不是明确地说明您支持的每个平台,例如portable-net45+netcore45+wp81

同时,根据这个文档, netstandardapp是.NET Core中的一个控制台应用程序; 它表示任何.NET Core运行时(如CoreCLR,CoreRT)。

那么, netcoreapp应该是什么呢? 我在这里发现了跟踪问题,其中包括底部的评论,有点解释了什么区别,但我不明白什么区别

NETStandard.Library +应用程序主机

.NET核心库安装

是。 有人可以向我解释吗?

.NET标准库(netstandard)是跨应用程序模型的一致库。 .NET Core(netcoreapp)运行在.NET标准库之上,是一个AppModel。 从github页面,他们回答了什么是.NET标准应用程序,与.NET Core有何区别( https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-standard-applications.md )和( https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md

更新: .NETStandardapp已经过时。 NETCore应用程序取代它( https://github.com/NuGet/Home/issues/2524

问:什么是.NET标准应用程序? 答:.NET标准应用程序是可以在任何.NET Core运行时运行的应用程序:CoreCLR(current),.NETNative(future)。 它可以运行在许多.NET核心平台之一(Windows,OSX,Linux)上。 它依赖于给定运行时提供的主机。 这是一个由应用程序所依赖的包构build的可组合的框架。 它的程序集加载策略允许更新版本的依赖关系,而无需任何应用程序configuration(例如:BindingRedirects不是必需的)。

问:这与.NETCore有什么不同? 答:.NETCore目标框架代表Windows 8,Windows 8.1和通用Windows平台应用程序。 为了兼容性的目的,这个名字对象不能被重用于“.NET核心应用程序”。 品牌重叠是不幸的。

问:这与.NETStandard有什么不同? 答:NETStandard目标框架是一个表示许多框架和平台的API表面的抽象目标框架。 因为这样的NETStandard程序集可以在支持该程序集所针对的NETStandard的任何平台上运行,例如:.NET桌面,Windows Phone,通用Windows平台应用程序,.NET标准应用程序等。NETStandardApplication是一个具体的目标框架,平台与API表面和实现。 .NET标准应用程序可以自行运行。 .NETStandard库必须为特定的具体目标框架而被发布,以供在该types的应用程序中使用。

.NET概述未来的创新

新的netstandardapp和netcoreapp TFM之间有什么区别?

netstandardapp已经过时, netcoreapp取而代之。

那么,netcoreapp应该是什么呢?

netcoreapp是.NET核心平台的目标框架名字。 如果您将netcoreapp添加到您的project.json的框架部分,那么您的应用程序将在.NET Core上运行。

我不明白NETStandard.Library +应用程序主机和.NET核心基地安装之间的区别。 有人可以向我解释吗?

NETStandard.Library +应用程序主机是NetStandard.App包。 不要用这个 – 已经死了。 它包括三个应用程序主机包和标准库。

  • Microsoft.NETCore.DotNetHostPolicy
  • Microsoft.NETCore.Platforms
  • Microsoft.NETCore.Runtime
  • NETStandard.Library

NET核心基本安装是Microsoft.NetCore.App包。 改用这个。 它保留上述两个软件包,将其中的两个包括在内,并添加了大约37个附加的Microsoft.*System.*软件包。

  • 其他Microsoft.*程序集
  • Microsoft.NETCore.DotNetHostPolicy
  • Microsoft.NETCore.Platforms <----- 2016年4月,这两个成了
  • Microsoft.NETCore.Runtime <------- NETStandard.Library的一部分。
  • NETStandard.Library
  • 附加System.*组件

参考

https://github.com/NuGet/Home/issues/2524 >指出netstandardapp目标框架名字对象“不再有效”。

https://github.com/dotnet/cli/issues/2482 >表示“NetStandardApp的项目需要移植到NetCoreApp,CLI 1.0.0 RC2不支持NetStandardApp”。

https://www.myget.org/feed/aspnetvnext/package/nuget/NETStandard.Library >软件包历史logging显示2016年4月发生的重大变化。