Domanda

Quando un assembly .NET viene distribuito al GAC e il file di destinazione è bloccata, Windows tiene in quello che posso ipotesi migliore è una sorta di 'assemblaggio purgatorio' -. c:\windows\assembly\temp

Utilizzando Process Explorer questi possono essere facilmente visibili durante la ricerca per la DLL sospetto:

Process Explorer Ricerca
(fonte: alexangas.com )

Appena terminare il processo bloccando il file (in questo caso OWSTIMER.EXE) è magicamente distribuito al GAC correttamente.

Sono curioso di sapere cosa Windows è in realtà facendo qui. Come fa a sapere quando il blocco immagine è stata rilasciata? Dove si tiene il registro di file bloccati? Ha mai rinunciare?

È stato utile?

Soluzione

Temp e tmp sono cartelle temporanei utilizzati durante l'installazione e la disinstallazione di montaggio GAC. Tmp viene utilizzato per l'installazione, e Temp viene utilizzato per la disinstallazione. Fonte: GAC Temp e Tmp

.NET Runtime servizio di ottimizzazione (mscorsvw.exe) è probabilmente sondare i file una volta ogni tanto per controllare se sono chiusi in modo che possa [un] installare assemblee in attesa.

I può essere sbagliato, ma per quanto ne so, non c'è WinAPI che notifica che determinato file è stato chiuso / sbloccato. È necessario monitorare loro da soli. Ma Windows stesso deve avere un elenco del genere da qualche parte nella memoria (almeno ha un elenco di handle aperti), in modo che sa solo che il file è chiuso, perché la maniglia che rappresenta il file viene rilasciato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top