0

すべてのアセンブリ プラグインが BLOB ストレージ内に格納されている Windows Azure アプリケーションで MEF を使用しています。BLOB ストレージには、プラグインだけでなく、プラグインによって参照されるすべてのアセンブリも格納されます。

プラグインをロードするコードは次のとおりです。

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

残念ながら、サード パーツ アセンブリを参照するプラグインは、ComposeParts メソッドが CompositionContainer で呼び出されると、ReflectionTypeLoadException を引き起こします。

クラウド ソリューションのため、DirectoryCatalog を使用できません。この厄介な問題をどのように解決できますか?

4

1 に答える 1

1

別のBLOBにサードパーティのアセンブリがある場合は、アプリケーションのドメインAssemblyResolveイベントをサブスクライブし、そのarg.Name値を使用してBLOBからサードパーティのアセンブリを見つけることができます。次に、プラグインをロードするのと同じ方法でロードし、ロードされたアセンブリの参照を返します。

于 2013-01-16T16:08:00.923 に答える