微软有些时候是一副不讲道理的大家长作风。一个例子就是它在 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相关推荐

  1. Visual Studio 2015、2017、2019 和 2022运行库合集

    Microsoft Visual C++ 2015-2022 X86:https://aka.ms/vs/17/release/vc_redist.x86.exe Microsoft Visual C ...

  2. Microsoft visual studio 2015已停止工作及项目创建失败解决方法

    Microsoft visual studio 2015已停止工作 问题明细信息 问题签名:   问题事件名称: CLR20r3   问题签名 01: devenv.exe   问题签名 02: 14 ...

  3. Visual Studio 2015专业版创建Win32控制台应用程序,C,C++源文件

    原配的Visual Studio 2015专业版不像之前的版本,在新建项目里面是找不到Win32模板的,那么怎么才能新建Win32项目和Win32控制台应用程序呢?今天我就带大家做一简单介绍. 先看如 ...

  4. Visual Studio 2015安装使用方法

    Visual Studio 2015 安装步骤 装载镜像 安装过程 开发环境 启动 注册 项目创建 程序运行 安装步骤 装载镜像 下载之后的文件是.iso格式的镜像,Windows 8/10都能够双击 ...

  5. VS2015--win32project配置的一些想法之在 Visual Studio 2015 中进行调试的同一时候分析性能...

    出处: https://msdn.microsoft.com/zh-cn/magazine/dn973013(en-us).aspx 很多开发商花了绝大多数时间获取应用程序才干正常发挥作用.更少的时间 ...

  6. Visual Studio 2015 安装

    Visual Studio 2015是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代码管控工具.集成开发环境(IDE)等等.所写的目标代码适用于微软支持的所有 ...

  7. 升级 Visual Studio 2015 CTP 5 的坑、坑、坑

    上面的文章中详细说明了 VS2015 各个版本更新内容,除了 VS2015 IDE 的发布,微软还发布了 ASP.NET 5 Beta2,信息量很大. 吐槽开始 前天的时候,根据上面文章中的链接地址, ...

  8. Windows 10 Visual Studio 2015 配置 Caffe

    笔记本是双显卡,读研的时候成功的在Ubuntu下配置好了一次Caffe,并且完成了深度学习的实验,前不久因为一个小的问题,导致NVIDIA驱动出了问题,以后再也没有在Ubuntu下成功配置好Caffe ...

  9. (win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功

    (win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功 Visual Studio 2015下载地址:https://msdn.itellyo ...

最新文章

  1. 10个省时间的 PyCharm 技巧
  2. 大话数据库连接池简史,你都用过几个?
  3. Android 监听锁屏、解锁、开屏 操作
  4. Java网络01基本网络概念
  5. Apollo进阶课程㊵丨Azure仿真平台使用
  6. hbuilder php xdebug,Hbuilder使用xdebug配置php断点调试
  7. kubernetes 磁盘、PV、PVC
  8. 实时 Git,在版本控制之前控制源码
  9. 电信、联通合建 5G,将会碰出怎样的火花?
  10. 验证码图片 java_验证码图片
  11. jQuery Mobile中图标icon样式大全ui-icon-*
  12. python生成器推导式_python之推导式and生成器表达器笔记及面试坑
  13. iPad2如何从iOS6降级到5.1.1
  14. U8采购入库单参照到货单查不到内容
  15. android project build with ant
  16. 如何去掉word文档右侧的竖线
  17. Jenkins+Gitlab+Nginx实现自动发布与回退基于tag版本的静态项目(解决重复构建问题)
  18. P5149 会议座位 归并
  19. python 方差齐性检验_已知F和sig值_方差齐性 sig_如何判断方差齐性_怎么判断方差齐不齐...
  20. git生成SSH秘钥

热门文章

  1. Highcharts数据表示(3)
  2. 光伏领跑者火热前行 可靠性护航“长跑”
  3. jQuery子页面获取父页面元素
  4. 代码设置Shape和Selector
  5. 浅谈SQL注入风险 - 一个Login拿下Server(转)
  6. Java类加载机制深度分析
  7. Exceptionless服务端+kibana部署实时日志纪要
  8. ASP.NET Core使用Middleware有条件地允许访问路由
  9. 为啥 .NET 自带的 JsonSerializer 无法序列化 Field ?
  10. 你知道WPF与WinForms的区别吗?