调用Assembly.LoadFrom(文件)后,应用程序关闭时不会释放文件

时间:2013-01-22 07:47:20

标签: .net plugins reflection dll compilation

我使用Assembly.LoadFrom加载自定义dll,但其中一个dll是在我的项目解决方案中维护的,并随应用程序一起提供。

问题在于,每次我尝试构建项目时,都会收到一条错误消息,说它无法将新编译的dll复制到旧版本上,因为它正被另一个进程使用。

处理此问题的最佳方法是什么?想到的两个想法是:

  • 在加载文件之前将文件复制到其他位置
  • 只需将文件自己加载到内存中,这样我就可以手动关闭文件,然后从内存中复制加载程序集。

这两种解决方案都很容易实现,但如果有一种快速/简单的方法不需要我更改我的代码,我会更喜欢它。

编辑:我不需要在运行时卸载程序集。当程序ENDS时,我需要它释放它对dll文件的锁定。我完全了解AppDomains如何工作以及将插件加载到他们自己的AppDomain中的优点,但对于这个特定的应用程序,我不这样做。

1 个答案:

答案 0 :(得分:1)

选中此link

并检查这个blog为什么.net没有引入任何assembly.Unload()