【译】DotNet 5.4或者说 .NET平台标准
原文:DotNet 5.4 or .NET Platform Standards
是的,你看到的确实是“DotNet 5.4”。使用Visual Studio 2015 RC1 update来创建一个NuGet类库。并且来看一下Project.json文件,你将会惊异于在frameworks配置节中看到了“DotNet 5.4”。最近ASP.NET 5 被重命名为ASP.NET Core 1.0,那么这个DotNet 5.4是从何而来呢?他们还没有发布ASP.NET Core 1.0的release RC 2版本,我很可能有这样的疑问“我真的错失了Dotnet 5.1到5.3的发布版吗?”。
Project.json文件的截图如下。注意framework配置节。
到底什么是DotNet 5.4
最近当ASP.NET 5被重命名ASP.NET Core 1.0时,它引起了.NET社区的广泛关注,但是微软又用“DotNet 5.4”造成了困惑。好吧,“DotNet 5.4”对于你现在正在生成和编译应用程序用的框架来说,它不是一个真正的框架。它是“平台别名”,一个新的被称为.NET平台标准(原文:.NET Platform Standard,以下均指代这个术语)。
那.NET平台标准又是什么呢?
在我们研究.NET平台标准之前,理解“为什么”是一个新标准是很重要的。好的,新标准就是把所有不同的别名(.NET,Windows,Windows Phone,Mono,.NET Core,等等)都统一到一个单独的别名之下。它的创建用一个易于理解的平台版本计划,来对未来.NET可能出现的平台进行二进制代码移植,提供了一个更具体的确保(原文是:It is created to provide a more concrete guarantee of binary portability to future .NET-capable platforms with an easier-to-understand platform versioning plan.)。二进制代码可移植性是通过PCL(Portable class library)来实现。
对于不熟悉PCL的读者简单说一下,PLC是在Visual Studio中的一个项目类型。这种类型的项目能生成一个被一组平台引用的二进制程序集。所以,当你创建一个PCL项目时,将会询问你目标平台有哪些。
PCL程序集仅能运行在选定的框架上。我们拿上面图片举例子,这个PCL项目将会运行在.NET Framework 4.6、ASP.NET Core 1.0和Windows Universal 10.0这三个平台上。在PCL术语中,用别名词汇(译者注:原文是the term moniker,我的理解就是指ASP.NET Core 1.0之类的名称)来定义平台。在上面的例子中有3个不同的别名。而问题在于,如果明天出现一个新的平台,那么之前创建的PCL项目就无法与之适配。它需要通过在目标平台列表中增加新的平台,并重新发布类库的一个新版本来实现与之适配。所以PCL用一个预定义的别名列表来定义目标平台。
解决这一问题之道就是.NET平台标准。在这一新的解决方式中,有一个单独的别名。所以类库不再是别名的组合。记住,.NET平台标准就其本身而言并不是一个平台。它是实现平台的一个标准。
要理解它的实现机制,请看下面的表格。
上面的列表是最新的,但是当初一开始发布它的时候,“netstandard"这个别名是”dotnet",并且版本号是5.1到5.4,而不是图片中的1.0到1.4,所以就是那时引入了DOTNET 5.4这个概念。尽管开发团队更改了这个表格,但是在模板代码中依然没变(译者注:原文是but reference in code is still there,就是指创建一个NuGet类库项目时,VisualStudio使用的项目模板中的代码,也就是Project.json这个文件的代码中framework这个配置节中的内容)。随着ASP.NET Core 1.0 RC 2的发布,这里应该会被改为netstandard。
如何理解这个表格
- 如果一个类库指定.NET平台标准1.3版本,那么它仅能够运行在.NET Framework 4.6或更新的框架、Universal Windows Platform 10(UWP)、DNX Core 5.0和Mono/Xamarin这些平台上。
- 如果一个类库指定.NET平台标准1.3版本,那么它能够引用(原文:consume)所有来自之前的.NET平台标准的版本(1.2、1.1、1.0)。
总结
随着ASP.NET Core 1.0的发布越来越近,一切都会确定下来并步入正轨。在命名上频繁改动的尴尬已经被处理,.NET正在改变,并且被看作是一个平台(这一句原文是:The name dilemma is already addressed .NET is changing and it can be considered as a platform.)。“.NET平台标准”正在迈向真正的在二进制层面做到可移植的时代。
就这样了,各位。请关注这个博客并在你的社交网络中分享它。同时也请你在评论区留下你的建议和反馈。
原文:DotNet 5.4 or .NET Platform Standards
【译】DotNet 5.4或者说 .NET平台标准的更多相关文章
- Java平台标准版本
JDK Java Language Java Language Tools &Tool APIs java javac javadoc jar javap jdeps Script ...
- 001-Java®语言规范、Java平台标准版文档、JVM概述
一.概述 相关api地址:JDK10 JDK 9 JDK 8 JDK 7 JDK 6 Java语言和虚拟机规范: https://docs.oracle.com/javase/spec ...
- JT/T 1077-2016《道路运输车辆卫星定位系统车载视频平台技术要求》平台标准符合性检测合同
合同编号: 道路运输车辆卫星定位系统 平台标准符合性检测合同 委托方(甲方): 受托方(乙方): 交通运输通信信息工程质量检测中心 签订时间: 签订地点: 北京市 委托方(甲方): 委托方(甲方): ...
- 【笔记】Unix 平台标准
POSIX 表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEE ...
- GPS部标平台的架构设计(一)
设计和开发一个GPS系统似乎并不太难,很多人马上就想到了地图,放大,缩小之类的功能,最多就是在加点报表之类的东西,就成了. 这种观点造成了业界内,很多GPS系统粗制滥造,不堪大用. 事实上,设计和开发 ...
- java学习笔记1--开发环境平台总结
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note1.html,转载请注明源地址. 1.Java程序设计语言 Java程序设计语言是一种高 ...
- 国内物联网平台(5):机智云IoT物联网云服务平台及智能硬件自助开发平台
国内物联网平台(5)——机智云IoT物联网云服务平台及智能硬件自助开发平台 马智 平台定位 机智云平台是致力于物联网.智能硬件云服务的开放平台.平台提供了从定义产品.设备端开发调试.应用开发.产测.运 ...
- JT796、JT1077部标平台检测报名须知
检测报名须知 申请道路运输车辆卫星定位系统平台标准符合性检测时,请先将1检测意向单(只针对企业监控平台).2符合性检测申请材料(基本材料包括:申请函.授权人身份证复印件.检测登记表.运输企业信息表.平 ...
- JT796、JT808、JT809、JT1076、JT1077、JT1078部标平台过检道路运输车辆卫星定位系统企业视频监控平台检测登记表
道路运输车辆卫星定位系统企业视频监控平台检测登记表的具体格式如下: 报名检测需要以下材料: 0检测报名须知.doc 点击下载 1检测意向单.doc 点击下载 2-1道路运输车辆卫星定位系统企业 ...
随机推荐
- CentOS完美搭建Redis3.0集群并附测试
线上的统一聊天和推送项目使用的是redis主从,redis版本2.8.6 redis主从和mysql主从目的差不多,但redis主从配置很简单,主要在从节点配置文件指定主节点ip和端口:slaveof ...
- UINavigationItem UINavigationBar 关系分析
目录 1.关系分析 2.关系综述 3.概念点 4.疑问 1.关系分析 UIBarItem-> UIBarButtonItem -> UINavigationItem 1.1 UIBarIt ...
- IntelliJ IDEA License Server本地搭建教程
Licence地址直接填入 http://idea.qinxi1992.cn/ http://jetbrains.tencent.click 直接破解 本地教程: 2016年3月20日更新支持自定义端 ...
- Iterator中hasNext(), next() 和ResultSet结果集的next方法的区别
接口 Iterator专门的迭代输出接口,将元素一个个进行判断,用hasNext() 判断是否有值,用next()方法把元素取出.hasNext() 如果仍有元素可以迭代,则返回 true.next( ...
- 【云计算】marathon集群如何升级?
Upgrading to a Newer Version We generally recommend creating a backup of the ZooKeeper state before ...
- 用C语言把双向链表中的两个结点交换位置,考虑各种边界问题。
用C语言把双向链表中的两个结点交换位置,考虑各种边界问题. [参考] http://blog.csdn.net/silangquan/article/details/18051675
- android studio从1.5更新到2.0后terminal无法运行gradle命令,提示无法找到gradle命令
android studio从1.5更新到2.0后terminal无法运行gradle命令,提示无法找到gradle命令. 'gradle' 不是内部或外部命令,也不是可运行的程序 或批处理文件. 设 ...
- 彻底卸载MySql
刚装了下MySql,装的过程中由于修改了服务名,导致最后配置假死,不得已,重装. 但是重装时总是失败,于是google了一下,找到彻底卸载mysql的方法: 最近安装本地测试用 MySQL 服务器时总 ...
- 6.SpringMVC注解启用
SpringMVC注解可以帮助我们快速地注入 属性和参数 提高开发效率. 由于 有相当一部分人讨厌xml配置方式 注解可以覆盖 xml则不能 使用注解比xml规范化,因为很多注解都是java的规范的范 ...
- codeforces 556B. Case of Fake Numbers 解题报告
题目链接:http://codeforces.com/problemset/problem/556/B 题目意思:给出 n 个齿轮,每个齿轮有 n 个 teeth,逆时针排列,编号为0 ~ n-1.每 ...