私は以下のエラーが発生し続けており、それを把握することができませんでした。誰かが助けることができるかどうか疑問に思っています。PRISM + Unity - モジュールの動的セットの読み込みの問題
エラー: は、モジュールMyExternalAssembly.MyNamespace.MyModuleのためのタイプのロードに失敗しました。
MEFをSilverlightアプリケーションで使用しているときにこのエラーが発生した場合は、MefExtensionsアセンブリへの参照のCopyLocalプロパティがメインアプリケーション/シェルでtrueに設定されていることを確認してください。
エラーだった:モジュールタイプMyExternalAssembly.MyNamespace.MyModuleを取得できません、MyExternalAssembly.MyNamespace、バージョン= 1.0.0.0、文化=中立、な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
});
}
}
}
基本的には、この「プラグイン」辞書を維持管理する方法が必要であり、Modularizatイオンを適切にwprkする。そしてアイデア?
ありがとうございます!
ブートストラップはUnityBootstraperから継承されています。ロード中のモジュールを読み込み画面に表示する必要があるため、私は手動でIModuleを探しています。コントロール全体の側面は、モジュールをAvalon Dock(DockableContent)にロードする必要があるためです。モジュールをラップしてDockableContentベースで手動でロードするだけです。 最後に、もう少し研究をする必要がありますが、学習して物事を進めようとしています。私はあなたが間違っていると思うところに何か提案をします。 – Dave
また、「MEFタイプ」を決定するためにエラーを参照している場合、「If」ではなく「MEFを使用しているときにこのエラーが発生した場合」と表示されます。私はPrism/Unity/MEFマスターからは遠いですが、おそらくあなたはどのタイプがMEFであるかを教えてくれるでしょうか? – Dave
ModuleCatalogはMEFタイプなので、私は混乱しています。 UnityをMEFで使用している理由は何ですか? –