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

Jam*_* Ko 70 .net c# nuget .net-core asp.net-core

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

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

据我所知,netstandard.NET Core相当于便携式配置文件; 它允许您使用单个名字对象来定位多个平台,而不是明确地拼写出您支持的每个平台,例如portable-net45+netcore45+wp81.

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

那究竟netcoreapp应该是什么?我在这里找到了它的跟踪问题,其中包括底部的评论,有点解释了区别是什么,但我没有得到它们之间的区别

NETStandard.Library + app主机

.NET Core基础安装

是.有人可以向我解释一下吗?

Mar*_*Put 37

.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 Standard应用程序是一个可以在任何.NET Core运行时运行的应用程序:CoreCLR(当前),.NETNative(未来).它可以在许多.NET核心平台(Windows,OSX,Linux)中运行.它依赖于给定运行时提供的主机.它是一个可组合的框架,由应用程序所依赖的包构建.它的程序集加载策略允许没有任何应用程序配置的更新版本的依赖项(例如:不需要BindingRedirects).

问:这与.NETCore有何不同?答:.NETCore目标框架代表Windows 8,Windows 8.1和通用Windows平台应用程序.出于兼容性目的,此名字对象不能重用于".NET Core应用程序".品牌重叠是不幸的.

问:这与.NETStandard有何不同?答:NETStandard目标框架是一个抽象的目标框架,代表了许多框架和平台的API表面.因此,NETStandard程序集可以在支持该程序集所针对的NETStandard的任何平台上运行,例如:.NET桌面,Windows Phone,通用Windows平台应用程序,.NET标准应用程序等.NETStandardApplication是一个具体的目标框架,代表单个具有API表面和实现的平台..NET标准应用程序可以自行运行..NETStandard库必须由特定的具体目标框架发布或供消费,以便在该类型的应用程序中使用.

.NET未来创新概述

  • 你能删除你的答案或至少修改它吗?netstandardapp死了.看到另一个答案. (4认同)
  • 更新了 .NETStandardapp 已过时且 NETCoreapp 替换它的答案。谢谢 (3认同)
  • 那么究竟为什么当我创建“类库 (.NET Core)”项目时,我会得到对“.NETStandard”的引用? (2认同)

Sha*_*tin 19

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

netstandardapp已经过时了,netcoreapp取而代之.

那么,netcoreapp应该是什么呢?

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

我不知道NETStandard.Library + app主机和.NET Core基础安装之间有什么区别.有人可以向我解释一下吗?

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

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

NET Core base install是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.Net 1.0ta RC2不支持NetStandardApp."

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

  • 如果您希望在源代码中可视化内容,您会对此感到满意:https://gist.github.com/davidfowl/8939f305567e1755412d6dc0b8baf1b7.这个要点是由ASP.NET Core的架构师创建的. (10认同)