请教:动态加载一个dll,执行完里面的代码以后删除这个dll。

fihuang 2013-10-11 06:22:14
请教:动态加载一个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正在被使用中,无法被删除
...全文
250 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Alex-16888 2013-10-12
  • 打赏
  • 举报
回复
LZ要干坏事
uvvvw 2013-10-12
  • 打赏
  • 举报
回复
做成嵌入的资源,运行时,释放出来,使用完了,删除就可以了。
敌敌畏耶 2013-10-12
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
Assembly asm = Assembly.Load(File.ReadAllBytes(asmPath)); 将程序集首先读取成字节,再装入内存 这样就可以删除了
说的是··
cheng2005 2013-10-12
  • 打赏
  • 举报
回复
注意:文件可以删除,但是加载的Assembly是不能卸载的。 只有应用程序域可以卸载,程序集没法卸载。
fihuang 2013-10-12
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
Assembly asm = Assembly.Load(File.ReadAllBytes(asmPath)); 将程序集首先读取成字节,再装入内存 这样就可以删除了
这个方法可行 谢谢 也谢谢其他几个朋友
threenewbee 2013-10-11
  • 打赏
  • 举报
回复
Assembly asm = Assembly.Load(File.ReadAllBytes(asmPath)); 将程序集首先读取成字节,再装入内存 这样就可以删除了

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧