簡體   English   中英

為什么AppDomain與使用MEF實現的插件管理器相關

[英]Why is an AppDomain relevant to a plugin manager implemented with MEF

我用MEF和FileSystemWatcher編寫了一個簡單的插件管理器類,用於自動刷新插件,但是我聽到有人說,要能夠動態添加和刪除程序集(插件),我們還需要使用AppDomain。

誰能指導我何時需要一起使用AppDomain和MEF(尤其是在我的插件管理器方案中)?

它們之間是什么關系?

簡而言之,當您要覆蓋應用程序正在使用的.dll時,需要一個AppDomain,並且該AppDomain必須指定ShadowCopyFiles = "true"

卷影復制文件意味着AppDomain將.dll復制到一個臨時目錄並從該臨時目錄加載它們,以便可以覆蓋原始.dll。

不幸的是,除非卸載包含它們的AppDomain,否則無法卸載加載到任何AppDomain中的程序集。

考慮到這一點,刷新插件很困難,因為您必須A)卸載整個AppDomain,這必然會卸載該AppDomain中的所有其他.dll,或者B)允許加載同一.dll的新版本,從而增加內存您的應用程序的足跡。 第二個選項還要求您的插件.dll具有強名稱,並使用不同的版本號,以便MEF識別差異並加載新的.dll。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM