【译】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道路运输车辆卫星定位系统企业 ...
随机推荐
- 这些情况下onReume不应该是你的选择
面试Android程序员的时候问过以下几个基本问题,得到的回答经常不尽人意: 1, Activity A跳转到Activity B,Activity B完成后,Activity A要刷新一下自己的数据 ...
- 简单的哈希表实现 C语言
简单的哈希表实现 简单的哈希表实现 原理 哈希表和节点数据结构的定义 初始化和释放哈希表 哈希散列算法 辅助函数strDup 哈希表的插入和修改 哈希表中查找 哈希表元素的移除 哈希表打印 测试一下 ...
- ubuntu14.04显卡驱动问题(amd5600k集显7650d)
安装ubuntu的时候,多次莫名其妙地黑屏,起初以为是最新得ubuntu14.04安装包不稳定,所以一直尝试了很多次. 重启-->安装-->黑屏(硬盘仍在转动,屏幕上什么都没有)--> ...
- 解压.tar.gz出错gzip: stdin: not in gzip format tar: /Child returned status 1 tar: Error is not recoverable: exiting now
先查看文件真正的属性是什么? [root@xxxxx ~]# tar -zxvf tcl8.4.16-src.tar.gz gzip: stdin: not in gzip format tar: ...
- ajax给全局变量赋值问题解决
$.ajax({ type: "post", //以post方式与后台沟通 url: "./php/chartAjax.php", //与此php页面沟通 da ...
- 获取客户端IP
function getIP(){ $ip = ""; if (getenv("HTTP_CLIENT_IP") && strcasecmp(g ...
- htpasswd命令
htpasswd命令是Apache的Web服务器内置工具,用于创建和更新储存用户名.域和用户基本认证的密码文件. 语法 htpasswd(选项)(参数) 选项 -c:创建一个加密文件:-n:不更新加密 ...
- LIGHTSWITCH 连接 MYSQL,中文字符不能保存----解决方法。
使用:dotConnect for MySQL () 作为 数据库连接的PROVIDER , 在 LIGHTSWITCH 中 引用外部的MYSQL 数据源. http://www.devart.co ...
- centos6.5 nginx开机启动
/etc/init.d/下添加nginxd文件,内容如下: #!/bin/bash # #chkconfig: - #description: Nginx is a World Wide Web se ...
- 50道java算法题(一)
[程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1 ...