使用.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
目录
相关文章
|
18天前
|
C# Windows
.NET开源免费的Windows快速文件搜索和应用程序启动器
今天大姚给大家分享一款.NET开源(MIT License)、免费、功能强大的Windows快速文件搜索和应用程序启动器:Flow Launcher。
|
1月前
mvc.net分页查询案例——DLL数据访问层(HouseDLL.cs)
mvc.net分页查询案例——DLL数据访问层(HouseDLL.cs)
9 0
|
6月前
|
对象存储
.net core 阿里云接口之拷贝文件
紧接上文, 1)[.net core 阿里云接口之获取临时访问凭证](https://developer.aliyun.com/article/1363447?spm=a2c6h.12873639.article-detail.7.2b0e5b1cpeWbZ5 ".net core 阿里云接口之获取临时访问凭证") 2)[.net core 阿里云接口之将指定的OSS文件下载到流](https://developer.aliyun.com/article/1363886 ".net core 阿里云接口之将指定的OSS文件下载到流") 本文继续阿里云接口调用,将指定的OSS文件下载到流。
34 0
|
6月前
|
C#
.net core 从(本地)服务器获取APK文件并解析APK信息
## 1、apk解析除了使用客户端利用aapt.exe、unzip.exe开发客户端解析外,还可以直接利用服务进行解析 ```csharp /// <summary> /// 从本地服务器获取APK文件并解析APK信息 /// </summary> /// <param name="fileName">APK文件的完整路径</param> /// <returns></returns> [HttpPost, HttpGet, HttpOptions, CorsOptions] public IActionResult DecodeAPK(string fileName) { if(fi
30 0
|
6月前
|
JavaScript 前端开发 关系型数据库
.net core + vue + elementui 删除指定日期段、指定路径下的所有文件
# 1、呈现效果 ![image.png](https://ucc.alicdn.com/pic/developer-ecology/j2ygdazy447va_0782583bbc894c33a079db9e44385acd.png) # 2、后端 ## 1)服务层 ```csharp /// <summary> /// 删除指定修改日期段及指定路径下的所有文件 /// </summary> /// <param name="filepath">指定路径</param> /// <returns>返回删除结果提示</returns> public string DeleteSpecif
42 0
|
6月前
|
C#
.net core 删除指定路径下的所有文件以及文件夹(文件夹建议保留目录)
1、服务层 ```csharp /// <summary> /// 删除指定路径下的所有文件 /// </summary> /// <param name="filepath">指定路径</param> /// <returns></returns> public string DeleteSpecifiedPathAllFile(string filepath) { try { DirectoryInfo info = new DirectoryInfo(filepath); // 去除文件夹的只读属性 info.Attribu
30 0
|
7月前
|
开发框架 JSON Kubernetes
.NET Core - 环境变量配置和文件提供程序配置方式详解
.NET Core - 环境变量配置和文件提供程序配置方式详解
|
9月前
|
数据库 C#
C#,.net,winform导入Excel功能以及下载Excel文件到本地,并使用SqlBulkCopy把DataTable类型的数据写入到sqlserver数据库中
C#,.net,winform导入Excel功能以及下载Excel文件到本地,并使用SqlBulkCopy把DataTable类型的数据写入到sqlserver数据库中
220 0
|
9月前
|
开发框架 前端开发 JavaScript
ASP .Net Core 中间件的使用(一):搭建静态文件服务器/访问指定文件
ASP .Net Core 中间件的使用(一):搭建静态文件服务器/访问指定文件
|
9月前
|
开发框架 .NET
解决NET Core发布iis项目覆盖原有的项目时"另一个程序正在使用此文件,进程无法访问"
解决NET Core发布iis项目覆盖原有的项目时"另一个程序正在使用此文件,进程无法访问"