'hotfixed'dll的'缓存'行为

时间:2009-04-01 11:46:56

标签: dll caching windows-xp

有时,客户(或测试人员)需要修补我所使用的产品的安装。有时,我给他做了一个包含修复的dll,以便他可以测试它。他用新版本覆盖旧的dll并重新启动应用程序。

似乎偶尔会出现'新'dll实际上并未使用,虽然我绝对肯定我的全新闪亮字节被复制 over 旧dll。

更糟糕的是,在第一次'hotfixed'运行之后,当重新启动应用程序时,新功能显然 已加载......,并且再也看不到旧的行为。< / p>

有没有人观察到这种行为?有没有可能XP加载器类似'缓存'最近使用的dll?

(注意:这发生在XP SP2上)

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。 Windows不允许您删除正在使用的文件,但奇怪的是(至少对于Windows)您可以在DLL仍在使用时重命名。如果您的测试人员使用了

  • 将dll重命名为dll.orig
  • 复制新dll
  • 重启申请

可能会发生dll.orig版本仍在使用如果尚未完全卸载(因为某些仍然启动的应用程序仍然有对它的引用)。

这也困扰了我几次。因此,我通常会更改某些行为(主要是日志文件的标题),以便我可以确定某些事情没有发生。

解决方法很简单:关闭所有使用此DLL的程序。 Sysinternals Process Explorer有助于查找使用它的应用程序。