У меня есть сборка .NET DLL, которая создается на лету из предварительно скомпилированного кода в базе данных. Есть ли способ создать файл DLL, поместить в него данные, загрузить его с классом Assembly
, а затем, когда процесс завершится, удалить эту DLL?
Моими первыми мыслями было открыть его с флагом FILE_SHARE_DELETE
, загрузить его с Assembly.LoadFrom,
и автоматически удалить его.
Хотя LoadLibrary открывает файлы с флагом FILE_SHARE_DELETE
, когда DLL все еще отображается в памяти, ОС не удалит файл.
Итак, как можно удалить DLL, когда процесс завершается без использования AppDomains
или запуска внешних исполняемых файлов «Удалить этот файл после выхода целевого процесса» (библиотеки DLL .NET, которые загружаются во время выполнения, зависят от ввода пользователя, поэтому было бы связано с каким-то процессом взаимодействия, которого я хотел бы избежать).