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


73

我注意到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 +应用程序主机

.NET Core基本安装

是。有人可以给我解释一下吗?

Answers:


39

.NET标准库(netstandard)是跨应用程序模型的一致库。.NET Core(netcoreapp)在.NET Standard Library之上运行,并且是一个AppModel。他们从GitHub页面回答什么是.NET Standard应用程序以及.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 Standard应用程序?
答:.NET标准应用程序是可以在任何.NET Core运行时上运行的应用程序:CoreCLR(当前)和.NETNative(将来)。它可以在许多.NET核心平台(Windows,OS X和Linux)之一上运行。它依赖于给定运行时提供的主机。这是一个可组合的框架,由应用程序所依赖的软件包构建而成。它的程序集加载策略允许较新版本的依赖项,而无需任何应用程序配置(例如,不需要BindingRedirects)。

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

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

.NET未来创新概述


6
您可以删除答案或至少修改它吗?netstandardapp已死。查看其他答案。
汤玛斯(Thomas)

1
更新了.NETStandardapp已过时而NETCoreapp取代了它的答案。谢谢
Martijn van Put

1
那么,为什么当我创建“类库(.NET Core)”项目时,我会得到引用.NETStandard
Simon_Weaver

为什么.NET Core目标框架代表Windows 8,Windows 8.1和通用Windows平台应用程序?.NET Core是否可移植?netcorenetcoreapp TFM之间有什么区别
Rosberg Linhares

1
没有netcore TFM。因此没有区别。是的.NET Core是跨平台的。答案有点不合时宜,所以我将对其进行更新。
Martijn van Put

20

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

netstandardapp已过时,请netcoreapp更换它。

那么,netcoreapp到底应该是什么?

netcoreapp是.NET Core平台的目标框架名称。如果添加netcoreapp到project.json的frameworks部分,则应用程序的构建将在.NET Core上运行。

我不明白NETStandard.Library +应用程序主机和.NET Core基本安装之间的区别是什么。有人可以给我解释一下吗?

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

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

NET Core的基本安装是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。CLI1.0.0 RC2将不支持NetStandardApp。”

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


11
当您喜欢可视化源代码中的内容时,您将对此感到满意:gist.github.com/davidfowl/8939f305567e1755412d6dc0b8baf1b7。要点由ASP.NET Core的架构师创建。
托马斯

@Thomas:非常友善的链接。简短但非常有用。
Stefan Steiger
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.