Visual Studio 2015和2017里面应该创建哪种 Class Library
微軟有些時候是一副不講道理的大家長作風。一個例子就是它在 Visual Studio 2015/2017 里面配置了一大堆普通人沒法理解的 Class Library 模板。
你真的知道應該選哪個嗎?
這就是 VS2017 里面你可能熟悉的長列表(而且因為我沒有安裝 UWP 開發項目,這個表還不完整)。其實仔細研究一下,也沒有那么可怕了,它們實際上只有兩類。
平臺相關的 Class Library
從 .NET Framework 1.0開始,Class Library (.NET Framework)這個類型就存在了。所以閉著眼睛你也知道這種類型的工程只能被針對 .NET Framework 工程使用。有了這個基本認識,你同樣也就知道 iOS、tvOS、watchOS、Android 和 UWP 等模板也是平臺相關的,只有同一平臺的工程才能夠使用它。
雖然這樣的模板生成的工程不能跨平臺使用,但是它依然是一個合理劃分項目粒度的好方式,使得每個 Class Library 內部高聚合,和其他工程之間低耦合。
可以跨平臺使用的 Class Library
Class Library (Portable) 是微軟最先想到的跨平臺 Class Library 方案,一般叫做 PCL。由于它實際使用中的種種限制,微軟現在已經不再推薦。
用來取代 PCL 的新方案,就是 Class Library (.NET Standard)。相比 PCL,這種類型的工程使得開發人員可以使用更大的 API 集合。也許你還需要一些實踐來好好體會,不過現在簡單背一下答案就好了,“如果你需要開發跨平臺的項目,這個模板就是你需要的”。
當然,還有幾個特例需要特別說明,.NET Core 和 Xamarin.Forms。
Class Library (.NET Core) 模板創建的工程只能被其他 .NET Core 項目使用。這當然和其他平臺相關的 Class Library 模板一樣。但是 .NET Core 是個特殊的平臺,它可以運行在多個操作系統之上(這就出現了又一個跨平臺)。.NET Core 的跨“平臺”是指跨多個操作系統(Windows/Mac/Linux)。而 .NET Standard 的跨“平臺”,是指它能夠被多個平臺(.NET Framework/.NET Core/Mono/Xamarin/Unity)的工程所引用。
Class Library (Xamarin.Forms) 也比較特殊。首先它暫時是基于 PCL 的模板,未來應該會升級為基于 .NET Standard 的模板。其次,能夠引用它的工程,當前限制是 Xamarin 的相關工程,未來可能會增加其他工程類型。
如何在這些工程之間遷移代碼
方式很多,不過最土的還是剪切粘貼了。你可以自己一一嘗試。
本來嘛,這就是拋出的一塊磚,希望沒有打疼你,畢竟微軟未來總會找到一個做文檔的角度來把這些問題講清楚吧。
原文地址:http://weibo.com/ttarticle/p/show?id=2309404123912014305645
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的Visual Studio 2015和2017里面应该创建哪种 Class Library的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DDD理论学习系列(3)-- 限界上下文
- 下一篇: 微软向开发者推出区块链概念验证框架