MEF:组件从目录中删除?

MEF: Assemblies getting removed from catalog?

我已使用 IDependencyExplorer 将 MEF 添加到我的 Web api 项目中,一切正常。

但是,运行 几分钟后,我开始收到导出未找到错误。 当我检查调试器中的目录时,导出已经消失,包含导出类型的程序集不再存在。

我们并没有明确地从目录中删除程序集,所以我很困惑为什么会这样。任何人都可以阐明这一点吗?

刚弄清楚发生了什么。

我使用聚合目录并将包含我的导出的程序集添加到其中。

网站第一次启动时,所有必需的程序集都加载到当前应用程序域中,所以一切正常。

后来的 IIS 进程是 recycling/restarting。当发生这种情况并收到新的 Web 请求时,并没有加载我需要的所有程序集,我已经设置了一个保护措施,只将加载的程序集添加到聚合目录中。

解决方案是在程序集尚未加载时强制加载它们,或者改用目录编目。

希望这对遇到此问题的其他人有所帮助。