2009-04-01 11 views
2

Parfois, un client (ou un testeur) a besoin d'un correctif sur une installation du produit sur lequel je travaille. Parfois, je lui prépare un dll contenant le correctif, afin qu'il puisse le tester. Il écrase la vieille DLL avec la nouvelle version et redémarre l'application.Comportement en cache des DLLs 'hotfixed'

De temps en temps, il semble que la 'nouvelle' DLL n'est pas réellement utilisée, même si je suis absolument certain que mes nouveaux octets étincelants ont été copiés sur la vieille DLL. Pour empirer les choses, après la première exécution 'hotfixed', lors du redémarrage de l'application, la nouvelle fonctionnalité est chargée ... et l'ancien comportement ne sera plus jamais vu.

Quelqu'un a-t-il observé ce comportement? Serait-il possible que le chargeur XP sorte de «caches» dll récemment utilisés?

(Remarque: cela se produit sur XP SP2)

Répondre

1

Oui, cela est possible. Windows ne vous permet pas de supprimer les fichiers en cours d'utilisation, mais étrangement (pour Windows au moins), vous pouvez renommer une DLL alors qu'elle est encore utilisée. Si votre testeur utilise quelque chose le long

  • dll renommage à dll.orig
  • copie nouvelle dll
  • application restart

il peut arriver que la version dll.orig est encore utilisé si il n'a pas été complètement déchargé (parce que certaines applications encore démarrées ont toujours une référence).

Cela m'a mordu à plusieurs reprises aussi. Par conséquent, je change généralement un comportement (la plupart du temps quelque chose de l'en-tête du fichier journal) afin que je puisse être sûr que quelque chose ne s'est pas produit.

Pour contourner le problème est simplement: fermez tous les programmes qui utilisent cette DLL. Sysinternals Process Explorer permet de trouver les applications qui l'utilisent.

+0

Merci! Ce comportement est-il documenté quelque part? – xtofl

+0

Eh bien, c'est probablement le cas, mais je ne sais pas. Vous avez cette connaissance par l'expérience. Si, cependant, quelqu'un pouvait trouver une source définitive à ce sujet, cela m'intéresserait aussi. – gimpf

Questions connexes