使用MEF
,在将新插件(DLLs
包含parts
)添加到plugins文件夹后,调用DirectoryCatalog
上的刷新将更新容器(如果允许重新组合)并且新添加的插件可以访问。
如果我们需要动态替换DLL
(part
),我的问题是什么?
我试过这个,但所有加载的parts
都被MEF
锁定(写保护),无法替换。
答案 0 :(得分:3)
它的.NET锁定了你的DLL。您无法从AppDomain卸载程序集,并且在加载它们时通常会有锁。您可以为AppDomain启用卷影复制,以便删除DLL。它们仍然会被加载,但当您调用Refresh并从目录中删除它们时,DirectoryCatalog会看到它们已经消失。