Visual Studio 2015和2017里面应该创建哪种 Class Library

来源:互联网 发布:二维数组哪个是行 编辑:程序博客网 时间:2024/05/17 01:18

微软有些时候是一副不讲道理的大家长作风。一个例子就是它在 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跨平台或扫描二维码关注

阅读全文
0 0