';缓存';'的行为;热修复';DLL
有时,客户(或测试人员)需要在我使用的产品的安装上安装补丁。有时,我会为他编写一个包含修复程序的dll,以便他可以测试它。他用新版本覆盖旧dll并重新启动应用程序 时不时地,“新”dll似乎没有实际使用,尽管我绝对肯定我的全新闪亮字节是在旧dll上复制的 更糟糕的是,在第一次“热修复”运行之后,当重新启动应用程序时,新功能显然已加载…,旧的行为再也看不到了 有人注意到这种行为吗?XP加载器是否可能是最近使用DLL的“缓存”';缓存';'的行为;热修复';DLL,dll,caching,windows-xp,Dll,Caching,Windows Xp,有时,客户(或测试人员)需要在我使用的产品的安装上安装补丁。有时,我会为他编写一个包含修复程序的dll,以便他可以测试它。他用新版本覆盖旧dll并重新启动应用程序 时不时地,“新”dll似乎没有实际使用,尽管我绝对肯定我的全新闪亮字节是在旧dll上复制的 更糟糕的是,在第一次“热修复”运行之后,当重新启动应用程序时,新功能显然已加载…,旧的行为再也看不到了 有人注意到这种行为吗?XP加载器是否可能是最近使用DLL的“缓存” (注意:这发生在XP SP2上)是的,这是可能的。Windows不允许您
(注意:这发生在XP SP2上)是的,这是可能的。Windows不允许您删除正在使用的文件,但奇怪的是(至少对于Windows而言),您可以在DLL仍在使用时重命名它。如果你的测试人员使用了一些东西
- 将dll重命名为dll.orig
- 复制新dll
- 重新启动应用程序
解决方法很简单:关闭所有使用此DLL的程序。Sysinternals Process Explorer可帮助查找使用它的应用程序。谢谢!这种行为在什么地方有记录吗?也许有,但我不知道。这个知识是通过实验得到的。不过,如果有人能找到这方面的确切来源,我也会感兴趣。