使用便携式类库而不是使用"添加为链接"有什么好处?

Tol*_*lga 12 .net code-sharing portable-class-library

是否有人向我解释使用便携式类库而不是使用"添加为链接"的优势是什么?

谢谢

Dan*_*ted 27

链接文件的缺点:

  • 添加为链接可能很难维护,尤其是当您扩展到多个项目和许多源文件时.工具(例如Visual Studio 2010的Project Linker,或在Visual Studio 2012中拖动时保持ALT)可以使这更容易.
  • 重构工具不适用于链接文件.例如,如果重命名链接文件中的类或方法,则重构工具不会更新对该API的其他链接副本的引用.
  • 在链接文件中编辑代码时,intellisense可能会显示在文件链接到的所有平台上都不可用的API.
  • 当您尝试打开另一个项目已打开的链接文件时,Visual Studio将为您提供一个消息框,说明"此文档由另一个项目打开".
  • 最终,每个平台都有一个单独的DLL.如果您要创建一个可重用的库,您希望与其他人共享,如果只有一个版本,则可能更容易分发,而不是每个平台的单独版本.

便携式类库的缺点:

  • 您仅限于在您定位的所有平台上都可用的API.您不能使用条件编译(#if语句)来解决平台之间的差异
  • 很难弄清楚给定的平台组合支持哪些API.这是一个电子表格,可以帮助解决这个问题:可移植类库API列表

有关如何利用可移植类库的一些指导,请参阅以下内容:

虽然我偏爱可移植类库(作为PCL团队的成员),但链接文件也是一种完全有效的共享代码方式,如果你没有遇到或不介意这些缺点,那么请继续使用链接的源文件.我主要使用Portable Class Libraries,但是当PCL不适合时我仍然使用链接的源文件.

  • 我撒了......还有一些我要补充的东西 - 1. pcl路线鼓励测试并使测试变得更加容易; 2.即使pcl路由鼓励良好的体系结构 - 它鼓励使用接口和依赖注入,而文件链接鼓励静态链接到类和#if语句,后来导致其他构建中断. (3认同)
  • 这个答案看起来很棒.我唯一要补充的是,链接文件路由还会增加N因素维护问题.当我以前维护mvvmcross的链接文件版本时,添加一个新的平台是一个令人生畏的前景,但现在我已经切换到PCL代码,我很高兴考虑添加几个新平台 - 添加它们不是那么大或不愉快一个任务. (2认同)