动态加载dll--不占用文件

时间:2021-01-25 15:44:08
Assembly assembly = Assembly.Load(path);

用上面的方法可以动态的加载到dll,但是用这种方法加载到的dll一直到程序运行结束都是占用的,在此期间不能够对此进行升级,或者修改.

 

经过我大半天的折腾终于想到了办法,首先把dll加载到内存中,然后在在加载成Assembly ,这样的话,dll完全跟程序解耦了,只要加载完成,你就是把dll给删除了,程序也一样照常运行,这样的话就能够在程序运行过程中对该dll进行升级,或者修改.当升级或者修改完成后通知主程序,让主程序重新加载该dll,这样问题就解决了.

Assembly ab = Assembly.Load(File.ReadAllBytes(item)); //先把dll读到带内存中然后在加载