我有一个 .NET 程序集 DLL,它是从数据库中的预编译代码动态创建的。有没有办法创建 DLL 文件,将数据放入其中,将其与Assembly
类一起加载,然后当进程退出时,是否删除了该 DLL?
我的第一个想法是用FILE_SHARE_DELETE
标志打开它,加载它Assembly.LoadFrom,
并自动删除它。
尽管 LoadLibrary 确实打开带有该FILE_SHARE_DELETE
标志的文件,但当 DLL 仍映射到内存中时,操作系统不会删除该文件。
那么,如何在进程退出而不使用AppDomains
或启动外部“在目标进程退出后删除此文件”可执行文件时删除 DLL(在运行时加载的 .NET DLL 取决于用户输入,因此这样做会涉及某种进程沟通,我想避免)。