J'ai une DLL d'assemblage .NET créée à la volée à partir d'un code pré-compilé dans une base de données. Y at-il un moyen de créer le fichier DLL, y mettre des données, le charger avec la classe Assembly
, puis quand le processus se termine, cette DLL doit-elle être supprimée?Comment pouvez-vous obtenir une DLL à supprimer lorsque son processus propriétaire se termine?
Mes premiers réflexions étaient de l'ouvrir avec le drapeau FILE_SHARE_DELETE
, de le charger avec Assembly.LoadFrom,
et de le faire supprimer automatiquement.
Bien que LoadLibrary ouvre les fichiers avec l'indicateur FILE_SHARE_DELETE
, lorsque la DLL est toujours mappée en mémoire, le système d'exploitation ne supprime pas le fichier. Ainsi, comment la DLL peut-elle être supprimée lorsque le processus se termine sans utiliser AppDomains
ou en démarrant les exécutables externes «supprimer ce fichier après le processus cible» (les DLL .NET qui se chargent au moment de l'exécution dépendent de l'entrée de l'utilisateur). impliquer une sorte de communication de processus, que je voudrais éviter).