有助于识别只有一个项目使用公共DLL的哪些部分的工具? (。净)

时间:2009-01-28 20:41:33

标签: .net static analysis

我们的小组有一个“工具库”DLL,我们的几个内部项目 (所有C#)都使用。我已经发展出了一大堆的直觉 工具库仅由其中一个项目使用 - 让我们调用它 项目“项目A”。有没有可以检查的.NET工具 工具DLL和所有项目(可能是项目EXE),并枚举所有 工具库中确实只使用的方法和类 项目A?我认为有些重构是有序的(移动工具库的部分 回到Project A自己的代码库),这样的列表听起来 喜欢它会非常有帮助。

由于反思,我不认为工具可以100%正确地完成工作。 但是,假设我知道我们的项目都没有调用工具库 任何巧妙的反思技巧;他们只能正常调用它 方法调用应该适合静态分析。

5 个答案:

答案 0 :(得分:2)

听起来工具NDepend 可以为您确定。此外,为了快速检查您是否在Visual Studio中使用ReSharper,您可以右键单击项目引用中的dll并选择“查找相关代码”,这将列出单个项目中的用法。

答案 1 :(得分:1)

从每个类型/命名空间(或方法,如果你真的想要)分解使用/使用的角度来看详尽列表NDepend可能是最好的选择。 你可以得到一个free limited version来做到这一点。

查询将基于IsUsedByIsUsing

如果每个项目都有一个单独的命名空间(比如说Foo.A和Foo.B)

SELECT TYPES WHERE IsUsedBy "Foo.A"

SELECT TYPES WHERE IsUsedBy "Foo.B"

你会得到一个很好的列表,列出每个类型正在使用的类型。将结果放入电子表格表中,共享/分离的内容将很好地删除

答案 2 :(得分:0)

.NET Reflector - 技术上不会给你一个列表,但如果你把所有的DLL / Exes加载到它中,你可以使用你认为只在一个地方使用的每种类型的“分析”功能,它会确认或显示使用该类型的其他地方。

答案 3 :(得分:0)

假设在项目A中引用了工具库DLL,您可以使用Resharper中的“查找用法”功能,该功能会告诉您所使用的引用程序集(在本例中为您的工具库)。< / p>

答案 4 :(得分:0)

这里只是一个建议....我相信一个人可以写,但你可能没有必要,除非你有一大堆dll。我会试试这个:

  • 获取"Reflector"

    • 打开它:)
    • 将所有DLL添加到列表中
    • 转到您关心的课程/方法
    • 右键单击
    • 选择“分析”
    • 您应该在分析仪中显示“依赖于”和“使用”
  • 创建新的soltion

    • 包括所有现有项目
    • 右键单击工具项目中的方法,使用“查找所有引用”命令查看谁使用它们。
    • 如果只有一个,那么你知道

希望这有帮助。