繁体   English   中英

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

[英]How to find all assemblies that reference a specific dll?

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

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

  1. 循环程序集并使用ildasm调用每个程序集
  2. manifest转储到文本文件中
  3. 在文本文件中搜索所需的程序集名称。

然而,这个解决方案让我觉得非常错误。 有没有更好的方法来实现它?

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

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.GetAssemblies()获取已加载到此应用程序域的执行上下文中的程序集。 关于AppDomain.CurrentDomain.GetAssemblies()

您似乎需要更改从使用appdomain加载所需组件的策略,以便在应用程序文件夹中查找dll。

我在这里找到了类似问题的讨论

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

https://github.com/mikehadlow/AsmSpy

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

https://github.com/icsharpcode/ILSpy/releases

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM