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

时间:2016-05-01 04:05:30

标签: c# .net nuget asp.net-core .net-core

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

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

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

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

那么,netcoreapp应该是什么?我找到了跟踪问题here,,其中包括底部的评论,有点解释了区别是什么,但我没有得到什么区别

  

NETStandard.Library + app hosts

  

.NET Core base install

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

2 个答案:

答案 0 :(得分: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核心应用程序”。品牌重叠是   不幸的。

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

Overview of .NET Future innovation

答案 1 :(得分:18)

  

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

netstandardapp已过时,netcoreapp取代了它。

  

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

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

  

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

NETStandard.Library + app hosts 是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&gt; netstandardapp目标框架名字对象的状态是'#34;不再有效。&#34;

https://github.com/dotnet/cli/issues/2482&gt;需要将针对NetStandardApp的&#34;项目移植到NetCoreApp。 CLI 1.0.0 RC2不支持NetStandardApp。&#34;

https://www.myget.org/feed/aspnetvnext/package/nuget/NETStandard.Library&gt;包裹历史显示2016年4月发生了重大变化。