C#:实用程序查找循环引用/编译正确的顺序?
-
13-09-2019 - |
题
实干家任何人都知道一个良好的实用程序或程序的询问所有项目的解决方案或目录,并告诉你在哪里循环引用和可能的编译为了..
我记得看到一个前一段时间,但我不能在任何地方找到它..
解决方案
NDepend的是一个极好的工具,将做到这和更大量。也许是矫枉过正你想要的东西,但有一个试用版,所以来看看......
其他提示
我知道这是一个迟到的回答,但我发现使用GraemeF和tsilb的回答都显示这两个组件之间不存在相关性。它看起来像如果反向相关性的顺序(的大会A 强>引用的乙,但你将其切换为乙强>引用的 A ),它的叶子在构建顺序的依赖。为了解决这个问题,打开属性对话框为您的解决方案,去共同属性,然后项目依赖。找到的大会A 并除去上的组件B 强>的依赖性。这将允许您正常添加引用。
您可以通过的System.Reflection追逐的依赖关系树。当你建立了树,增加节点时,你会检查是否节点的任何父母都在同一个项目或组件,您要添加的一个。如果为真,抛出异常出到用户。
投掷技术的例外像这样的都OK,如果你的用户会是谁知道集的引用和异常是如何工作的人 - 人喜欢开发商:)
如果您使用项目正确的构建顺序将自动由Visual Studio(或的MSBuild)确定在解决方案中的项目之间的引用。当然,这打破了,如果你使用的程序集引用。也Visual Studio会阻止你将圆形的项目引用。
我继承与几个圆形参考路径一个巨大的视觉工作室溶液。我写了一个linqpad脚本以帮助找到循环引用链:
https://github.com/ronnieoverby /linqpad-utils/blob/master/Find%20circular%20references.linq
我的实现可能是幼稚,但其合理的工作快给我。