日期:2014-05-17  浏览次数:20875 次

请教:动态加载一个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是不能卸载的。
只有应用程序域可以卸载,程序集没法卸载。
------解决方案--------------------
引用:
Assembly asm = Assembly.Load(File.ReadAllBytes(asmPath));
将程序集首先读取成字节,再装入内存
这样就可以删除了
 说的是··
------解决方案--------------------
做成嵌入的资源,运行时,释放出来,使用完了,删除就可以了。
------解决方案--------------------
LZ要干坏事