有时,客户(或测试人员)需要修补我所使用的产品的安装。有时,我给他做了一个包含修复的dll,以便他可以测试它。他用新版本覆盖旧的dll并重新启动应用程序。
似乎偶尔会出现'新'dll实际上并未使用,虽然我绝对肯定我的全新闪亮字节被复制 over 旧dll。
更糟糕的是,在第一次'hotfixed'运行之后,当重新启动应用程序时,新功能显然 已加载......,并且再也看不到旧的行为。< / p>
有没有人观察到这种行为?有没有可能XP加载器类似'缓存'最近使用的dll?
(注意:这发生在XP SP2上)
答案 0 :(得分:1)
是的,这是可能的。 Windows不允许您删除正在使用的文件,但奇怪的是(至少对于Windows)您可以在DLL仍在使用时重命名。如果您的测试人员使用了
可能会发生dll.orig版本仍在使用如果尚未完全卸载(因为某些仍然启动的应用程序仍然有对它的引用)。
这也困扰了我几次。因此,我通常会更改某些行为(主要是日志文件的标题),以便我可以确定某些事情没有发生。
解决方法很简单:关闭所有使用此DLL的程序。 Sysinternals Process Explorer有助于查找使用它的应用程序。