【问题标题】:Discovering which assemblies are loading which dependencies (at runtime)发现哪些程序集正在加载哪些依赖项(在运行时)
【发布时间】:2011-01-31 20:02:16
【问题描述】:

发现哪个程序集触发在运行时加载某些依赖项的最简单方法是什么?在作为我们应用程序的一部分加载的 100 多个程序集之一中,我在某处有一个旧程序集的杂散引用。

使用FUSLOGVW 我可以看到旧程序集正在加载-但日志没有告诉我是哪个程序集导致它加载。我使用了CheckASM,它允许我浏览主程序集的依赖关系,并沿着树向下探索——但这些都很好。

所以它必须是在运行时动态加载的程序集,或者某个配置文件。但我一辈子都找不到它。

想知道是否有更聪明的方法来做到这一点?

【问题讨论】:

    标签: .net assemblies assembly-resolution fuslogvw


    【解决方案1】:

    也许您可以在所有应用程序域中订阅 AssemblyResolve 事件(如果没有太多)。 ResolveEventArgs 包含为此的特殊字段 - ResolveEventArgs.RequestingAssembly

    【讨论】:

    • 是的,只需删除 DLL 即可触发事件。只需查看调用堆栈即可了解它是如何被调用的。
    【解决方案2】:

    如何删除(或重命名)程序集以查看在程序尝试加载它时是否引发异常?堆栈跟踪应包含对来自调用程序集的方法的引用。

    【讨论】:

      猜你喜欢
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      • 2020-04-04
      • 1970-01-01
      相关资源
      最近更新 更多