Assembly.Load, LoadFrom加载程序集无法释放资源的解决方案
Assembly.Load, LoadFrom加载程序集无法释放资源的解决方案
使用以上代码卸载AppDomain, 经测试,显示文件仍被进程占用。
使用byte[]参数加载程序集,这样不占用程序集文件。
使用Assembly.Load()或LoadFrom()加载程序集不释放资源,文件一直被占用着,网上有资料使用AppDomain来加载程序集仍不能释放文件资源,一定要关闭主调用程序才能解除文件占用。
C# Code:
AppDomain dom = AppDomain.CreateDomain("anyDomain");
AssemblyName assemblyName = new AssemblyName();
assemblyName.CodeBase = assemblyFile;
Assembly assembly = dom.Load(assemblyName);
Type [] types = assembly.GetTypes();
AppDomain.Unload(dom); //卸载AppDomain
//来源:C/S框架网(www.csframework.com) QQ:1980854898
AppDomain dom = AppDomain.CreateDomain("anyDomain");
AssemblyName assemblyName = new AssemblyName();
assemblyName.CodeBase = assemblyFile;
Assembly assembly = dom.Load(assemblyName);
Type [] types = assembly.GetTypes();
AppDomain.Unload(dom); //卸载AppDomain
//来源:C/S框架网(www.csframework.com) QQ:1980854898
终极解决方法:
C# Code:
byte[] fileData = File.ReadAllBytes(assemblyFile);
Assembly asm = Assembly.Load(fileData);
//来源:C/S框架网(www.csframework.com) QQ:1980854898
byte[] fileData = File.ReadAllBytes(assemblyFile);
Assembly asm = Assembly.Load(fileData);
//来源:C/S框架网(www.csframework.com) QQ:1980854898
使用byte[]参数加载程序集,这样不占用程序集文件。
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网