原文: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.0release 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平台标准的更多相关文章

  1. Java平台标准版本

    JDK   Java Language Java Language     Tools &Tool APIs java javac javadoc jar javap jdeps Script ...

  2. 001-Java®语言规范、Java平台标准版文档、JVM概述

    一.概述 相关api地址:JDK10   JDK 9   JDK 8   JDK 7   JDK 6 Java语言和虚拟机规范: https://docs.oracle.com/javase/spec ...

  3. JT/T 1077-2016《道路运输车辆卫星定位系统车载视频平台技术要求》平台标准符合性检测合同

    合同编号: 道路运输车辆卫星定位系统 平台标准符合性检测合同 委托方(甲方): 受托方(乙方): 交通运输通信信息工程质量检测中心 签订时间: 签订地点: 北京市 委托方(甲方): 委托方(甲方): ...

  4. 【笔记】Unix 平台标准

    POSIX 表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEE ...

  5. GPS部标平台的架构设计(一)

    设计和开发一个GPS系统似乎并不太难,很多人马上就想到了地图,放大,缩小之类的功能,最多就是在加点报表之类的东西,就成了. 这种观点造成了业界内,很多GPS系统粗制滥造,不堪大用. 事实上,设计和开发 ...

  6. java学习笔记1--开发环境平台总结

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note1.html,转载请注明源地址. 1.Java程序设计语言 Java程序设计语言是一种高 ...

  7. 国内物联网平台(5):机智云IoT物联网云服务平台及智能硬件自助开发平台

    国内物联网平台(5)——机智云IoT物联网云服务平台及智能硬件自助开发平台 马智 平台定位 机智云平台是致力于物联网.智能硬件云服务的开放平台.平台提供了从定义产品.设备端开发调试.应用开发.产测.运 ...

  8. JT796、JT1077部标平台检测报名须知

    检测报名须知 申请道路运输车辆卫星定位系统平台标准符合性检测时,请先将1检测意向单(只针对企业监控平台).2符合性检测申请材料(基本材料包括:申请函.授权人身份证复印件.检测登记表.运输企业信息表.平 ...

  9. JT796、JT808、JT809、JT1076、JT1077、JT1078部标平台过检道路运输车辆卫星定位系统企业视频监控平台检测登记表

    道路运输车辆卫星定位系统企业视频监控平台检测登记表的具体格式如下: 报名检测需要以下材料: 0检测报名须知.doc   点击下载 1检测意向单.doc   点击下载 2-1道路运输车辆卫星定位系统企业 ...

随机推荐

  1. 极客DIY:如何用Siri与树莓派“交互”

    苹果在2014年推出的HomeKit智能家居平台的确给人眼前一亮的感觉.随着时间的推移,国外的黑客对HomeKit该逆向的逆向,结果也都汇总到了git.本着折腾到死的极客心态,从网上淘了一块树莓派进行 ...

  2. 服务器设置SSH 长连接

    1.echo $TMOUT 如果显示空白,表示没有设置, 等于使用默认值0, 一般情况下应该是不超时. 如果大于0, 可以在如/etc/profile之类文件中设置它为0. 2.修改/etc/ssh/ ...

  3. 再谈Weiphp公众平台开发——1、成语接龙插件

    易错点,注意插件的命名 1.创建插件.在weiphp管理后台创建成语接龙插件,勾选安装后立即启用,不需要配置项和管理列表.点“确定”完成插件的创建. 2.安装插件. 3.检测插件是否成功安装.返回到w ...

  4. supervisor的配置

    看了下文档,比较多.http://www.supervisord.org/ 抱着试试又不会怀孕的心态,trying,碰了几鼻子灰,记录如下, 方便大家 1. 安装 easy_install super ...

  5. JavaScript——Window对象

    1.serTimeout()和setinterval()可用于注册在指定的时间之后单词或者重复调用的函数. 2.window对象的location属性引用的是Location对象,表示该窗口当前显示的 ...

  6. Delete a node from BST

    Given a root node reference of a BST and a key, delete the node with the given key in the BST. Retur ...

  7. 多线程BackroundWorker 使用

    参考文章:http://www.cnblogs.com/inforasc/archive/2009/10/12/1582110.html using System; using System.Coll ...

  8. HDU 4942 Game on S♂play(线段树、模拟、扩栈)

    比赛的时候想到这题的大概做法,但由于卡别的水题...就赛后做了... 题意:给一个二叉树,每个结点有一个w[i],有3种操作,0 x表示左旋x,1 x表示右旋x,3 x表示询问x结点的价值,其中,价值 ...

  9. Enum:Face The Right Way(POJ 3276)

    面朝大海,春暖花开 题目大意:农夫有一群牛,牛排成了一排,现在需要把这些牛都面向正确的方向,农夫买了一个机器,一次可以处理k只牛,现在问你怎么处理这些牛才可以使操作数最小? 这道题很有意思,其实这道题 ...

  10. codeforces 496B. Secret Combination 解题报告

    题目链接:http://codeforces.com/problemset/problem/496/B 题目意思:给出 n 位数你,有两种操作:1.将每一位数字加一(当某一位 > 9 时只保存个 ...