.net 使用可移植类库而不是使用;添加为链接";?

.net 使用可移植类库而不是使用;添加为链接";?,.net,portable-class-library,code-sharing,.net,Portable Class Library,Code Sharing,有人向我解释过使用可移植类库而不是使用“添加为链接”的好处吗 感谢链接文件的缺点: 添加为链接可能很难维护,尤其是当您扩展到多个项目和许多源文件时。工具(如VisualStudio2010的Project Linker,或在VisualStudio2012中拖动时按住ALT键)可以使这变得更容易 重构工具不能处理链接文件。例如,如果重命名链接文件中的类或方法,重构工具将不会更新对该API的其他链接副本的引用 在链接文件中编辑代码时,intellisense可能会向您显示文件链接到的所有平台上都

有人向我解释过使用可移植类库而不是使用“添加为链接”的好处吗


感谢链接文件的缺点:

  • 添加为链接可能很难维护,尤其是当您扩展到多个项目和许多源文件时。工具(如VisualStudio2010的Project Linker,或在VisualStudio2012中拖动时按住ALT键)可以使这变得更容易
  • 重构工具不能处理链接文件。例如,如果重命名链接文件中的类或方法,重构工具将不会更新对该API的其他链接副本的引用
  • 在链接文件中编辑代码时,intellisense可能会向您显示文件链接到的所有平台上都不可用的API
  • 当您尝试打开已由另一个项目打开的链接文件时,Visual Studio将显示一个消息框,提示“此文档已由另一个项目打开”
  • 每个平台都有一个单独的DLL。如果您正在创建一个希望与其他人共享的可重用库,那么如果只有一个版本,而不是每个平台都有一个单独的版本,那么分发可能会更容易
可移植类库的缺点:

  • 您仅限于在所有目标平台上可用的API。不能使用条件编译(
    #if
    语句)来规避平台之间的差异
  • 很难弄清楚在给定的平台组合上支持哪些API。以下是一个电子表格,可以帮助您实现这一点:
有关如何利用可移植类库的一些指导,请参见以下内容:


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

这个答案对我来说很好。我要补充的唯一一点是,链接文件路由还增加了因数N维护问题。当我以前维护mvvmcross的链接文件版本时,添加一个新平台是一个令人望而生畏的前景,但现在我已经切换到PCL代码,我很高兴地考虑添加两个新平台-添加它们没有那么大或不愉快的任务。我撒谎了。。。我还要补充几点-1。pcl路线鼓励测试并使测试更容易;2.在我看来,pcl路线鼓励良好的体系结构——它鼓励使用接口和依赖注入,而文件链接鼓励静态链接到类和#if语句,这会导致其他构建中断。我们考虑了转换为pcl,但我认为这确实是从第一天起需要考虑的事情。