应该何时使用与二进制引用相对的项目引用?

Ben*_*old 14 standards coding-style

我的公司有一个公共代码库,它包含许多类库项目以及支持测试项目.每个类库项目都输出一个二进制文件,例如Company.Common.Serialization.dll.由于我们拥有经过编译,测试的二进制文件以及源代码,因此我们的消费应用程序是否应该使用二进制或项目引用存在争议.

一些支持项目引用的论据:

  • 项目引用将允许用户调试和查看所有解决方案代码,而无需加载其他项目/解决方案.
  • 项目参考将有助于跟上提交给源控制系统的常见组件更改,因为在没有活动解决方案的情况下可以轻松识别更改.

一些赞成二进制引用的论据:

  • 二进制引用可简化解决方案并缩短解决方案加载时间.
  • 二进制引用将允许开发人员专注于新代码,而不是可能被已经烘焙并证明稳定的代码分散注意力.
  • 二进制引用会迫使我们适当地哄骗我们的东西,因为我们将使用公共库,就像我们组织之外的那些人需要做的那样.
  • 由于无法调试二进制引用(步入),因此必须通过扩展现有测试项目而不是仅在使用应用程序的上下文中进行测试和修复来强制复制和修复问题.
  • 二进制引用将确保类库项目上的并发开发对消费应用程序没有影响,因为将引用二进制文件的稳定版本而不是流入版本.如有必要,项目负责人是否决定是否合并更新版本的组件.

在使用项目或二进制引用时,您的策略/偏好是什么?

ang*_*son 5

听起来好像你已经涵盖了所有主要观点.我们最近在工作中进行了类似的讨论,我们尚未做出决定.

但是,我们研究的一件事是引用二进制文件,以获得您注意到的所有优势,但是具有由公共构建系统构建的二进制文件,其中源代码位于公共位置,可从所有开发人员计算机访问(至少如果他们在工作中坐在网络上),那么任何调试实际上都可以潜入库代码中,如果有必要的话.

但是,在同一个注释中,我们还使用适当的属性标记了许多基类,以使调试器完全跳过它们,因为您在自己的类中进行的任何调试(在您正在开发的级别)都会只有基础库中的代码才能大大超出.这样,当您点击库类的Step Into调试快捷键时,您将重新进入当前级别的下一段代码,而不必花费大量的库代码.

基本上,我肯定会投票(以SO术语)关于保持经过验证的库代码对于普通开发人员不可见的评论.

此外,如果我加载全局解决方案文件,其中包含所有项目,基本上,只是一切,ReSharper 4似乎有某种冠状动脉问题,因为Visual Studio实际上是停滞不前.