我有一个通过 Mef 加载某些(可扩展)功能的应用程序。因为这些模块(可能)使用 3rd 方控件(Telerik)我想最小化用户感知的加载时间(在使用上述控件打开表单时),我想预加载这些 Mef 模块引用的程序集。
我正在做的是使用 Assembly.GetReferencedAssemblies(..) 方法来获取每个 Mef 模块引用的程序集的名称并尝试使用 Assembly.Load(..) 它们。
由于模块位于文件系统上的“某处”(通常不同于 ExecutingAssembly 的路径),因此对于不在 Gac 中的这些 Mef 模块的引用,加载失败。
有什么办法可以修改我的 AppDomain.CurrentDomain 的程序集加载路径?我知道 AppDomain.AssemblyLoad 事件,但是使用它有点麻烦,因为每个模块可能驻留在不同的目录中。