Загрузка сторонней сборки, на которую ссылаются только плагины с AssemblyCatalog

Я использую MEF в приложении Windows Azure, где все подключаемые модули сборки хранятся в хранилище BLOB-объектов. В хранилище BLOB-объектов хранятся не только подключаемые модули, но и все сборки, на которые они ссылаются.

Код, который загружает плагины, выглядит следующим образом:

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

К сожалению, плагины, которые ссылаются на сборку третьей части, вызовут исключение ReflectionTypeLoadException при вызове метода ComposeParts в CompositionContainer.

Из-за облачного решения я не могу использовать DirectoryCatalog. Как я могу решить эту острую проблему?


person Antonio    schedule 15.01.2013    source источник


Ответы (1)


Если у вас есть сторонняя сборка в другом большом двоичном объекте, вы можете подписаться на домен вашего приложения AssemblyResolve и используйте значение arg.Name, чтобы найти стороннюю сборку в большом двоичном объекте. Затем загрузите его так же, как вы загружаете плагины, и верните ссылку на загруженную сборку.

person Panos Rontogiannis    schedule 16.01.2013