Question

Lorsqu'un assembly .NET est déployé sur le GAC et que le fichier de destination est verrouillé, Windows le conserve dans ce que je peux deviner être une sorte de « purgatoire d'assembly » - c:\windows\assembly\temp.

À l'aide de Process Explorer, ceux-ci peuvent être facilement visibles lors de la recherche de la DLL suspecte :

Process Explorer Search
(source: alexangas.com)

Dès que je termine le processus de verrouillage du fichier (dans ce cas OWSTIMER.EXE), il est déployé correctement comme par magie sur le GAC.

Je suis curieux de savoir ce que Windows fait réellement ici.Comment sait-il quand le verrouillage du fichier a été libéré ?Où conserve-t-il l’enregistrement des fichiers verrouillés ?Est-ce qu'il abandonne parfois ?

Était-ce utile?

La solution

Temp et tmp sont des dossiers temporaires utilisés lors de l'installation et de la désinstallation de GAC Assembly. Tmp est utilisé pour l'installation, et Temp est utilisé pour la désinstallation.Source: Température GAC et Tmp

Service d'optimisation d'exécution .NET (mscorsvw.exe) sonde probablement les fichiers de temps en temps pour vérifier s'ils sont fermés afin de pouvoir [dés]installer les assemblys en attente.

Je me trompe peut-être, mais pour autant que je sache, il n'existe pas de WinAPI qui vous avertirait que certains fichiers ont été fermés/déverrouillés.Vous devez les surveiller vous-même.Mais Windows lui-même doit avoir une telle liste quelque part en mémoire (au moins il a une liste de handles ouverts), donc il sait simplement que le fichier est fermé, car le handle représentant le fichier est libéré.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top