Visual Studio:帮助修复循环引用!

ser*_*hio 2 .net dll visual-studio-2005 visual-studio

在Visual Studio 2005中有没有办法找到项目的所有引用?

我有一个包含多个项目(dll)的解决方案.当在项目B中引用时,项目A VS告诉我它不能添加此引用,因为"循环引用".

但是,项目A不包含对B的直接引用.显然,A中有一个引用B的中间引用.

A <=?= B (circular ref.)

A =?=> X(?) =?=> B ( maybe there is an X that references B)
Run Code Online (Sandbox Code Playgroud)

怎么找到这个X?

===编辑(好奇):)解决方案中有63个项目.

Ran*_*pho 5

我强烈建议您使用NDepend,这是查找隐藏依赖项的好方法.该工具将帮助您找到代码中的所有难点.重构它最终取决于你.

处理循环依赖的标准方法(其中A引用B和B引用A)是拉取A和B引用的项并将它们放入单独的程序集C中,以便A引用C和B引用C,但C不引用A或B.

基于对您的问题的解读,我的猜测是您有很多静态方法或属性,您可以在整个地方使用它们.摆脱它们,或将它们全部移动到一切引用的项目中.我更喜欢前者; 静态的东西往往很难进行单元测试.

嗯.有趣,有趣......那么"免费""变通办法"呢?:)

必须重构,没有"解决方法".NDepend只是一个可以帮助你找到痛苦区域的工具; 它不会为你做的工作.值得庆幸的是,它有一个免费试用版,您可以用它来帮助您解决眼前的问题.

如果您不想使用它,您唯一的"解决方法"是通过搜索代码来查找循环引用.可能有助于您找到问题区域的一件事是从项目B中删除对项目A的引用并查看哪些中断,然后将它与从项目A中删除对项目B的引用时的中断进行比较.这些列表的并集应该给你一个起点.

但是你将不得不重构你的代码; 没有远离那个.