在.Net Core之前,选择编译目标是一个相对简单的操作。现在,开发人员面临多种可能,选择一个目标不再那么显而易见了。要想对.Net Core有一个全面的了解,就要了解两个主要的概念:“目标框架别名(Target Framework Moniker)”和.Net Standard。

目标框架别名(TFM)

目标框架别名是.NET Core中应用程序所针对的框架类型+版本号的ID。我们可以把别名分成两个不同的类型:跨平台的目标.Net Standard和平台实现,如.Net 4.6、.Net Core 1.0和Xamarin。

.Net Standard

.Net Standard库是.Net Core可移植性的核心。其目的是定义标准的API集。这些API,如集合、线程、反射,是由.Net Core、.Net 4.5、Xamarin和Mono等平台实现的。它们是开发人员用来构建自己的库和应用程序的基本构建块。

从1.0到2.0,.Net Standard的每个版本都定义了一组特定的库。下面的代码直观地展示了标准库和平台之间的关系:

interface INetStandard10
{void Primitives();void Reflection();void Tasks();void Collections();void Linq();
}interface INetStandard11 : INetStandard10
{void ConcurrentCollections();void InteropServices();
}interface INetFramework45 : INetStandard11
{//特定于平台的APIvoid AppDomain();void Xml();void Drawing();void SystemWeb();void WPF();void WindowsForms();void WCF();
}

CoreFx GitHub库提供了所有API的列表及其相关的netstandard版本。

框架/运行时别名

除netstandard之外的别名是可以让应用程序在其中运行的、实际的运行时环境。对于新应用程序,常用的别名如下:

  • .NET Core - netcoreapp

  • .NET Framework - net

  • Universal Windows Platform - uap

  • Xamarin IOs - xamarinios

  • Mono Android - monoandroid

下面是一个简单的平台选择指南:

应用开发人员:编码应以netcoreapp1.0、uap10.0、net452、xamarinios等TFM为目标平台;

包/库作者:尽量以netstandard的最低版本为目标,那样可以在所有支持那个netstandard版本以及更高版本的平台上运行。

.Net Core和netcoreapp1.0比较

虽然表面上看起来相似,但.Net Core和netcoreapp1.0的意思完全不同。.Net Core这个叫法中没有版本号,通常用于描述实现.Net模块化、解决多个平台之间二进制兼容性问题的总体方案。但是,netcoreapp1.0有更具体的意义。它是可以在Windows、Mac OS和Linux上运行的跨平台运行时的别名。简而言之,.Net Core既可以指跨平台的方案,也可以指跨平台的运行时,这要视情况而定。

关于这一点,一个具体的应用场景是从Asp.Net迁移到Asp.Net Core时依赖项不支持.Net Core的问题。如果只是想以.Net Framework为目标平台,则这种迁移是可能的。例如,这让你可以使用Asp.Net Core,但仍然以.Net 4.6为目标平台。

原文地址:http://www.infoq.com/cn/news/2016/10/dotnet-core-standard-monikers


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

.Net Core及.Net Standard主要概念回顾相关推荐

  1. .NET Standard - 论 .NET Core 和 .NET Standard关系

    .NET Standard - 论.NET Core 和 .NET Standard关系 作为 .NET 系列的最新成员,.NET Core 和 .NET Standard 的概念及其与 .NET F ...

  2. .NET Core和.NET Standard有什么不同

    近日,微软发布了.NET Core 2.0,但是开发人员中间仍然存在一些疑惑,就是.NET Core..NET Standard.Xamarin和.NET Framework有什么不同. .NET F ...

  3. 揭示.NET Core和.NET Standard

    作为.NET家族的最新成员,有很多关于.NET Core和.NET Standard的误解,以及它们于.NET Framework之间的区别.在这篇文章,我会准确的解释他们究竟是什么,并看看何时应选择 ...

  4. 【转】Net Framework,Net Core 和 Net Standard 区别

    前几天我在一个群里看到有关这方面的讨论,最后感觉讨论的不是很清晰,有幸的是我们的项目去年就开始迁移NetCore的调研了,我个人多多少少也是有过这方面的研究.下面我将说一下我自己对着三个的认识如果有不 ...

  5. 概率论-重点概念回顾

    概率论-重点概念回顾 1.大数定理和中心极限定理 大数定理:在样本数量很大时,样本均值和数学期望接近.随机事件发生的频率接近于理论概率. 中心极限定理:在样本数量无穷大时,样本均值的分布呈正态分布. ...

  6. .net 5+ 知新:【2】 .Net Framework 、.Net 、 .NET Standard的概念与区别

    作为了解历史和演进过程,我们需要将 .Net Framwork ..Net. .Net Stander几个概念进行下理解. .net 代表跨平台框架,从.net 5开始就统一叫.net,废弃原来的.n ...

  7. .Net Framework 、.Net 、 .NET Standard的概念与区别

    作为了解历史和演进过程,我们需要将 .Net Framwork ..Net. .Net Stander几个概念进行下理解. .net 代表跨平台框架,从.net 5开始就统一叫.net,废弃原来的.n ...

  8. Core Data系列二——基础概念

    本文介绍的Core Data的基本概念是基于最常见的场合: Core Data配合SQLite数据库使用.Core Data也可以处理内存中的数据,这点不在讨论范围内 Core Data中基本的类 N ...

  9. .NET Framework、 .NET Core、.NET Standard区别。

    感谢书籍<ASP.NET Core 技术内幕与项目实战>及其作者杨中科. .NET开发平台是:.NET Framework. .NET Core.Xamarin/Mono的统称 .NET ...

最新文章

  1. String、StringBuffer与StringBuilder之间区别 (转载)
  2. asp.net request编码问题,(转载)
  3. foreach php,详解PHP中foreach的用法和实例
  4. [ant]通过Android命令自动编译出build.xml文件
  5. 攻防世界-web-bug-从0到1的解题历程writeup
  6. ios retain 与 copy 的区别
  7. Java8-Guava实战示例
  8. 复现Cell附图 |类器官的单细胞分析
  9. 为什么不能把CSS放到html中,为什么我的CSS代码不能在我的HTML文件中工作?
  10. python对于设计师有什么用-Python前程无忧深圳UI设计师岗位分析
  11. LinkedHashMap随笔
  12. 解决NuGet加载或下载资源慢的问题
  13. 如何使用word模板生成word文档(文本,图片)
  14. 4. GC 算法(实现篇) - GC参考手册
  15. 汇编:JMP指令原理
  16. 大一python基础编程题水果_【教程】简单教程:用Python解决简单的水果分类问题...
  17. 解决Python3.7根目录中没有Scripts文件夹
  18. 四甲基环四硅氧烷D4H
  19. GoogleEarth二次开发平台指南(2) ---如何把三维模型和图片导入到谷歌地球中
  20. Java多线程-Thread、Runnable、Executor

热门文章

  1. Haproxy 让后端RS记录真实IP
  2. Zabbix Maintenance 维护周期
  3. python 中文处理
  4. 关于MySQL 查询表数据大小的总结
  5. 从Banner入手保护linux系统服务器
  6. Xamarin效果第二十篇之GIS中加载三维白模
  7. 如何对一组 IP 地址 进行排序?
  8. IT与业务之间的鸿沟根源
  9. 浅谈.Net异步编程的前世今生----异步函数篇(完结)
  10. 公开征集 | 每个人都可以成为 COSCon'21 主论坛的开源明星