使用.net反射机制实现 “热”更新动态库(dll文件)

因为考虑性能能方面的问题,一般指标在系统开启时会被预先加载到内存,但新创建的指标需要加载到内存,已有指标需要更新也需要覆盖原dll文件。新创建的指标很容易就放到指标“库”(指标dll文件存放的目录),但要覆盖原dll文件就不容易了,原因是dll文件被其他程序占用了。

其实文件被其他程序占用的情况我们经常遇到,主要是其他程序在使用文件时没有释放文件的句柄,从这里入手不能发现解决方法,就是把文件加载到内存,并且释放文件句柄。

将原加载动态库的代码:

Assembly assembly = Assembly.LoadFile(assemblyFile);

  

改成:

byte[] assemblyBuf = File.ReadAllBytes(assemblyFile);
Assembly assembly = Assembly.Load(assemblyBuf);

参考: 
http://guangboo.org/2012/06/21/update-net-dll-file-without-restart-system

    原文作者:清山博客
    原文地址: https://blog.csdn.net/a497785609/article/details/49661887
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞