C# 如何查找引用特定dll的所有程序集?

C# 如何查找引用特定dll的所有程序集?,c#,dependencies,assemblies,ildasm,C#,Dependencies,Assemblies,Ildasm,我有一个包含大量DLL的目录。我需要找到所有引用特定dll的文件 我正在考虑以下解决方案: 循环程序集并使用ildasm 将清单转储到文本文件中 在文本文件中搜索所需的程序集名称 然而,我觉得这个解决方案大错特错。有没有更好的方法来实现它 您可以为此编写一个小工具,使用反射查找引用的程序集: string[] fileNames = ...; // get all the filenames foreach (string fileName in fileNames) { var ass

我有一个包含大量DLL的目录。我需要找到所有引用特定
dll
的文件

我正在考虑以下解决方案:

  • 循环程序集并使用
    ildasm
  • 清单
    转储到文本文件中
  • 在文本文件中搜索所需的程序集名称
    然而,我觉得这个解决方案大错特错。有没有更好的方法来实现它

    您可以为此编写一个小工具,使用反射查找引用的程序集:

    string[] fileNames = ...; // get all the filenames
    foreach (string fileName in fileNames) {
        var assembly = System.Reflection.Assembly.ReflectionOnlyLoadFrom(fileName);
        var referencedAssemblies = assembly.GetReferencedAssemblies();
    
        foreach (var assemblyName in referencedAssemblies) {
            // do your comparison
        }
    }
    

    根据Microsoft documentationnn AppDomain.CurrentDomain.GetAssemblys()获取已加载到此应用程序域的执行上下文中的程序集

    似乎您需要将加载所需组件的策略从使用appdomain更改为在应用程序文件夹中查找DLL


    我发现了一个关于类似问题的讨论

    下载AsmSpy.exe,它可以选择列出所有程序集和程序集中的所有引用


    下载IlSpy.exe,打开要查看其引用的程序集,它将列出所有引用的程序集


    您可以使用System.Reflection.Assembly.GetReferencedAssemblies谢谢!好多了indeed@Dirk,如何从GAC加载程序集并获取引用?