【问题标题】:What's the difference between the new netstandardapp and netcoreapp TFMs?新的 netstandardapp 和 netcoreapp TFM 有什么区别?
【发布时间】:2016-08-26 01:35:51
【问题描述】:

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

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

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

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

那么,netcoreapp 究竟应该是什么?我发现了它的跟踪问题here,,其中包括底部的评论,有点解释了区别是什么,但我不明白它们之间有什么区别

NETStandard.Library + 应用主机

.NET Core 基础安装

是。谁能给我解释一下?

【问题讨论】:

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


    【解决方案1】:

    .NET 标准库 (netstandard) 是跨应用程序模型的一致库。 .NET Core (netcoreapp) 运行在 .NET 标准库之上,是一个 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 Standard 应用程序是可以在任何 .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 标准应用程序等。NETStandardApplication 是一个具体的目标框架,它代表单个具有 API 表面和实现的平台。 .NET 标准应用程序可以自行运行。 .NETStandard 库必须由特定的具体目标框架发布或使用,才能在该类型的应用程序中使用。

    【讨论】:

    • 您可以删除您的答案或至少修改它吗? netstandardapp 已死。查看其他答案。
    • 更新了 .NETStandardapp 已过时并且 NETCoreapp 取而代之的答案。谢谢
    • 那么为什么在我创建“类库(.NET Core)”项目时会得到.NETStandard 的引用?
    • 为什么 .NET Core 目标框架代表 Windows 8、Windows 8.1 和通用 Windows 平台应用程序? .NET Core 不是可移植的吗? netcorenetcoreapp TFM 之间有什么区别?
    • 没有netcore TFM。所以没有区别。是的 .NET Core 是跨平台的。答案有点过时,所以我会更新它。
    【解决方案2】:

    新的 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。CLI 1.0.0 RC2 将不支持 NetStandardApp。”

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    • 2011-02-25
    • 2011-11-22
    相关资源
    最近更新 更多