使用DirectoryCatalog时动态更改部件(DLL)

时间:2010-12-08 15:22:53

标签: dll mef dynamic reload

使用MEF,在将新插件(DLLs包含parts)添加到plugins文件夹后,调用DirectoryCatalog上的刷新将更新容器(如果允许重新组合)并且新添加的插件可以访问。

如果我们需要动态替换DLLpart),我的问题是什么?

我试过这个,但所有加载的parts都被MEF锁定(写保护),无法替换。

1 个答案:

答案 0 :(得分:3)

它的.NET锁定了你的DLL。您无法从AppDomain卸载程序集,并且在加载它们时通常会有锁。您可以为AppDomain启用卷影复制,以便删除DLL。它们仍然会被加载,但当您调用Refresh并从目录中删除它们时,DirectoryCatalog会看到它们已经消失。