请教:动态加载一个dll,执行完里面的代码以后删除这个dll。
本帖最后由 fihuang 于 2013-10-11 18:23:04 编辑
请教:动态加载一个dll,执行完里面的代码以后删除这个dll。
谢谢大家!在线等待!
public interface IAuto
{
void Run();
}
//动态加载的dll有如下代码
public class Car : IAuto
{
void IAuto.Run()
{
}
}
//动态加载上面的dll
IAuto i = Assembly.LoadFile("dllPath").CreateInstance("Car") as IAuto;
i.Run();
File.Delete("dllPath"); //这里会报错,因为这个dll正在被使用中,无法被删除
------解决方案--------------------Assembly asm = Assembly.Load(File.ReadAllBytes(asmPath));
将程序集首先读取成字节,再装入内存
这样就可以删除了
------解决方案--------------------注意:文件可以删除,但是加载的Assembly是不能卸载的。
只有应用程序域可以卸载,程序集没法卸载。
------解决方案-------------------- 说的是··
------解决方案--------------------做成嵌入的资源,运行时,释放出来,使用完了,删除就可以了。
------解决方案--------------------LZ要干坏事