拥抱.NET Core,学习.NET Core的基础知识补遗
前言
.NET Core的新特性之一就是跨平臺,但由于對之前框架的兼容導致編寫一個.NET Core類庫變得相當復雜,主要體現為相當多的框架目標和支持平臺,今天我們就對.NET Core的跨平臺特性進行一次梳理。
在.NET Core之前
其實早在.NET Core之前微軟就有推出.NET的跨平臺方案,不過這次的跨平臺指的不是Linux、OSX,而是微軟自家的平臺,如:NET、Silverlight、Windows8、Windows8.1、Windows Phone。
這個階段微軟將它稱作為:可移植類庫。
下面是可移植類庫的配置界面
在這個階段.NET開發就出現了分歧,類庫項目也分成了兩個:類庫、可移植類庫。
從理論上來說,可移植類庫由于類庫,因為它是真正意義上的統一類庫,但現實情況是大部分開發人員都選擇使用類庫而不是可移植類庫。
然而困難從此就開始生根(如果微軟之前統一了這兩個項目現在的情況或許會好很多)。
在.NET Core起步
第一階段(Project K)
KRE(K Runtime Environment)
KVM(K Version Manager)
KPM(K Package Manager)
K / KLR(K runtime / K language runtime (not sure))
這個階段到還好,很多東西剛接觸.NET Core的人可能根本沒有聽過,因為早早的被廢棄,所以影響不是很大。
第二階段(DNX)
DNX451
DNXCORE50
到這個階段微軟和一些第三方已經開始著手進行支持了。
第三階段(DOTNET5.0)
dotnet5.4
dotnet50
暢言
由此可以看到微軟改名部的強大。這里不是在摒棄開發團隊,而是這些動作為之后留下了復雜知識體系。
因為這個階段.NET Core已經發展了很長時間,也有很多第三方開始編寫支持的組件,為以后的兼容留下了隱患。
.NET Core 1.0
在這個版本微軟真正確定了.NET Core(netcoreapp)的命名,并推出了.NET Platform Standard(netstandard .NET標準)。
.NET Core兼容.NET Platform Standard1.6(netstandard .16)。
從此統一了開發模型,開發類庫時不在需要關心項目模型,因為.NET Core支持全平臺。
但為了兼容,Visual Studio還是保留了類庫、可移植類庫的項目模板。但推薦大家以后都使用.NET Core的類庫項目模版進行組件開發。
.NET平臺
官方給出了一張表
目前一起有9個平臺,其中 Windows Phone、Silverlight停止更新就還剩下7個平臺。
.NET Platform Standard
為什么推出?
現有的平臺已經夠多了,為什么還再推出一個新平臺?
目標
提供更好的可移植性在未來的.NET版本中
更容易理解平臺版本
簡單的說就是,微軟覺得.NET平臺太多了,想進行統一從而推出了netstandard。
大家可以將netstandard理解為一個公共類庫,不同的平臺可以兼容這個公共類庫。
兼容關系
netstandard的兼容
在以前的.NET Framework中API幾乎都是向下兼容的,也就是說.NET3.5兼容.NET2.0、.NET4兼容.NET3.5,具體的層次如下:
2.x < 3.x < 4.x
netstandard也是一樣。
1.0 < 1.1 < 1.2 < 1.3 < 1.4 < 1.5 < 1.6
平臺之間的兼容
對照上表netstandard支持的最低.net framework版本是4.5,也就是說.net4.5 支持netstandard1.1和以后的版本。
舉個例子(按照這個例子可以清楚的看懂上表的關系)
如果你開發的類庫配置為netstandard1.3,那么可以使用的平臺有:
.NET Framework4.6及以后的版本(4.6,4.6.1,4.6.2,4.6.3)
.NET Core 1.0及以后的版本
Universal Windows Platform 10.0及以后的版本
Mono/Xamarin Platforms
開發環境
Visual Studio(推薦使用)
Visual Studio 2015 Update 3
.NET Core 1.0.0 - VS 2015 Tooling Preview 2
ps:如果已經安裝了 vs2015 update3 在安裝.NET Core 1.0.0 - VS 2015 Tooling Preview 2時還是提示沒有安裝update3,可以使用“SKIP_VSU_CHECK=1”這個參數忽略vs的檢查。
在命令行使用:“DotNetCore.1.0.0-VS2015Tools.Preview2.exe SKIP_VSU_CHECK=1”進行安裝。
Visual Studio Code
Visual Studio Code
.NET Core SDK
參考資料
https://www.microsoft.com/net/core
FAQ
支持.NET4之前的版本嗎?
支持,只不過.NET4之前的版本沒有對.NET Platform Standard進行兼容,可以單獨設置兼容.NET4,.NET3.5等。
使用.NET Core就一定可以跨平臺嗎?
不一定,只有完全使用兼容.NET Platform Standard的類庫才可以跨平臺運行。
包還原失敗怎么辦?
包還原失敗一般有兩種情況。
1.依賴的版本不對,比如框架目標為.netstandard1.6,依賴的包只支持.net45這樣包就無法解析。
2.網絡問題,重試或FQ。
如何在舊項目上使用.NET Core相關的組件,如:依賴注入,日志?
使用.net4.6,可以兼容很大部分現代化組件。.net版本越高兼容的就越多。
寫在最后
這篇博文的主題本應該叫:擁抱.NET Core,開發第一個跨平臺類庫(DbUtils),后面又改成:擁抱.NET Core,開發第一個跨平臺類庫(1),而在撰寫過程中發現內容實在太多了,顧拆成了多個部分,今天先講一些基礎概念,后面在寫如何開發一個跨平臺類庫。
相關文章:
.NET Core & ASP.NET Core 1.0在Redhat峰會上正式發布
.NET Core:面向未來的開源跨平臺開發技術
微軟說它深愛著Linux,現在它用行動證明了
移植.NET Core計劃,整合各平臺變得更簡單了!
ASP.NET Core 介紹
通過幾個Hello World感受.NET Core全新的開發體驗
ASP.NET Core 運行原理剖析1:初始化WebApp模版并運行
.NET Core系列 : 1、.NET Core 環境搭建和命令行CLI入門
.NET Core系列 : 2 、project.json 這葫蘆里賣的什么藥
Asp.Net Core 發布和部署( MacOS + Linux + Nginx )
Asp.Net Core 發布和部署(Linux + Jexus )
學習ASP.NET Core,你必須了解無處不在的“依賴注入”
.NET Core應用類型(Portable apps & Self-contained apps)
.NET Core 1.0發布:微軟開源跨平臺大布局序幕
ASP.NET Core 運行原理剖析2:Startup 和 Middleware(中間件)
在Windows Server 2012 R2 Standard 部署 ASP.NET Core程序
ASP.NET Core 開發-Entity Framework (EF) Core 1.0 Database First
擁抱.NET Core,跨平臺的輕量級RPC:Rabbit.Rpc
使用 dotnet watch 開發 ASP.NET Core 應用程序
ASP.NET Core 發布至Linux生產環境 Ubuntu 系統
ASP.NET Core Docker部署
ASP.NET Core "完整發布,自帶運行時" 到jexus
全球首發免費的MySql for Entity Framework Core
ASP.NET Core開發-使用Nancy框架
.NET Core全新路線圖
解決.NET Core中MailKit無法使用阿里云郵件推送服務的問題
.NET Core第三方開源Web框架YOYOFx
ubuntu16.4下用jexus部署asp.net core rtm
原文地址:http://www.cnblogs.com/ants/p/5736787.html
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的拥抱.NET Core,学习.NET Core的基础知识补遗的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一步一步封装自己的HtmlHelper组
- 下一篇: 拥抱.NET Core,如何开发一个跨平