问题:

很多时候希望通过反射动态的加载一个程序集,通过反射调用其方法,调用完之后希望能够及时释放加载的DLL 文件,以便释放资源和更新dll

解决:

目前对于 Assembly, CLR 没有提供卸载 Assembly 的方法。而 Assembly 是 驻留在 Appdomain 中,Appdomain 是可以动态卸载和创建的。


比如有一个动态生成的类库:

.NET 中动态加载DLL ,调用完之后及时释放。public class HelloWorld : MarshalByRefObject
.NET 中动态加载DLL ,调用完之后及时释放。
}


动态的调用
.NET 中动态加载DLL ,调用完之后及时释放。// File: Invoke.cs
.NET 中动态加载DLL ,调用完之后及时释放。

.NET 中动态加载DLL ,调用完之后及时释放。
using System;
.NET 中动态加载DLL ,调用完之后及时释放。
using System.Reflection;
.NET 中动态加载DLL ,调用完之后及时释放。
using System.Runtime.Remoting;
.NET 中动态加载DLL ,调用完之后及时释放。
.NET 中动态加载DLL ,调用完之后及时释放。
.NET 中动态加载DLL ,调用完之后及时释放。
.NET 中动态加载DLL ,调用完之后及时释放。
public class InvokeMethod



限制:
动态加载的dll 必须和host 在同一目录

参考:

http://www.gotdotnet.com/team/clr/AppdomainFAQ.aspx#_Toc514058481

相关文章: