跟踪缓慢的托管 DLL 加载

Ale*_*x K 5 .net dll performance gac dllregistration

我面临以下问题,此时我觉得我严重缺乏某种工具,我只是不知道该工具是什么,或者它到底应该做什么。

这是设置:我有一个必须在 GAC 中注册的第 3 方 DLL。这一切在我们之前部署过软件的几乎每台机器上都运行良好。但是现在我们有 2 台机器,看起来和我们知道的机器完全一样(它们是从同一个镜像克隆出来的,并塞满了相同的硬件,所以几乎唯一的区别是软件设置,我一遍又一遍地检查,然后他们看起来不错)。

现在问题来了,GAC中的DLL加载时间很长。至少我相信这是问题所在,我可以明确地说,从该 DLL 实例化单个类是缓慢的部分。一旦加载,事情就会像往常一样飞翔。但是,虽然在已知良好的机器上,DLL 加载速度如此之快,以至于日志中的时间戳甚至都不会改变,但在这 2 台机器,加载时间超过 1 分钟

已知信息:我无法访问源代码,因此无法通过 DLL 进行调试。我们的应用程序是唯一使用它的应用程序(因此不应该是同时访问问题)。这个 DLL 只存在一个版本,所以应该不是版本冲突的问题。正在使用 GAC 引用(如果我从 GAC 卸载 DLL,将引发关于缺少 GAC 引用的异常)。

在 debug-fu 方面具有更高技能的人能否建议我可以做些什么来追踪此问题的根本原因?

小智 2

下载 2 个名为“filemon.exe”和“regmon.exe”的小实用程序,它们分别向您展示有关打开文件和注册表的情况。每当我无法确定程序是挂起还是正在加载时,这些工具都可以让我深入了解它们正在做什么或正在等待什么。