我目前正在基于C#的应用程序上工作,该应用程序加载了许多不同的模块(用于硬件组件的.net驱动程序等)。该应用程序应提供某种插件/加载项管理器以选择专用模块(仅专用的一组设备,过滤器,组件)。基于一个事实,即MS提供了一个完善的框架MEF,我认为尝试一下是个好主意。
我当前面临的主要问题是,在通过DirectoryCatalog
扫描文件夹中的加载项之后,所有程序集都已加载到进程中(当前未实例化任何内容,因为我使用了“惰性”机制)。
但是,当用户稍后决定只选择其中的一部分时,我想避免在过程中加载所有程序集。
因此,我试图找到一种方法来获取加载项元数据,而又不将程序集加载到流程中。我已经看到Mono.Addins
框架似乎支持基于XML的清单的这种情况-但我不确定是否可以使用MEF进行类似的操作?
我正是为此目的写了LazyAssemblyCatalog。它允许您懒惰地加载插件程序集,同时仍然可以访问它们的元数据。