用于检测所有引用的.NET dll的工具

时间:2010-10-12 15:14:27

标签: .net utility

我使用Antlr工具如下(在Mono上)

dmcs  /r:Antlr3.Runtime.dll /r:StringTemplate.dll *.cs /out:Main.exe

我引用了两个dll,但是在场景后面引用了另一个dll文件(antlr.runtime.dll)。当我有一个错误就是复制两个dll并编译时,我得到了这个。

是否有任何.NET工具可以检测到哪些dll被引用?例如,如果我运行'DETECT Antlr3.Runtime.dll',我会得到'antlr.runtime.dll'。

3 个答案:

答案 0 :(得分:3)

NDepend一个去。它有一个依赖图/依赖矩阵功能,可以让你探索DLL之间的依赖关系。

答案 1 :(得分:2)

您可以使用Reflector或使用Mono.Cecil撰写一个(NDepend使用此内容)

使用Mono.Cecil的示例

在新项目中,参考Mono.Cecil

using System;
using Mono.Cecil;

namespace ReferenceDetector
{
  class Program
  {
    static void Main(string[] args)
    {
      var assemblyPath = args[0];
      var assemblyDefinition = AssemblyFactory.GetAssembly(assemblyPath);
      Console.WriteLine(assemblyDefinition.Name.FullName);
      foreach (AssemblyNameReference reference in assemblyDefinition.MainModule.AssemblyReferences)
      {
        Console.WriteLine("\t" + reference.FullName);
      }
    }
  }
}

答案 2 :(得分:1)

您可以使用Reflector。 (递归展开“引用”节点)