.NET Standard 2.0正式发布了
亦可赛艇
前天(2017年8月14日),.NET Standard 2.0正式版终于发布了,与之相配套的.NET Core 2.0也同时正式发布,真是令人振奋。
详情请看:https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-core-2-0/
这意味着.NET Standard最终走向了完善,.NET技术将获得全新的跨平台支持,当然我也迫不及待地把环境装上了。我要开始着手将公司的代码迁移到.NET Core平台上,以及让各个库全面支持.NET Standard 2.0。对于不太清楚.NET Framework、.NET Core以及.NET Standard之间的关系的朋友,我这里做一个简单的科普。
.NET的故事
.NET Framework诞生于2002年,伴随着Visual Studio 2002发布,这是一个高度模仿Java的运行平台,也就是说,编译器生成的不是机器语言代码,而是中间语言代码,然后再通过一个中间层,将中间语言代码翻译成机器语言来运行,所以拿它跟Java对比,大致如下:
Java平台 | .NET平台 | |
开发语言 | Java | C#、VB.NET、Managed C++等 |
中间语言 | Java bytecode | Common Intermediate Language(CIL) |
运行时 | Java Virtual Machine | Common Language Runtime(CLR) |
.NET第一个版本出来的时候,Bug是相当的多,性能低下(跟Java早期版本一样),并不怎么受待见,但由于微软的大力推进,很快推出了1.1版,修复了大量的问题,性能也有了一些提升,而之后发布的版本,一个比一个牛逼,从技术角度来说,在早10年的时间里(是的,从2007年发布的.NET Framework 3.5算起),它就实现了对Java的全面超越。(仅个人观点,无意引发语言之争……),其版本变更履历可以参考下维基百科:https://en.wikipedia.org/wiki/.NET_Framework
但.NET Framework最大的问题始终没有很好解决,那就是:跨平台问题。它只能运行于微软专属的Windows操作系统,这大大阻碍了其在服务器领域的普及,尽管有非官方支持的Mono,但跨平台这个事情上面,它确实没法跟Java相提并论。
在微软新一任CEO纳德拉上台了之后,微软迅速调整了其发展策略,从过去的一切以Windows为中心的策略转移到“云”上,重点是考虑为用户提供怎样的服务,而不是提供怎样的操作系统。.NET Core从此诞生。
.NET Core的正式版1.0是在2016年7月发布的,到现在一年出头。
.NET Core从功能上来看,是.NET Framework的子集,因为有些Windows专属的东西(如涉及到GUI的WPF)是没办法在Linux上实现的。
一切看起来非常美好,现在相当于出现了两个.NET平台(如果算上Mono的话就3个了),一个是传统的Windows上的.NET Framework,它仍旧继续发展着(当前最新版是4.7),另一个是跨平台版的.NET Core,功能略差,但却可以跨平台。现在的问题是,我开发了一些库,到底是要用.NET Framework开发还是.NET Core开发呢?源代码理论上来说都是相同的,但两个平台又确实存在着差异,于是一个标准应运而生,它紧接着.NET Core的步伐发布,这就是.NET Standard,微软发话了:符合.NET Standard标准的库,不管是.NET Framework还是.NET Core都能直接使用!
接下来的日子里,.NET Core和.NET Standard发展势头如日中天,版本迭代一个接一个,社区气氛热闹非凡,微软甚至把它们的代码托管在全球著名的同性交友网站github.com中(相比之下,Java阵营则显得有些死气沉沉),一年之后,.NET Core 2.0和.NET Standard 2.0横空出世……
各.NET平台对.NET Standard的支持
下图来自于https://docs.microsoft.com/en-us/dotnet/standard/net-standard,表明了各个.NET平台对.NET Standard的支持情况。从这我们可能看出,.NET平台其实还蛮多的,但最最常用的应该就是.NET Framework和.NET Core了,我们主要记住下图中红框标出来的两个版本号即可。
另外,有些人有疑问,那个“ASP.NET Core”是什么玩意儿?其实ASP.NET Core跟.NET Core没有什么直接关系,它是ASP.NET的新一代框架,原先是想叫“ASP.NET 5”,因为它的前面一个版本是4.5,但后来微软想赋予它一个更远大的使命,所以干脆重新命名为ASP.NET Core,版本从1.0开始,而随着.NET Core 2.0的发布,ASP.NET Core 2.0也跟着一起出了,你也许想问在.NET Core 2.0上跑旧的ASP.NET 4.5的程序行不行?当然行,不过有新一代的产品,我们还是得看看,合适的话把现有代码迁移过去吧。
接下来我们来安装.NET Core 2.0。
首先升级VS2017(非必要)
如何升级VS2017很多人不懂,其实并不是在About中点“Check Update”或类似的,而是使用Visual Studio专门的安装程序,在Windows 10开始菜单中输入“Visual Studio Installer”:
找到后运行Visual Studio Installer。接下来的操作很简单,不需要多说了,当前最新版是15.3.0:
安装.NET Core 2.0
到这里来下载.NET Core 2.0的SDK:https://www.microsoft.com/net/download/core
我下载的是dotnet-sdk-2.0.0-win-x64.exe,安装之,这个过程很简单。
安装好之后就可以将你的项目的Target Framework设置为.NET Standard 2.0了。
接下来我有什么使用心得,我会陆续发在我的博客上,也就是这里。
相关文章
- C#.Net实体代码生成工具(EntitysCodeGenerate)的使用及.NET中的ORM实现
- ASP.NET WebApi 基于JWT实现Token签名认证
- .NET开源Protobuf-net组件修炼手册
- .NET 分布式缓存中的发布和订阅模式
- 如何发布符合 .NET 准则的事件
- ASP.NET MVC 数据传递 控制器向视图传递
- Asp.Net Web API 2第十八课——Working with Entity Relations in OData
- Asp.Net Web API 2第三课——.NET客户端调用Web API
- ASP.NET MVC动作过滤器
- 博客园NET Core 发布工具 dotnet-cnblog,用于上传MarkDown 中的图片到cnblog
- WCF The service cannot be activated because it does not support ASP.NET compatibility
- ASP.NET Core应用针对静态文件请求的处理[1]: 以Web的形式发布静态文件
- .NET Core RC2发布在即,我们试着用记事本编写一个ASP.NET Core RC2 MVC程序
- 几个不错的开源的.net界面控件
- .NET平台开源项目速览(5)深入使用与扩展SharpConfig组件
- net start mysql 无法启动mysql解决方案之一【NET HELPMSG 3534】
- ADO.NET入门教程(一) 初识ADO.NET
- ASP.NET Core 3.0 使用gRPC
- . net core的发布
- EasyQuery Winforms/WPF/ASP.NET/JS
- Dynamsoft Dynamic .NET TWAIN for net Crack
- 关于ASP.net开启身份验证时集成的托管管道模式下不适用的 ASP.NET 设置