以下のエラーが発生し続けますが、理解できませんでした。誰か助けてくれないかしら。
エラー: モジュールMyExternalAssembly.MyNamespace.MyModuleのタイプを読み込めませんでした。
SilverlightアプリケーションでMEFを使用しているときにこのエラーが発生した場合は、MefExtensionsアセンブリへの参照のCopyLocalプロパティがメインアプリケーション/シェルでtrueに設定され、他のすべてのアセンブリでfalseに設定されていることを確認してください。
エラーは次のとおりです。ロードされたアセンブリからモジュールタイプMyExternalAssembly.MyNamespace.MyModule、MyExternalAssembly.MyNamespace、Version = 1.0.0.0、Culture = neutral、PublicKeyToken=nullを取得できません。より完全修飾されたタイプ名を指定する必要がある場合があります。
コード:
ロード画面(モジュールをロードし、さまざまな用途のアセンブリ参照を保存します)
string[] dynamicLibraries = Directory.GetFiles(pluginDirectory, "*.dll", SearchOption.AllDirectories);
// Parse through the DLL's and look for types that implement "IModule".
foreach (string file in dynamicLibraries)
{
// Get the plugin assembly information.
Assembly plugin = Assembly.LoadFile(file);
// Get all types that are exported for plugins.
IEnumerable<Type> modules = plugin.GetTypes()
.Where(t => typeof(IModule).IsAssignableFrom(t));
if (modules.Count() > 0)
{
ApplicationState.Instance.Plugins.Add(plugin, modules);
}
}
これがConfigureModuleCatelogメソッドです
protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog();
ModuleCatalog catalog = (ModuleCatalog)this.ModuleCatalog;
foreach (var assembly in ApplicationState.Instance.Plugins)
{
foreach (var type in assembly.Value)
{
this.ModuleCatalog.AddModule(new ModuleInfo
{
ModuleName = type.FullName,
ModuleType = type.AssemblyQualifiedName,
Ref = new Uri(assembly.Key.Location, UriKind.RelativeOrAbsolute).AbsoluteUri,
InitializationMode = InitializationMode.WhenAvailable
});
}
}
}
基本的に、この「プラグイン」辞書を維持/使用し、Modularizationを適切にwprkする方法が必要です。そしてアイデア?
ありがとう!