原文: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. Python自动化之pickle和面向对象初级篇

    pickle模块扩展 1 pickle之文件操作 示例1 with open("test", 'rb') as f: lines = f.readlines() print(pic ...

  2. Python中sorted()方法

    Python中sorted()方法的用法 1.先说一下iterable,中文意思是迭代器. Python的帮助文档中对iterable的解释是:iteralbe指的是能够一次返回它的一个成员的对象.i ...

  3. faad解码aac

    // faad2.cpp : 定义控制台应用程序的入口点. #include "stdafx.h" #include <cassert> #include <io ...

  4. phpcms更换域名||外网访问本地网站

    在网站在发展的过程中,很可能多次的修改域名:然后就发现我的搜索页还是之前的域名的链接地址,那么在PHPCMS V9中我们要怎么进行设置呢?   请进行以下步骤的修改: 修改/caches/config ...

  5. Cannot load supported formats: Cannot run program "svn": CreateProcess error=2

    svn CreateProcess error=2, 系统找不到指定的文件 IntelliJ IDEA 13.1.2安装后,SVN checkout时候会出现如下错误: Cannot load sup ...

  6. 【GoLang】深入理解slice len cap什么算法? 参数传递有啥蹊跷?

    先上结论 .内置append函数在现有数组的长度 < 时 cap 增长是翻倍的,再往上的增长率则是 1.25,至于为何后面会说. .Go语言中channel,slice,map这三种类型的实现机 ...

  7. POJ 1258

    http://poj.org/problem?id=1258 今天晚上随便找了两道题,没想到两道都是我第一次碰到的类型———最小生成树.我以前并没有见过,也不知道怎么做,然后就看书,思路很容易理解 但 ...

  8. Appium 客户端库 API

    ## Appium 客户端库 Appium 有对应以下语言的客户端库: 语言 | 代码 :--|--:[Ruby][rubygems] | [GitHub](https://github.com/ap ...

  9. bing壁纸xml地址

    http://www.bing.com/gallery/?src=livesino# http://www.bing.com/HPImageArchive.aspx?format=xml&id ...

  10. Dnsmasq安装与配置-搭建本地DNS服务器 更干净更快无广告DNS解析

    默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了不少的问题,首当其冲的就是上网时经常莫名地弹出广告,或者莫名的流量被消耗掉导致网速变慢.其次是部分网站域名不能正常 ...