使用.NET在运行时替换程序集

Dan*_*ite 11 .net plugins mef ioc-container appdomain

有没有办法使用插件系统(我会使用IoC容器)在运行时加载一个版本的程序集,然后在AppDomain运行时替换该DLL?我不想重启应用程序.

MEF会做这样的事情吗?

Mik*_*Two 4

这本质上就是 NUnit 所做的(或者至少是这样做的,我已经有一段时间没有接触代码了)。但它是通过在另一个 AppDomain 中加载测试程序集,使用DoCallbackAppDomain 的方法调用该域中的代码,然后在重新编译测试程序集时重新加载测试程序集来实现的。

因此,虽然您无法卸载或重新加载 dll,但您可以卸载并重新加载 appdomain 并在其中执行代码。