0

我在 Windows Azure 应用程序中使用 MEF,其中所有程序集插件都存储在 blob 存储中。在 blob 存储中不仅存储插件,还存储插件引用的所有程序集。

加载插件的代码如下:

foreach (var pluginBytes in _pluginProvider.GetPlugins())
{
    var pluginAssembly = AppDomain.CurrentDomain.Load(pluginBytes);
    var assemblyCatalog = new AssemblyCatalog(pluginAssembly);
    catalog.Catalogs.Add(assemblyCatalog);
}

不幸的是,当在 CompositionContainer 上调用 ComposeParts 方法时,引用第三方程序集的插件将导致 ReflectionTypeLoadException。

由于云解决方案,我无法使用 DirectoryCatalog。我该如何解决这个棘手的问题?

4

1 回答 1

1

如果您在另一个 blob 中有第三方程序集,则可以订阅应用程序的域AssemblyResolve事件并使用该arg.Name值从 blob 中找到第三方程序集。然后以与加载插件相同的方式加载它并返回加载程序集的引用。

于 2013-01-16T16:08:00.923 回答