C# - 将.NET程序集加载到单独的AppDomain中,以便卸载它

Bud*_*Joe 6 .net c# reflection assemblies dynamic

可能重复:将
DLL加载到单独的AppDomain中

将.NET程序集加载到单独的AppDomain中的正确方法是什么,这样您就可以访问其类型/类,但仍然可以卸载它(并重新加载它).

这是前面讨论的切线: C# - 正确加载程序集,查找类和调用Run()方法

Ree*_*sey 3

基本上,您只需创建新的 AppDomain,然后调用AppDomain.CreateInstanceAndUnwrap来创建类型。这是一篇有关此过程的简单CodeProject 文章

这里有一些技巧。您永远不能直接引用类型(这会将类型加载到当前的 AppDomain 中),并且对象都应从MarshallByRefObj派生。这将允许您“远程”使用该对象,这意味着阻止它加载到您的 AppDomain 中。