用外行的术语描述.NET程序集循环依赖问题

时间:2010-07-21 22:06:19

标签: .net assemblies dependencies

请以外行的术语描述.NET程序集编译循环依赖性问题,以及其他技术是否有类似的限制。

注意:这似乎是一个简单的问题,我知道,但我已经看到了许多真正重要的项目,这些项目完全破坏了依赖图。

3 个答案:

答案 0 :(得分:3)

与任何其他循环依赖相同......

考虑三个组件A,B和amp; ç

需要在B中定义的东西,B需要在C中定义的东西,而C需要在A中定义的东西。

你可以先建立哪个?

答案 1 :(得分:2)

要添加Lucas的答案:在.NET中提出循环程序集依赖是非常困难的。要编译A.dll,首先需要B.dll;编译B.dll首先需要C.dll;但要编译C.dll,您需要首先尝试编译的A.dll

你可能遇到这种情况的唯一方法就是你并行开发A,B和C,并且你设法偶然引入循环依赖。但是只要你对所有三个进行干净的构建,问题就会很明显,在你打破这个循环之前你将无法继续。

单个依赖项中名称空间和/或类之间的循环依赖关系更为常见。我试着将这种循环依赖视为代码气味;组件之间没有循环依赖关系的代码库是可以轻松地将这些组件分开并独立重构的代码库。

Patrick Smacchia(NDepend人)谈到了依赖周期及其对代码质量的影响:http://codebetter.com/blogs/patricksmacchia/archive/2009/07/29/maintainability-learnability-component-layering.aspx

答案 2 :(得分:0)

我是.NET开发人员工具NDepend的开发人员之一,专门用于执行干净的代码结构和删除依赖关系周期。在我们的产品网站上,您会发现two white-books相对于组件依赖关系循环问题:

Partitioning code base through .NET assemblies and Visual Studio projects(8页)

  • 创建程序集的常见有效和无效原因
  • 提高Visual Studio解决方案编译性能(最高可达x10)
  • 组织开发环境

Defining .NET Components with Namespaces(7页)

  • 在.NET程序集中定义组件
  • 组件之间依赖关系的非循环图
  • 进化设计和非循环组件化