日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

拥抱.NET Core,如何开发一个跨平台类库

發(fā)布時間:2023/12/4 asp.net 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 拥抱.NET Core,如何开发一个跨平台类库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在此前的文章中詳細介紹了使用.NET Core的基本知識,如果還沒有看,可以先去了解“擁抱.NET Core,學習.NET Core的基礎知識補遺”,以便接下來的閱讀。

在本文將介紹如何配置類庫項目支持不同的平臺,并為不同的平臺進行兼容的編碼。


創(chuàng)建一個.NET Core類庫

首先我們創(chuàng)建一個.NET Core的類庫項目。

結構如下


設置項目支持的平臺

我們打開“project.json”文件,會看到如下內(nèi)容:

其中“framework”就是用來配置所支持的目標,默認為netstandard1.6。

要點回顧

問:netstandard1.6可以被應用在哪些平臺之上?(這里大家可以回憶一下)

答:

  • netcoreapp 1.0+(.NET Core)

  • net4.6.3(.NET Framework)

  • 如果你的答案跟此一致,那么恭喜你已經(jīng)基本掌握了各個平臺直接的關系了。

    支持net4和netcoreapp

    接著我們想讓類庫支持目標的為:net4 net45 netcoreapp。

    根據(jù)上一篇的內(nèi)容我們可以了解到,可以通過降低netstandard版本以來兼容更多的net平臺,其中netstandard1.1就可以支持net45,也就是說如果我們把netstandard1.6改為netstandard1.1就可以達成net45和netcoreapp1.0的支持,(這種方式是理論上最優(yōu)的,但可能只是一個夢,具體的會在下面的章節(jié)指出為什么),看上去像這樣:

    現(xiàn)在這個類庫可以兼容net45+和netcoreapp1.0+,那么net40呢?上篇的內(nèi)容中說net40根本沒有對netstandard做兼容。

    是的,net40沒有對netstandard做兼容,所以我們需要單獨設置一個新的目標,標識類庫同時需要被netstandard和net4使用。

    這邊的netstandard和net4是一個互不兼容的分支。修改后文件像這樣子:


    如何編碼?

    設定了不同的平臺后,在編碼方式上又有哪些區(qū)別?

    我們首先考慮一個問題,net45和net4是同一種性質(zhì)的實現(xiàn),只不過前者是后者的升級版,所以net4的大部分代碼net45可以無縫支持,也就是說基于net4的代碼不需要改動就可以讓net45進行支持。

    但netstandard是個新目標,其中包含了許多net平臺上沒有的類庫,比如:wcf,System.Web.dll等,那么改如何在一個項目中與net4、net45共存呢?

    我們來看一下“Class1.cs”代碼文件

    可以看到在左上方的下拉框中列出了這個類庫所支持的平臺,點擊選中其中一個平臺可以設置開發(fā)環(huán)境為這個選中的平臺。

    接著讓我們寫個Hello World。

    這是一個很簡單的寫法,可以發(fā)現(xiàn)Task.FromResult(“rabbit”)不支持net4,那么我們就需要利用“條件編譯符”設置在net4環(huán)境下的兼容代碼,修改之后看上去如下:

    根據(jù)項目框架選擇的不同ide會自動高亮當前生效的代碼。

    這樣我們就完成了GetName方法net4+和netstandard1.1的支持了。

    那么大家在回顧一下現(xiàn)在支持哪些平臺?

  • net4

  • net45

  • net451

  • net452

  • net4.6

  • net4.6.1

  • net4.6.2

  • net4.6.3

  • netcoreapp1.0

  • uap10.0

  • win8.0

  • win8.1

  • wpa8.1

  • Mono/Xamarin Platforms

  • mono

  • 是不是一下變得高大上,除了net4外其余的都依靠netstandard的強大支持。

    是不是netstandard版本越小越好?

    答案是否定的,雖然netstandard可以兼容更多平臺但有個很致命的缺點就是為了兼容損失了很多類庫和新特性,比如:

    這個屬性在net4.6之后才被支持也就是說netstandard1.3+才可以使用此屬性。

    當然這只是很小的一個例子,還有更多的組件不支持低版本。這意味著你得最更多的兼容操作,而有一些類庫的缺失可能是致命的。

    所以大家在編寫類庫的時候把我一下兼容的度,一般來說支持.net45+netcoreapp1.0+就可以了。


    看清“framework”的本質(zhì)

    以上的項目開發(fā)方式給我們照成一個錯覺,它就是一個東西,同樣的編碼,同樣的項目文件。

    其實不同的framework中是完全獨立的,共享的只是文件而已,framework配置的越多你項目的生成速度越慢

    為什么呢?讓我們看一下vs的輸出窗口。

    有次可以看出在生成環(huán)境vs將不同的framework區(qū)別看來,進行單獨生成,上面我們配置了兩個平臺,vs就執(zhí)行了兩次生成,項目越大框架越多生成越慢。

    所以不要被表明混淆,在進行編碼的時候要記清楚他們是兩個獨立的東西,只不過在開發(fā)方式上微軟做出了優(yōu)化。


    寫在最后

    本文介紹了開發(fā)一個跨平臺類庫的基本做法,接下來會接著介紹:

  • 不同框架直接的依賴(引用的包和程序集)

  • 如何將.NET Core類庫項目打包成nuget包

  • 如何讓舊的.NET Framework項目使用這個跨平臺類庫。

  • 跨平臺類庫不同目標中代碼兼容的小技巧

  • 原文地址:http://www.cnblogs.com/ants/p/5740473.html


    .NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

    總結

    以上是生活随笔為你收集整理的拥抱.NET Core,如何开发一个跨平台类库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。