Assembly.Load, LoadFrom加载程序集无法释放资源的解决方案
作者:C/S框架网  发布日期:2014/09/07 21:15:27
  Assembly.Load, LoadFrom加载程序集无法释放资源的解决方案




使用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, 经测试,显示文件仍被进程占用。



终极解决方法:


C# Code:

byte[] fileData = File.ReadAllBytes(assemblyFile);
Assembly asm = Assembly.Load(fileData);

//来源:C/S框架网(www.csframework.com) QQ:1980854898


使用
byte[]参数加载程序集,这样不占用程序集文件。







上一篇 下一篇