如何使用MEF防止模块重复?

如果存在2个相同组件的副本(可能是错误的),我如何防止MEF加载重复模块

  • Assembly1.dll

  • Assembly2.dll(Assembly1的副本)

    [ImportMany] public IList Modules { get; private set; } public void BuildUp() { Modules = new List(); var catalog = new DirectoryCatalog(@".\Modules"); var container = new CompositionContainer(catalog); container.ComposeParts(this); } 

使用AggregateCatalog而不是使用DirectoryCatalog。 您必须编写查看modules目录中所有程序集的代码,确定当前的程序集是否与已处理的程序集重复,如果不是,则为该程序集创建AssemblyCatalog并将其添加到AggregateCatalog。

我不确定你能用什么逻辑来检测具有不同名称的两个DLL是“相同”的程序集。