3

我使用 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”。

4

3 回答 3

3

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

于 2010-10-12T15:16:47.063 回答
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);
      }
    }
  }
}
于 2010-10-12T15:18:40.450 回答
1

您可以使用反射器。(递归展开引用节点)

于 2010-10-12T15:15:54.373 回答